如何在没有wirehark的情况下在自己的应用中使用wireshark解剖器?

时间:2016-06-06 13:52:34

标签: wireshark libpcap

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

2 个答案:

答案 0 :(得分:1)

首先,请参阅this answer,了解使用epan并链接到libwireshark的危险。您基本上只是单独尝试使其工作,它并不意味着以这种方式工作,新版本可能会破坏您的代码。由于该API不会发生变化,因此始终建议write a dissector instead

如果那不吓到你,请继续阅读。

我没有执行过,但我对wireshark代码树或多或少熟悉。我相信您所追求的是#include <epan/packet.h>#include <epan/frame_data.h>#include <epan/tvbuff.h>(Testy虚拟缓冲区),这些头文件与wireshark一起分发,因为需要写插件解剖器。

由于一个协议通常包含另一个协议,因为有效负载wireshark的处理方式是tvbuff_t。一个解剖器返回tvbuff_t,然后由另一个解剖器使用。您需要执行数据包的整个解码(例如,从以太网开始),因为wireshark不适合您。

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

这是一种非常黑客的做事方式,因此我再次发出警告:如果你能够在wireshark内编写解剖器并使用它,那就去做吧。

答案 1 :(得分:1)

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

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

为了让它起作用,必须做一些修改,但比从头开始要容易得多。