如果我想编写一个使用Wireshark功能的脚本,我会使用tshark.我听说还有一个libwireshark可以在用C编写程序时使用但是,对于我的生活,我找不到任何文档!我尝试在wireshark源代码树中隔离库代码,但似乎代码组织不是很好,并且不存在这样的隔离(要么就是这样,要么我找不到它).
我有两个问题:
libwireshark并不打算在Wireshark之外使用,尝试这样做会让你自己试图弄清楚出了什么问题.libwireshark的Wireshark数据包分析部分(称为实际上一部分EPAN为Ë thereal PA cket 的 alyzer),你可以看到该开发人员指南是不是所有的Wireshark.libwireshark实际提供的是所有内置协议解析器的主要接口,插件解析器的钩子以及完整的数据包解析API.它依赖于Wireshark其余部分设置的机器,用于不是直接包解析工具的东西,但是使解剖器能够完成工作(例如,分配解除分配的内存块,处理压缩或加密的数据等).
写一个解剖器代替.
如果您的项目是以某种方式严格分析网络流量,您可能需要考虑为Wireshark编写解剖器,而不是重新发明Wireshark可以为您提供的许多轮子.如果你需要做一些更复杂的事情,比如监控网络流量,然后开始其他任务或自己发送数据,那么你可能最好不要tshark像现在这样使用和编写shell脚本(请记住,你不应该让它tshark非常奔跑)在任何情况下都很长一段时间).
如果你真的,真的想直接使用libwireshark,你需要以某种方式解决它的所有依赖关系(最好是通过使它成为一个真正的独立库)并提供它对Wireshark(或tshark)实际运行的假设.libwireshark的代码组织得很好,它只是由Wireshark源代码树下的整个epan目录组成,并根据Wireshark仍然是Ethereal时建立的惯例进行布局.每个函数的文档在公开可见时在头文件中提供,在每种情况下都在源文件中更深入.另外请记住,README.developer与您拥有的源代码版本一起分发是获得一些提示的好地方(如果您想要执行此任务,您也可以阅读所有README.*文件) .