我的无线接口处于监控模式,我能够成功嗅探网络数据包并使用Wireshark进行分析。我一直在尝试使用pcapy
和impacket
来实现类似的功能。看起来好像pcapy
没有捕获与Wireshark相同的数据包。我目前在Mac OS X 10.9 w / 2012 Macbook Pro上运行,但注意到Ubuntu上使用TP-LINK TL-WN722N无线USB适配器的行为相同。
这是我编写的一个明显无效的脚本示例。即使我在Wireshark中看到它们,我也没有使用pcapy
获取探测请求。
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
吗?
答案 0 :(得分:1)
如果您捕获了一些数据包而不是您在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和铜以太网存在同样的问题。上面的技巧为我解决了这个问题。