使用libwireshark以编程方式获取Wireshark功能

时间:2012-04-25 01:15:51

标签: wireshark

如果我想编写一个使用Wireshark功能的脚本,我会使用tshark。我听说还有一个libwireshark可以在用C编写程序时使用但是,对于我的生活,我找不到任何文档!我试图在wireshark源代码树中隔离库代码,但似乎代码组织得不是很好,并且不存在这样的隔离(或者我没有找到它)。

我有两个问题:

  1. 我是否正确地认为libwireshark确实可以用来以编程方式获取我从wireshark / tshark获得的任何功能?
  2. 您能指点我这个主题的任何文档/教程/示例吗?即使是一些简单的例子也可以有很长的路要走。如果不这样做,你能指点我解释一下如何在wireshark源代码树中找到自己的方式吗?

4 个答案:

答案 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插件:

  1. tshark添加pcap文件,应用过滤器,但如果你发现缺少任何功能,只需在wireshark源代码中编辑tshark.c。
  2. capinfos提供诸如数据包或文件大小等的详细信息(如果你想要更多的功能,在wireshark源代码中有一个名为capinfos的脚本编辑它)
  3. 请注意,附加组件仅适用于Linux,而capinfos是用shell脚本编写的。因此,您可以使用相同的shell脚本并创建新脚本以获得更好的功能。

    即使我最初遇到很多问题,因为没有适当的文档。但是一旦你开始就顺利进行。