SCAPY PYTHON - 获取 802.11 DS 状态
SCAPY PYTHON - Get 802.11 DS Status
我正在尝试使用 SCAPY 创建一个嗅探程序来演示 802.11 设备关联 [s] 和 802.11 网络中的角色。
SCAPY 具有简单的功能来识别 Beacon 帧、探测请求和探测响应。我正在尝试更深入地挖掘并根据 DS 状态进行我自己的评估以显示所有其他流量关联[s]。
我不能做的决定如何获取DS状态的值(00,01,10,11)。如果确定,那么我可以相应地处理帧以获得适合我的代码的 SOURCE、BSSID、RECEIVER、TRANSMITTER 和 DESTINATION。
我发现我应该能够使用 tshark (wlan.fc.ds) 获取 DS 状态,因此,如果需要,我可以将框架传递给 tshark 派生进程;但我首先想尝试使用 SCAPY 来完成这一切,因为我才刚刚开始使用 SCAPY 和 PYTHON 进行编码,我不想跳转到其他 MAC 框架分析程序第一关.
除了创建我的程序来演示设备关联;我也将它用作一种工具,让我了解更多有关 802.11、PYTHON 和 SCAPY 的信息,因此我希望深入研究每个帧,将它们分组到 DS 状态。
谢谢,
鲍勃
Scapy's source code 显示 To DS 和 From DS 值位于 FCField
内(代表框架控制字段):
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
我正在尝试使用 SCAPY 创建一个嗅探程序来演示 802.11 设备关联 [s] 和 802.11 网络中的角色。
SCAPY 具有简单的功能来识别 Beacon 帧、探测请求和探测响应。我正在尝试更深入地挖掘并根据 DS 状态进行我自己的评估以显示所有其他流量关联[s]。
我不能做的决定如何获取DS状态的值(00,01,10,11)。如果确定,那么我可以相应地处理帧以获得适合我的代码的 SOURCE、BSSID、RECEIVER、TRANSMITTER 和 DESTINATION。
我发现我应该能够使用 tshark (wlan.fc.ds) 获取 DS 状态,因此,如果需要,我可以将框架传递给 tshark 派生进程;但我首先想尝试使用 SCAPY 来完成这一切,因为我才刚刚开始使用 SCAPY 和 PYTHON 进行编码,我不想跳转到其他 MAC 框架分析程序第一关.
除了创建我的程序来演示设备关联;我也将它用作一种工具,让我了解更多有关 802.11、PYTHON 和 SCAPY 的信息,因此我希望深入研究每个帧,将它们分组到 DS 状态。 谢谢, 鲍勃
Scapy's source code 显示 To DS 和 From DS 值位于 FCField
内(代表框架控制字段):
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