17

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

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

4

7 回答 7

5

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)`

祝你好运!

于 2010-02-04T12:42:39.883 回答
2

c++ well could not find one.. but here is the wireshark documentation of Python support..! http://wiki.wireshark.org/Python

于 2011-10-16T12:39:03.527 回答
2

尝试他们在较新版本的wireshark中获得的lua脚本。您可以编写自定义解析器(用于您自己的协议等)。

http://wiki.wireshark.org/Lua

于 2010-07-23T22:05:54.323 回答
2

如果您希望利用 Wireshark 的协议分析器和数据操作功能,tshark为 Wireshark 的大部分功能提供 CLI。

如果您想深入研究 Wireshark 的源代码,它有几个可能有用的 C 库,尤其是 Wiretap 和 epan。可以在tshark 源代码中找到其使用示例。但是,您必须搭建相当多的脚手架才能使用这些库。

如果您正在寻找开发插件,此页面可能会为您提供一些答案。

于 2010-02-04T12:16:53.940 回答
1

我无法在开发人员指南中找到任何表明可能的信息。所以这似乎表明“不”。

于 2010-02-04T10:48:54.420 回答
0

由于至少有一种商业产品可以与 wireshark 集成,所以它必须是可能的。似乎直接的集成点是它根据维基百科产生的数据,Wireshark使用libpcap。快速谷歌搜索显示有几个选项

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

于 2010-02-04T12:03:57.217 回答
0

wireshark 使用 libpcap,这个库抽象了数据包嗅探中的平台差异,提供了数据文件的格式。这就是我将数据包注入wireshark的方式。

于 2010-02-05T17:33:41.160 回答