使用c ++捕获传出的数据包

时间:2018-06-07 01:25:03

标签: c++

在c ++中是否有某种方法可以捕获端口上传输的所有数据包(通过其他应用程序)并获取数据。我需要查看特定应用程序发送的数据类型并对其进行处理。

1 个答案:

答案 0 :(得分:0)

如果您运行的是Linux或类似操作系统,则可以使用libpcap来捕获数据包。它使用伯克利数据包过滤器来过滤符合您定义标准的数据包。

在Windows上,您可以尝试使用npcap(较新的)或winpcap - 这是WireShark在内部用于捕获数据包的库。这些库的用法类似于libpcap。

获取程序发送和接收的数据包的另一个选择是挂钩发送/接收功能;在Linux上,可以像编写具有sendrecv函数的共享库一样简单,然后在运行目标应用程序时使用LD_PRELOAD使其调用send和相反,recv函数可以对数据包内容执行某些操作,然后调用原始函数(可以使用dlsym调用RTLD_NEXT和函数名称来查找原始函数。 / p>