【问题标题】:how can i identify the protocol of a connection from a pcap file如何从 pcap 文件中识别连接协议
【发布时间】:2014-02-04 18:57:59
【问题描述】:
我正在尝试扫描 pcap 文件并计算文件中每个协议的数据包数。
假设我可以使用端口号作为识别方法,当查看特定数据包确定该数据包属于哪个协议时,我仍然遇到问题。
原因是我不知道应该查看哪个端口 - 源端口或目标端口
在给定的连接上,假设是 HTTP,客户端到服务器的数据包将具有源端口(某些源端口,可能是 60000)和目标端口 80,但是,服务器到客户端的数据包将具有目标端口 60000 和源端口 80。
那么,在给定的数据包上,我如何知道它所属的协议?
【问题讨论】:
标签:
python
sockets
networking
tcp
【解决方案1】:
从问题来看,您只是想计算具有 (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 实用程序轻松过滤掉空行。