2017-02-24 20 views
1

ビーコンフレームをスキャンするscapyプログラムをビルドしようとしています。可能なホストがルータ(AP)が生存していることをすべてのルータがXミリ秒の間隔でビーコンフレームを空中に送信する必要があります。Python 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でプログラミングしています。 アイデア常にのpythonを使用して、ネットワーク・インタフェースのチャネルを変更する

+1

これは私のために動作します。バックグラウンドでチャンネルを切り替えてみてください。 – Yoel

+0

それは正常に働いた!ありがとうございますm8 scapyチャンネルを変更する機能がありません私はサブプロセスlibを使用してそれを行うためにPythonスクリプトを書いた – user7519508

+0

クール。同じ問題で苦労している将来の読者に役立つかもしれないので、答えとして書くことをお勧めします。 – Yoel

答えて

0

コード:

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