我的无线接口处于监控模式,我能够成功地嗅探网络数据包并使用Wireshark分析它们。我一直在尝试用pcapy和impacket实现类似的东西。看起来pcapy似乎没有捕获与Wireshark相同的数据包。我目前在MacOSX10.9和2012 Macbook Pro上运行,但注意到Ubuntu上的TP-LINK TL-WN722N无线usb适配器也有相同的行为。
这是我写的一个脚本的例子,它显然不能工作。我在pcapy上没有收到探测请求,即使我在Wireshark中看到了它们。
import pcapy
import impacket
DECODER = impacket.ImpactDecoder.RadioTapDecoder()
def packet_handler(header, data):
radio_packet = DECODER.decode(data)
dot11 = radio_packet.child()
if dot11.get_subtype() == impacket.dot11.Dot11Types.DOT11_SUBTYPE_MANAGEMENT_PROBE_REQUEST:
management_base = dot11.child()
if management_base.__class__ == impacket.dot11.Dot11ManagementFrame:
print management_base.get_source_address(), management_base.get_destination_address()
p = pcapy.open_live("your_interface_here", 2000, 0, 1000)
p.loop(-1, packet_handler)在本例中,en1处于监控模式。使用从Wireshark生成的pcap文件可以很好地工作,只需将open_live更改为open_offline
p = open_offline('path_to_file')我没有正确设置pcapy吗?
发布于 2014-04-01 00:30:19
如果您捕获了Wireshark中看到的某些数据包,但不是所有数据包,请尝试启用混杂模式(应捕获所有数据包,即使是校验和错误的数据包):
1)为pcapy设置混杂模式
promiscuous = True
p = pcapy.open_live("your_interface_here", 2000, promiscuous, 1000)2)为您的接口设置混杂模式。不知道在Mac上怎么做,在Linux上是:
os.system('sudo ifconfig eth0 promisc')然后关闭并关闭您的接口。
pcapy和铜质以太网也有同样的问题。上面的技巧为我解决了这个问题。
https://stackoverflow.com/questions/22737192
复制相似问题