我正在尝试构建一个扫描Beacon Frames的scapy程序。每个路由器都应该以X毫秒的间隔向空中发送信标帧,以便可能的主机知道路由器(AP)是否存活。
我什么都没得到,到目前为止我能够获得的唯一一种Dot11帧是Prob Request,很少有一些数据或控制帧。我在运行脚本之前将无线网卡设置为监控模式,它也支持它。我不是我可能做错了...这是代码:
from scapy.all import *
global list_prob
list_prob = []
def search_prob(packet1):
if (packet1.haslayer(Dot11)) and (packet1[Dot11].type == 0) and\
(packet1[Dot11].subtype == 8) : #type 4 == ProbRequest
if packet1[Dot11].addr2 not in list_prob:
if packet1[Dot11].info not in list_prob:
print('[>]AP',packet1[Dot11].addr2,'SSID',packet1[Dot11].info)
list_prob.append(packet1[Dot11].addr2)
list_prob.append(packet1[Dot11].info)
sniff(iface='wlan0mon',prn=search_prob)
我也尝试过使用Dot11Beacon而不是子类型8而且没有任何改变。我在Linux上用python3.5编程。 有任何想法吗 ?
答案 0 :(得分:0)
使用python不断更改网络接口通道的代码:
from threading import Thread
import subprocess,shlex,time
import threading
locky = threading.Lock()
def Change_Freq_channel(channel_c):
print('Channel:',str(channel_c))
command = 'iwconfig wlan1mon channel '+str(channel_c)
command = shlex.split(command)
subprocess.Popen(command,shell=False) # To prevent shell injection attacks !
while True:
for channel_c in range(1,15):
t = Thread(target=Change_Freq_channel,args=(channel_c,))
t.daemon = True
locky.acquire()
t.start()
time.sleep(0.1)
locky.release()