使用wireshark,我可以看到我要求的html页面(段重建)。我无法使用pyshark执行此任务,因此我转向scapy。使用scapy和sniffing wlan0,我可以使用以下代码打印请求标头:
from scapy.all import *
def http_header(packet):
http_packet=str(packet)
if http_packet.find('GET'):
return GET_print(packet)
def GET_print(packet1):
ret = packet1.sprintf("{Raw:%Raw.load%}\n")
return ret
sniff(iface='wlan0', prn=http_header, filter="tcp port 80")
现在,我希望能够重新构建查找图像的完整请求并打印所请求的html页面。
答案 0 :(得分:2)
您要搜索的是
请参阅here
<强> Scapy的强>
通过defragment([list_of_packets,])
提供尽力而为的ip.defragmentation,但不提供通用的tcp流重组。无论如何,here's一个非常基本的TCPStreamReassembler可能适用于您的用例,但在无效假设上运行,连续流将被拆分为最大段大小(mss)的段。它会将段== mss连接起来直到一个段&lt; mss被发现了。然后它将使用完整的有效负载吐出重新组装的TCP数据包。
注意 TCP流重组并非易事,因为您必须处理重传,排序,确认,......
<强> tshark的强>
根据this answer tshark有一个等同于wiresharks的命令行选项&#34;跟随tcp stream&#34;这需要一个pcap并为所有tcp会话创建多个输出文件/&#34;会话&#34;
因为看起来pyshark只是tshark二进制文件的接口,所以如果它尚未实现,那么实现该功能应该非常简单。
答案 1 :(得分:0)
使用Scapy 2.4.3+,您可以使用
sniff([...], session=TCPSession)
重建HTTP数据包