使用Scapy在PCAP中查找TCP数据包的答案。

5
我用Scapy Python解析pcap文件,并且在其中有一个TCP数据包,我想知道这个数据包的回答是什么,我该怎么做?
例如:客户端和服务器TCP流
客户端->服务器:"嗨" 服务器->客户端:"你好吗"
当我获取"嗨"数据包(使用Scapy)时,如何获取"你好吗"?

你尝试过查看数据包序列号吗? - John Zwinck
@JohnZwinck 我尝试在Scapy Python中实现这个。 - paramikoooo
1
我建议您发布一下您迄今为止的尝试代码。目前的问题相当模糊,您是在要求我们为您编写整个程序吗? - John Zwinck
@JohnZwinck 不是所有的程序,只是找到TCP流“答案”的方法。 - paramikoooo
在TCP数据流中,“答案”是什么样子的?我同意JohnZwinck的看法,这太模糊了。如果您提供更多细节,那么获得有用答案的机会将会增加。 - Ross Jacobs
1个回答

2

查看来自客户端的消息的TCP序列号。将其称为SeqC。

然后查找第一条来自客户端的消息,其TCP确认序列大于SeqC(通常等于SeqC加上客户端TCP负载的大小)。将其称为PacketS1。

从PacketS1开始,收集所有数据包的TCP负载,直到看到由服务器发送并设置了TCP PSH(推送)标志的数据包。这表明应用层消息的结束。将这些有效载荷称为PayloadS1到PayloadSN。

将PayloadS1到PayloadSN连接起来。这是对客户端消息的可能应用层响应。


1
谢谢你的回复,但我不明白如何在Scapy Python中实现这个功能? - paramikoooo
1
你可以使用Scapy中的pkt[TCP].seq获取我称之为SeqC的TCP序列号。你可以使用pkt[TCP].ack获取我称之为PacketS1的确认号。你知道如何在Scapy中加载数据包,以便可以使用pkt[TCP]来获取头部吗? - John Zwinck
我没听懂你的意思,你能写一个简单的Python代码来实现吗? - paramikoooo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接