我正在尝试使用SCAPY创建一个嗅探程序来演示802.11网络中的802.11设备关联和角色。
SCAPY具有识别Beacon帧,探测请求和探测响应的简单功能。我正在尝试深入挖掘并根据DS状态进行自己的评估,以显示所有其他流量关联[s]。
我无法确定如何获取DS状态的值(00,01,10,11)。如果确定,那么我可以相应地处理帧,以获得SOURCE,BSSID,RECEIVER,TRANSMITTER和DESTINATION以适合我的代码。
我发现我应该能够通过tshark(wlan.fc.ds)获取DS状态,因此,如果需要,我可以将帧传递给tshark派生进程;但我首先想尝试使用SCAPY来完成所有操作,因为我刚刚开始使用SCYY和PYTHON进行编码,而且我不想在第一个障碍时跳转到其他MAC帧分析程序。
除了创建我的程序以演示设备关联外;我也将它作为一种工具,让我了解有关802.11,PYTHON和SCAPY的更多信息,因此我希望深入研究每一帧,将它们分组为DS状态。 谢谢, 鲍勃
答案 0 :(得分:4)
Scapy's source code显示 To DS 和 From DS 值位于FCField
(代表帧控制 > Field):
class Dot11(Packet):
name = "802.11"
fields_desc = [
BitField("subtype", 0, 4),
BitEnumField("type", 0, 2, ["Management", "Control", "Data", "Reserved"]),
BitField("proto", 0, 2),
FlagsField("FCfield", 0, 8, ["to-DS", "from-DS", "MF", "retry", "pw-mgt", "MD", "wep", "order"]),
ShortField("ID",0),
MACField("addr1", ETHER_ANY),
Dot11Addr2MACField("addr2", ETHER_ANY),
Dot11Addr3MACField("addr3", ETHER_ANY),
Dot11SCField("SC", 0),
Dot11Addr4MACField("addr4", ETHER_ANY)
]
因此,一旦掌握了Dot11
数据包,就可以通过以下代码检查其 DS 状态:
DS = pkt.FCfield & 0x3
to_DS = DS & 0x1 != 0
from_DS = DS & 0x2 != 0