数据包嗅探

时间:2010-11-25 18:21:14

标签: network-programming

我是网络编程的新手。我想要一个关于数据包嗅探的帮助。我想要嗅探ip ipsec和pptp数据包。他们使用相同的方法(代码)嗅探他们,或者使用不同的方法嗅探他们。我使用的是linux,语言是c ++。 感谢

2 个答案:

答案 0 :(得分:1)

查看libpcap

答案 1 :(得分:0)

我建议不要编写自己的嗅探器或分析器,除非你喜欢编写自己的协议解析器或者有一个特殊的“实时”要求。

我建议使用tcpdump来捕获您感兴趣的流量作为第一步。例如。假设您有一个本地网络192.168.1.0/24并已安排端口镜像到您的预期捕获PC,您可以尝试以下方法:

tcpdump -i eth0 -w output.pcap -s0 -n 'net 192.168.1.0/24'

然后编写一个分析器实用程序,用于解析tshark子进程,分析您感兴趣的数据包;例如,两个IP地址192.168.1.1和192.168.1.10之间的pptp流量。在这种情况下,以下命令调用将剖析数据包并将其有效负载转储为文本文件,以便在C ++中进一步处理,甚至更好的Python / Perl:

tshark -r output.pcap -R "pptp and (ip.src_host == 192.168.1.1 ip.dst_host == 192.168.1.10)" -T text

当然,您可以根据需要多次运行tshark,以便在之前创建的同一个output.pcap上进行预期分析。每次根据您的需要通过不同的过滤器。

这种技术或其变体应该可以让您在很少的代码行中达到90%的目标,而且不必对标准协议的具体细节感到沮丧。使用tshark实现的解剖器将经过严格测试和调试,从而为您节省大量时间和麻烦。