在Scapy中复制Wireshark捕获802.11 QoS数据包

时间:2017-10-27 03:58:06

标签: wifi wireshark scapy 802.11

我使用802.11 QoS捕获了一些WLAN Wireshark数据包,我正在尝试使用Scapy

复制相同的数据包

以下是捕获数据包的屏幕截图。如果有更多屏幕截图有帮助,请与我们联系。

Wireshark capture of 802.11 QoS Packet

以下是我用于生成包含4个字节虚拟数据的数据包的scapy命令。

dot11=Dot11(type=2, subtype=8, addr1='11:11:11:11:11:11', addr2='22:22:22:22:22:22', addr3='33:33:33:33:33:33')
frame = RadioTap()/dot11/Dot11QoS()/"abcd"

如果我使用Wireshark使用wireshark(frame)命令查看数据包,它会将数据包标识为802.11 QoS数据包。但在Data字段上方,它会显示Logical Link Control字段。

另一方面,如果我使用sendp(frame, iface='wlan0')在接口上发送数据包,wireshark会将数据包捕获为LLC数据包。我的问题是为什么在两种不同情况下相同的数据包显示不同?

我的想法是复制完全相同的数据包,将其发送到IoT设备并获得响应。是否有可能为此伪造数据包?如果可能,使用scapy

生成相同的数据包我错过了什么?

1 个答案:

答案 0 :(得分:0)

要复制数据包,最简单的方法是直接在Scapy上嗅探它们。 sniff 函数就是这样:它有两个主要参数, filter prn

filter 根据BPF syntax指定要捕获的数据包。

prn 指定要应用于已过滤数据包的函数。

例如:

def f(pkt):
    pkt.show()
filt="src host 1.2.3.4"
sniff(prn=f,filter=filt)

此代码将捕获来自具有IP地址 1.2.3.4 的计算机的所有数据包,并显示其字段。

但如果您绝对想通过Wireshark进行嗅探,可以检查是否复制了所有字段,这要归功于显示层构造函数的所有字段名称的scapy ls 函数:

>>> ls(ARP)
sport
dport
len
chksum

祝你在尝试做任何事情都好运