2017-02-24 48 views
1

我想建立一个scapy程序,扫描信标帧。每个路由器应该以X毫秒的间隔向空中发送信标帧,以便可能的主机知道路由器(AP)是活着的。蟒蛇scapy信标帧

我什么也没得到,到目前为止我所能得到的唯一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进行编程。 任何想法?

+1

这对我的作品。尝试在后台切换频道。 – Yoel

+0

它工作正常!谢谢m8 scapy没有改变频道的功能我写了一个python脚本来做它使用子进程库 – user7519508

+0

很酷。我建议你把它写成答案,因为它可能有益于同样问题的未来读者。 – Yoel

回答

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()