【问题标题】:How to use wireshark dissectors in own application without wireshark at all?如何在没有wireshark的情况下在自己的应用程序中使用wireshark解剖器?
【发布时间】:2016-06-06 13:52:33
【问题描述】:

我正在使用 libpcap 并希望能够分析数据包,但根本不需要使用wireshark。但是,我想使用wireshark 解剖器。有没有人这样做并且可以给我解释所需的步骤?

【问题讨论】:

  • Wireshark 已被 nexmon 项目移植到 android:www.nexmon.org

标签: wireshark libpcap


【解决方案1】:

首先请参阅this answer,了解使用epan 和链接到libwireshark 的危险。你基本上是一个人试图让它工作,它并不意味着以这种方式工作,新版本可能会破坏你的代码。始终建议write a dissector instead,因为该 API 不会更改。


如果没有吓到你,请往前阅读。

我没有执行它,但我或多或少熟悉wireshark 代码树。我相信你所追求的是#include <epan/packet.h>#include <epan/frame_data.h>#include <epan/tvbuff.h>(Testy Virtual Buffer),这些头文件与wireshark一起分发,因为需要编写插件解析器。

由于一个协议通常包含另一个协议作为有效载荷wireshark 的处理方式是tvbuff_t。一个解析器返回一个tvbuff_t,然后可以被另一个解析器使用。您需要执行数据包的整个解码(例如,从以太网开始),因为 wireshark 无法为您完成。

epan directory 中的代码记录在doc directory 中,特别是section 1.7 of doc/README.dissectors (Calling Other Dissectors) 包含有关如何使用tvbuff_tfind_dissector() 的信息。

这是一种非常 hacky 的做事方式,因此我再次警告:如果你可以编写一个解析器并在 wireshark 中使用它,那就去做吧。

【讨论】:

    【解决方案2】:

    我在 Github 上找到了以下项目:

    https://github.com/gnychis/android-wmon

    必须进行一些修改才能使其正常工作,但比从头开始要容易得多。

    【讨论】:

    • 这是一个有趣的项目!我假设您首先想要一个专注于 android 的 API。我刚刚快速浏览了代码,我相信它不支持以太网解码(如果您使用智能手机,这根本不是问题,但如果您使用网络服务器,则可能会出现问题)。我只是添加评论,以防有人在搜索类似解决方案时发现此问题。
    • 你能解释一下为什么它不支持以太网解码吗?缺少哪些部分?
    • 首先,我需要承认我从未编写过 android 代码,因此我可能大错特错,因为我不知道 android.os.Parcel 的示例。但是在hardware handlers 中没有以太网处理程序(我希望如此),而LANScanner 有一个硬编码的--interface=wlan0。正如我所说,我从未编写过 Android 代码,也许 wlan0 可以用作以太网?
    • 我认为整个项目只适用于上述硬件,外接 wlan usb 卡支持监控模式。但是,我只在android上使用C代码,并且只在wireshark_helper.c的帮助下使用解剖部分。这很好用。
    猜你喜欢
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多