如果要编写使用Wireshark功能的脚本,请使用tshark。我听说在用C编写程序时也可以使用libwireshark,但就我的一生而言,我找不到有关它的任何文档!我曾尝试在wireshark源代码树中隔离库代码,但似乎代码的组织不是很好,并且这样的隔离不存在(要么如此,要么我找不到它)。

我有两个问题:

  • 我是否认为libwireshark确实可以以编程方式获得我可以从wireshark/tshark获得的任何功能,对吗?
  • 您能指出我关于该主题的任何文档/教程/示例吗?即使是几个简单的例子也可以大有帮助。失败的话,您能为我提供一个关于如何在Wireshark源代码树中找到自己的出路的解释吗?
  • 最佳答案

    编号

    libwireshark不能在Wireshark本身之外使用,尝试这样做将使您on your own试图找出问题所在。 libwireshark实际上是Wireshark的数据包分析部分的一部分(称为epan的 E thereal pa cket 分析仪),您可以看到in the Developer's Guide并非Wireshark的全部。 libwireshark实际上提供的是所有内置协议(protocol)解剖器的主界面,插件解剖器的 Hook 以及完整的数据包解剖API。它依赖于Wireshark的其余部分设置的机制来处理不直接用于数据包解剖工具的事情,但是使解剖器能够执行其工作(例如分配解除分配的内存块,处理压缩或加密的数据等)。

    代之以写一个解剖器。
    如果您的项目是要以某种方式严格地分析网络流量,则可能要考虑为Wireshark编写一个解剖器,而不是重新发明Wireshark可以为您提供的许多轮子。如果您需要做一些更复杂的事情,例如监视网络流量,然后启动其他任务或自己发送数据,那么最好还是使用tshark和shell脚本(请记住,不要让tshark运行)在任何情况下都需要非常长的时间)。

    如果您确实真的要直接使用libwireshark,则需要以某种方式解决其所有依赖关系(最好通过使其成为一个独立的库),并提供它对Wireshark(或tshark)实际正在运行的假设。 libwireshark的代码井井有条,只是它由Wireshark源代码树下的整个epan目录组成,并且根据Wireshark还是Ethereal时建立的约定进行布局。公开可见时,头文件中提供了每个功能的文档,而每种情况下,文档的源文件中都有更深入的介绍。还请记住,随您提供的源代码的版本一起分发的README.developer是获取一些提示的好地方(如果您要执行此任务,还可以阅读所有README。*文件)。

    10-04 13:24