我正在处理TCP数据包。此应用程序充当嗅探器并构建SIP数据包。一些TCP SIP数据包碎片化,因此我需要重新组装它们。
我所做的是最初我使用以下方式处理第一个TCP连接:
packet = s.recvfrom(sipLocatorConfig.NETWORK_MAX_SIZE)
之后我获取了数据然后如果是碎片我得到剩下的但是使用.recv
:
socket.recv(sipLocatorConfig.NETWORK_TCP_MAX_SIZE)
当我获得第二个片段时,在使用.recv
时,我在开头会出现乱码数据,我假设它是ETH,IP,TCP信息:
M*?
M*?@{
QyE
如何删除此ETH,IP和TCP标头信息并仅从数据包中提取数据? 感谢
答案 0 :(得分:0)
您可以将数据包解析为:
EG。 TCP连接数据包来自:eth_header+IP_header+TCP_Header+payload(data)
每个标头都有自己的特定长度,从标头中提取信息需要你在python中使用struct模块(参见struct.unpack(“”,“”))。提取标题信息也需要了解标题的结构。最后,您可以计算有效载荷位置并最终提取它。
具体而言,请参阅此link以获取更多信息。希望这有帮助