c++ - 是否有用于 Wireshark 的 API,用于开发与其交互/增强的程序/插件?

标签 c++ python api wireshark packet-sniffers

谷歌搜索没有给我很好的结果。是否有任何类型的 Wireshark API 可以从主要源代码中抽象出来,以便我们可以开发与其交互并处理它提供的数据的程序?

编辑:我很欣赏有关接收数据包的不同方式的建议,但我想在 Wireshark 中实现数据包注入(inject)。嗅探将是我项目的重要组成部分,但我不确定建议的解决方案是否允许数据包注入(inject)。

最佳答案

我使用 pypcap读取数据包和dpkt解析。

例如,使用 dpkt 从保存的 pcap 中读取数据包:

import socket
import dpkt
import sys
pcapReader = dpkt.pcap.Reader(file(sys.argv[1], "rb"))
for ts, data in pcapReader:
    ether = dpkt.ethernet.Ethernet(data)
    if ether.type != dpkt.ethernet.ETH_TYPE_IP: raise
    ip = ether.data
    src = socket.inet_ntoa(ip.src)
    dst = socket.inet_ntoa(ip.dst)
    print "%s -> %s" % (src, dst)

使用 pypcap 抓取帧:

    import pcap
    pc = pcap.pcapObject()
    dev = sys.argv[1]
    pc.open_live(dev, 1600, 0, 100)
    pc.setfilter("udp port 53", 0, 0)
    while 1:
        pc.dispatch(1, p.pcap_dispatch)

当然,两者可以一起使用:(摘自pypcap的主页)

>>> import dpkt, pcap
>>> pc = pcap.pcap()
>>> pc.setfilter('icmp')
>>> for ts, pkt in pc:
...     print `dpkt.ethernet.Ethernet(pkt)`

祝你好运!

关于c++ - 是否有用于 Wireshark 的 API,用于开发与其交互/增强的程序/插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2198972/

相关文章:

python - 类型错误:需要一个可读的缓冲区对象

c++ - 如何在 g++ 中打印 __int128?

C++ 映射变量地址?

python - 如何制作一个接受 numpy 数组、可迭代对象或标量的 numpy 函数?

python - 写入 NumPy 内存映射仍会加载到 RAM 内存中

javascript - 如何使用 Javascript 从 iTunes API 获取特定值

c++ - nullptr = 节点分配不正确

c++ - OpenCV cvCaptureFromCAM 使用 PS3 Eye 返回空值

php - 如何使用 PHP 从 Google 获取完整的联系信息?

laravel - 统一后端和前端日期、时间的最佳方法是什么?