我是网络编程新手。我需要有关数据包嗅探的帮助。我想嗅探ip、ipsec和pptp数据包。它们是使用相同的方法(代码)嗅探还是使用不同的方法嗅探。我使用linux,语言是c++。谢谢
发布于 2010-11-26 02:23:49
看看libpcap吧。
发布于 2010-12-03 03:08:18
我建议不要编写自己的嗅探器或分析器,除非您喜欢编写自己的协议分析器或有特殊的“实时”要求。
作为第一步,我建议使用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当然,您可以在前面创建的同一个output.pcap上根据需要多次运行tshark以进行预期分析。每次根据你的需要传递一个不同的过滤器。
这项技术,或者它的一个变体,应该可以让你在很少的几行代码中达到你想要的90%,而不会被标准协议的细节弄脏。使用tshark实现的分析器将经过严格的测试和良好的调试,为您节省大量的时间和麻烦。
https://stackoverflow.com/questions/4279891
复制相似问题