如果我想编写一个使用 Wireshark 功能的脚本,我会使用 tshark。我听说还有一个 libwireshark 可以在用 C 编写程序时使用,但是我一生都找不到any其文档!我尝试隔离wireshark源树中的库代码,但似乎代码组织得不是很好,并且这种隔离不存在(要么是这样,要么是我找不到它)。
我有两个问题:
- 我是否正确地认为 libwireshark 确实可以用于以编程方式获取我可以从wireshark/tshark 获得的任何功能?
- 您能给我指出有关该主题的任何文档/教程/示例吗?即使是几个简单的例子也能起到很大的作用。如果做不到这一点,你能给我解释一下如何在wireshark源代码树中找到我的方法吗?
No.
libwireshark 不适合在 Wireshark 本身之外使用,尝试这样做会让您离开靠你自己 http://ask.wireshark.org/questions/8606#8610试图找出问题所在。 libwireshark 实际上是 Wireshark 数据包分析部分的一部分(称为epan for Ethereal packet an分析仪),你可以看到在开发者指南中 http://www.wireshark.org/docs/wsdg_html_chunked/ChWorksOverview.html#ChWorksFigOverview不是 Wireshark 的全部。 libwireshark 实际上提供的是所有内置协议解析器的主接口、插件解析器的挂钩以及完整的数据包解析 API。它依赖于 Wireshark 的其余部分设置的机制,这些机制不是直接的数据包解析工具,而是使解析器能够完成其工作(例如分配释放内存块、处理压缩或加密数据等)。
改为编写一个解析器。
如果您的项目要以某种方式严格分析网络流量,您可能需要考虑为 Wireshark 编写一个解析器,而不是重新发明 Wireshark 可以为您提供的许多轮子。如果您需要做一些更复杂的事情,例如监视网络流量,然后启动其他任务或自己发送数据,那么您最好使用tshark
和 shell 脚本(请记住,您不应该让tshark
在任何情况下都运行极长的时间)。
如果你真的,really如果想要直接使用 libwireshark,您需要以某种方式解决其所有依赖项(最好将其设为实际的独立库),并提供它对 Wireshark(或 tshark)实际运行所做的假设。 libwireshark 的代码组织得很好,只是它由 Wireshark 源代码树下的整个 epan 目录组成,并根据 Wireshark 仍是 Ethereal 时建立的约定进行布局。每个函数的文档在公开可见时都在头文件中提供,并且在每种情况下都在源文件中提供更深入的文档。另请记住,自述文件.developer https://code.wireshark.org/review/gitweb?p=wireshark.git;a=blob_plain;f=doc/README.developer与您拥有的源代码版本一起分发是获得一些提示的好地方(如果您想执行此任务,您也可以阅读所有 README.* 文件)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)