【发布时间】:2016-06-06 13:52:33
【问题描述】:
我正在使用 libpcap 并希望能够分析数据包,但根本不需要使用wireshark。但是,我想使用wireshark 解剖器。有没有人这样做并且可以给我解释所需的步骤?
【问题讨论】:
-
Wireshark 已被 nexmon 项目移植到 android:www.nexmon.org
我正在使用 libpcap 并希望能够分析数据包,但根本不需要使用wireshark。但是,我想使用wireshark 解剖器。有没有人这样做并且可以给我解释所需的步骤?
【问题讨论】:
首先请参阅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_t 和find_dissector() 的信息。
这是一种非常 hacky 的做事方式,因此我再次警告:如果你可以编写一个解析器并在 wireshark 中使用它,那就去做吧。
【讨论】:
【讨论】:
android.os.Parcel 的示例。但是在hardware handlers 中没有以太网处理程序(我希望如此),而LANScanner 有一个硬编码的--interface=wlan0。正如我所说,我从未编写过 Android 代码,也许 wlan0 可以用作以太网?