在c ++中是否有某种方法可以捕获端口上传输的所有数据包(通过其他应用程序)并获取数据。我需要查看特定应用程序发送的数据类型并对其进行处理。
答案 0 :(得分:0)
如果您运行的是Linux或类似操作系统,则可以使用libpcap来捕获数据包。它使用伯克利数据包过滤器来过滤符合您定义标准的数据包。
在Windows上,您可以尝试使用npcap(较新的)或winpcap - 这是WireShark在内部用于捕获数据包的库。这些库的用法类似于libpcap。
获取程序发送和接收的数据包的另一个选择是挂钩发送/接收功能;在Linux上,可以像编写具有send
和recv
函数的共享库一样简单,然后在运行目标应用程序时使用LD_PRELOAD
使其调用send
和相反,recv
函数可以对数据包内容执行某些操作,然后调用原始函数(可以使用dlsym
调用RTLD_NEXT
和函数名称来查找原始函数。 / p>