簡體   English   中英

如何從Scapy Dot11數據包中解碼數據

[英]How to decode data from scapy Dot11 Packet

我正在編寫一個捕獲Dot11數據包以進行網絡安全測試的程序,在這些捕獲的數據包中,我獲取數據的方式如下所示:

<RadioTap  version=0 pad=0 len=36    present=TSFT+Flags+Rate+Channel+dBm_AntSignal+b14+b29+Ext notdecoded=' \x08\x00\x00\x00\x00\x00\x00\xd5~\xbb*\x00\x00\x00\x00\x10\x02\x99\t\xa0\x00\xbd\x00\x00\x00\xbd\x00' |<Dot11  subtype=11L type=Management proto=0L FCfield=retry ID=14849 addr1=48:ee:0c:f4:b7:ea addr2=00:26:82:8e:9a:d4 addr3=48:ee:0c:f4:b7:ea SC=46176 addr4=None |<Dot11Auth  algo=open seqnum=1 status=success |<Dot11Elt  ID=220 len=46 info='7\x94' |>>>>

我想更好地理解以下內容:

\x08\x00\x00\x00\x00\x00\x00\xd5~\xbb*\x00\x00\x00\x00\x10\x02\x99\t\xa0\x00\xbd\x00\x00\x00\xbd\x00

我在許多不同的捕獲中都得到了這些類型的數據包,我希望能夠對其進行“解碼”以讀取數據。 有沒有辦法做到這一點,也許是代碼示例?

我通過Scapy解碼802.11幀。

首先,通過終端或WireShark捕獲802.11幀並將其另存為pcap文件。
然后,使用scapy解析pcap文件:

sniff(offline="/tmp/capture_chan11.pcap", prn=parse)

這里的“ parse”是一個自定義函數,它處理pcap文件中的每個幀,我的是:

def parse(frame):
    if frame.haslayer(Dot11):
        print("ToDS:", frame.FCfield & 0b1 != 0)
        print("MF:", frame.FCfield & 0b10 != 0)
        print("WEP:", frame.FCfield & 0b01000000 != 0)
        print("src MAC:", frame.addr2)
        print("dest MAC:", frame.addr1)
        print("BSSID:", frame.addr3)
        print("Duration ID:", frame.ID)
        print("Sequence Control:", frame.SC)
        print(feature(frame))
        print("\n")

查看有關Dot11幀歸因的更多信息: SCAPY PYTHON-獲取802.11 DS狀態

字段名稱讓您猜測,它包含無法解碼的數據。 如果您真的想對其進行解碼,則必須編寫(或貢獻!)自己的解剖器,或使用Wireshark(或Tshark,相同的解剖器,命令行界面)為您解析數據包。

對於第二個選項,可以將Scapy中的wirehark wireshark(pkt)用於Wireshark,將tcpdump(pkt, prog="tshark")用於Tshark。

更新:自最新版本的Scapy以來,這些字段現在已正確解碼。

看看github版本: https : //github.com/secdev/scapy

或在這里下載https://github.com/secdev/scapy/archive/master.zip

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM