使用libpcap通过进程PID过滤网络数据包

时间:2016-02-22 10:53:03

标签: c network-programming pcap netstat

我试图用C语言中的libpcap来分析流量网络。我想通过进程PID过滤数据包。我一直在做研究,显然pcap不能做我想要的,但netstat可以给我关于流程与流程pid的信息。

这是丑陋的调用“system(”netstat - apn“)”或者我可以使用C / C ++中的其他库吗?我希望我的程序在Linux和Windows下运行。

1 个答案:

答案 0 :(得分:0)

是的,system(3)generally frowned upon,您将无法获得命令的输出。如果您想要使用该路线,请按照popen(3)所述使用here

在Linux衍生平台上采用替代路线,我建议梳理/proc以了解您感兴趣的流程的详细信息,并使用它来构建bpf filter。您应该可以从/proc/$PID/net/{tcp, udp}为您的进程收集four or five tuple,并使用它来创建一个过滤字符串来捕获您想要的数据包。