我在确定TCP建立的通信时遇到问题。 我必须确定第一个完成的通信,例如第一个完整的http通信。 我有转储.pcap文件与捕获。我知道通信应该从三次握手(SYN,SYN-ACK,ACK)开始,然后从双方通过双FIN标志关闭通信。
但我在该转储文件中有很多通信。 所以这是问题所在。我需要记住哪些东西才能与一次通信完全匹配?
我考虑过源IP,目标IP,协议,也许端口,但我不确定。
感谢您的一切建议。 对不起我的英语。
答案 0 :(得分:0)
识别第一个完成的通信是高度协议特定的。您使用过滤器走在正确的轨道上。如果您的协议是常用协议,则有一些称为协议分析器和过滤器的插件可以从pcap数据流中找到“对话”。如果您知道大致的开始时间和结束时间,也会缩小范围。
答案 1 :(得分:0)
你说你需要:
您可以通过过滤来识别特定的TCP或UDP会话 连接的5元组:
正如Shane所说,这与协议有关,例如ICMP没有这个概念 像TCP和UDP这样的端口。
如下所示的libpcap过滤器适用于TCP和UDP:
tcp and host 1.1.1.1 and port 53523 and dst ip 1.1.1.2 and port 80
使用tcpdump:
应用它$ tcpdump -nnr myfile.pcap 'tcp and host 1.1.1.1 and port 53523 and dst ip 1.1.1.2 and port 80'
要识别第一个已完成的连接,您必须遵循时间戳。
使用像Bro这样的工具来读取PCAP会产生答案,因为它会列出每个连接 尝试看到(完整或不完整):
$ bro -r myfile.pcap
$ bro-cut -d < conn.log | head -1
2014-03-14T10:00:09-0500 CPnl844qkZabYchIL7 1.1.1.1 57596 1.1.1.2 80 tcp http 0.271392 248 7775 SF F ShADadfF 14 1240 20 16606 (empty) US US
使用TCP的标志数据来判断是否有成功的握手和拆除。 对于其他协议,您可以根据发送和接收的字节数进行判断。