【问题标题】:Is there an API for Wireshark, to develop programs/plugins that interact with it/enhance it? [closed]是否有用于 Wireshark 的 API,用于开发与其交互/增强的程序/插件? [关闭]
【发布时间】:2011-01-13 00:39:25
【问题描述】:

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

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

【问题讨论】:

  • 它提供的数据是什么意思?这是格式化输出吗?还是收集网络数据的能力?
  • 收集网络数据的能力并不是wireshark独有的。但是,wireshark 的接口使它成为有用的数据,我希望为它开发一个插件。对所有源代码进行分类似乎是一项艰巨的任务

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    http://wiki.wireshark.org/Lua

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        我使用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)`
        

        祝你好运!

        【讨论】:

          【解决方案5】:

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

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

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

          【讨论】:

            【解决方案6】:

            由于至少有one 可以制造与wireshark 有一定程度集成的商业产品,因此它必须是可能的。似乎直接的集成点是它根据维基百科产生的数据,Wireshark 使用libpcap。快速谷歌搜索显示有几个options

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

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-06-05
                • 1970-01-01
                • 2022-09-23
                • 1970-01-01
                • 1970-01-01
                • 2010-11-08
                相关资源
                最近更新 更多