[英]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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.