我对Scapy还是很陌生,我正在尝试制作一个RTS数据包并将其发送到AP,以获得CTS响应。但是,我很难确定正确的方法(成为网络和802.11数据包的初学者也无济于事)。
这是我现在拥有的代码:
bytes = struct.pack("<H", 123) # 123 microseconds
timeval = struct.unpack(">H", bytes)[0]
pkt = RadioTap()/Dot11(addr1 = target_addr, addr2 = my_addr, type = 1, subtype = 11, ID = timeval)
我知道type
必须等于1,因为它是一个控制包,而subtype
必须等于11,因为它是一个RTS包。但是,当我用sr()
或srp()
或sr1()
发送数据包时,我要么得不到响应(Scapy等待响应,但什么也没有回来,所以它继续等待)或得到我发送的确切消息。
This question提到在末尾添加一个Dot11Elt()
层,但是对于我来说并没有任何改变。
如果我使用Wireshark打开响应元组的第0个元素,则会得到:
我已经隐藏了MAC地址,但它们与我放入发送到AP的数据包(target_addr
和my_addr
)中的MAC地址相同。我希望以my_addr
作为“目的地地址”的CTS。
我在做什么错了?