【问题标题】:Python Packet Sniffing / Packet Capture - pcapy not capturing packetsPython数据包嗅探/数据包捕获-pcapy不捕获数据包
【发布时间】:2014-03-29 21:34:40
【问题描述】:

我的无线接口处于监控模式,我能够成功地嗅探网络数据包并使用 Wireshark 分析它们。我一直在尝试用pcapyimpacket 实现类似的东西。看起来pcapy 没有捕获与 Wireshark 相同的数据包。我目前在带有 2012 Macbook Pro 的 Mac OS X 10.9 上运行,但注意到使用 TP-LINK TL-WN722N 无线 USB 适配器在 Ubuntu 上的行为相同。

这是我编写的一个脚本示例,它显然不起作用。我没有收到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吗?

【问题讨论】:

  • 如果您使用 python 2.7,我会考虑使用 scapy 而不是 pcapy
  • 我正在考虑使用 scapy,虽然它解决了监控模式问题,但由于某种原因我无法捕获尽可能多的数据包。不知道你对此有什么想法?
  • 好吧,我用过很多次 scapy,从来没有在 Mac OS 上使用过。你能写下你使用 capture 的 sniff 命令吗?你说它没有捕获尽可能多的数据包是什么意思?
  • 我为 libpcap 编写了一个 Python/C 库,并广泛使用它来研究 wifi。也许它可能对你有用 - pypcap

标签: python wifi libpcap packet-capture sniffing


【解决方案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 和铜线以太网时遇到了同样的问题。上面的技巧已经为我解决了这个问题。

【讨论】:

    猜你喜欢
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多