如果我想编写一个使用Wireshark功能的脚本,我会使用tshark。我听说还有一个libwireshark可以在用C编写程序时使用但是,对于我的生活,我找不到任何文档!我试图在wireshark源代码树中隔离库代码,但似乎代码组织得不是很好,并且不存在这样的隔离(或者我没有找到它)。
我有两个问题:
答案 0 :(得分:7)
libwireshark并不打算在Wireshark本身之外使用,尝试这样做会让你on your own试图弄清楚出了什么问题。 libwireshark实际上是Wireshark数据包分析部分的一部分( E pa cket a alyzer称为 epan ),您可以看到in the Developer's Guide并不是Wireshark的全部内容。 libwireshark实际提供的是所有内置协议解析器的主要接口,插件解析器的钩子以及完整的数据包解析API。它依赖于Wireshark其余部分设置的机器,用于不是直接数据包解析工具,但能使解剖器完成工作(例如,分配解除分配的内存块,处理压缩或加密的数据等)。
写一个解剖器
如果您的项目是以某种方式严格分析网络流量,您可能需要考虑为Wireshark编写解剖器,而不是重新发明Wireshark可以为您提供的许多轮子。如果你需要做一些更复杂的事情,比如监控网络流量,然后开始其他任务或自己发送数据,你可能最好不要使用tshark
和shell脚本(请记住你不应该' t让tshark
在任何情况下运行很长一段时间。)
如果你真的,真的想直接使用libwireshark,你需要以某种方式解决它的所有依赖关系(最好是通过使它成为一个真正的独立库)并提供它所做的假设关于Wireshark(或tshark)实际上正在运行。 libwireshark的代码组织得很好,它只是由Wireshark源代码树下的整个epan目录组成,并根据Wireshark仍然是Ethereal时建立的惯例进行布局。每个函数的文档在公开可见时在头文件中提供,在每种情况下都在源文件中更深入。另外请记住,README.developer与您拥有的源代码版本一起分发是获得一些提示的好地方(如果您想要执行此操作,您也可以阅读所有README。*文件。任务)。
答案 1 :(得分:3)
我可以在Wireshark之外使用libwireshark,我知道netexpect就是这样做的。您可以尝试查看该项目的网站以获取信息,或者您可以尝试联系netexpect的作者Eloy Paris,获取进一步的帮助/指示。
答案 2 :(得分:2)
是的! 您可以使用libwireshark获得该功能。 我写了完整的代码来做同样的事情。 它效果很好。
答案 3 :(得分:1)
即使我已经为wireshark功能编写了脚本,作为我自动化项目的一部分。
最好这样做是使用如下的wireshark插件:
请注意,附加组件仅适用于Linux,而capinfos是用shell脚本编写的。因此,您可以使用相同的shell脚本并创建新脚本以获得更好的功能。
即使我最初遇到很多问题,因为没有适当的文档。但是一旦你开始就顺利进行。