0

私が試した私のコードは次のとおりです。

from scapy.all import *

def PacketHandler(pkt) :

       if pkt.haslayer == 2 and pkt.subtype==0:

          if pkt.haslayer(IP) :

             ip=pkt.getlayer(IP)
             print ip.dst

          if pkt.haslayer(UDP):
               udp=pkt.getlayer(UDP)
               print udp.dport
          if pkt.haslayer(TCP) :
               tcp=pkt.getlayer(TCP)
               print tcp.port

sniff(iface="mon0", prn=PacketHandler) 

これを使用して、すべてのワイヤレス DATA パケットをキャプチャしたいのですが、マルチキャスト (IP/UDP) パケットしか取得できません。では、ワイヤレス ネットワークですべての DATA パケットを取得するにはどうすればよいでしょうか? このためにアクセス ポイントの暗号化を (一時的に) 無効にしたので、パケット単位でデータにアクセスできます。

4

1 に答える 1

6

DataフレームではManagementなくフレームのみを処理する場合はControl、次のようにします。

from scapy.all import *

def packet_handler(pkt) :
    # if packet has 802.11 layer, and type of packet is Data frame
    if pkt.haslayer(Dot11) and pkt.type == 2:
            # do your stuff here
            print(pkt.show())


sniff(iface="mon0", prn=packet_handler)

filterまた、関数のオプションを使用して、フレームsniffのみをフィルタリングして関数に移動することもできます。Datapacket_handler

from scapy.all import *

def packet_handler(pkt) :
    # if packet has 802.11 layer
    if pkt.haslayer(Dot11):
        # do your stuff here
        print(pkt.show())

sniff(iface="mon0", prn=packet_handler, filter="type Data")

ここは、フレームのtypeとの値の適切なリストです。subtype

于 2014-03-27T14:17:44.433 に答える