是否有Wireshark的API,开发与之交互的程序/插件/增强它?

时间:2010-02-04 10:43:04

标签: c++ python api wireshark packet-sniffers

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

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

7 个答案:

答案 0 :(得分:6)

我使用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)`
祝你好运!

答案 1 :(得分:2)

如果您希望利用Wireshark的协议分析器和数据处理功能,

tshark为Wireshark的大部分功能提供了一个CLI。

如果你想深入研究Wireshark的source code,它有几个可能有用的C库,特别是窃听器和epan。它的使用示例可以在tshark source中找到。但是,你必须建立相当多的脚手架才能使用这些库。

如果您希望开发插件,this page可能会为您提供一些答案。

答案 2 :(得分:2)

答案 3 :(得分:2)

c ++很难找到一个..但这里是Python支持的wireshark文档..! http://wiki.wireshark.org/Python

答案 4 :(得分:1)

我无法在developer's guide中找到任何可能的信息。所以这似乎表明“不”。

答案 5 :(得分:0)

由于至少one使商业产品与wireshark有些融合,因此必须有可能。根据维基百科,Wireshark使用libpcap,它似乎是立即整合点。快速谷歌搜索显示有几个options

Scapy实际上看起来很有趣,虽然它并没有真正做任何与wireshark交互的事情,但你可以用它来捕获数据包。

答案 6 :(得分:0)

wireshark使用libpcap,这个库抽象出数据包嗅探中的平台差异提供format for data files。这就是我如何将数据包注入wireshark。