如何从pcap文件中识别连接的协议

时间:2014-02-04 07:29:38

标签: python sockets networking tcp

我正在尝试扫描pcap文件并计算文件中每个协议的数据包数。 假设我可以使用端口号作为识别方法,我在查看特定数据包时仍然会遇到问题,确定该数据包属于哪种协议。 原因是我不知道我应该看哪个端口 - 源端口或目标端口 在给定连接上,假设HTTP,客户端到服务器数据包将具有源端口(某些源端口,可能是60000)和目标端口80,但是,服务器到客户端数据包将具有目标端口60000和源端口80。 那么,在给定的数据包上,我怎么知道它所属的协议呢?

1 个答案:

答案 0 :(得分:0)

从问题来看,您只是想计算具有(src.port == 80 || dst.port == 80)的数据包。例如,您说您知道80是在其中一个方向上用于HTTP的端口。

在这种情况下,你可以使用Wireshark附带的内置tshark实用程序并将其传递给wc(假设你使用linux),如下所示:

tshark -r /tmp/soap.cap  -T fields -d tcp.port==18083,echo -e echo.data | wc -l

tshark -r /tmp/soap.cap  -T fields -d tcp.port==18083,echo -e echo.port | wc -l

请注意,这甚至会计算像Syn这样的TCP数据包,即使这些数据包本身不是HTTP数据包。

如果您只想访问HTTP数据包,可以使用以下命令:

tshark -r /tmp/soap.cap  -T fields -d tcp.port==18083,http -e http.request.version | wc -w

请注意,最后一个假定每行的输出是一个字。如果不是这种情况,您可以使用其他Linux实用程序轻松过滤掉空行。