Python2.7——重建数据包以打印html



使用wireshark,我可以看到我请求的html页面(段重建)。我无法使用pyshark来完成这个任务,所以我转而使用scapy。使用scapy和嗅探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页面。

您要查找的是

  • IP数据包整理
  • TCP流重组

看到

scapy

通过defragment([list_of_packets,])提供最佳的ip碎片整理,但不提供通用的tcp流重组。无论如何,这里有一个非常基本的TCPStreamReassembler,它可能适用于您的用例,但是操作的无效假设是,即连续的流将被分割成最大段大小(mss)的段。它将连接段== mss,直到一个段<找到了MSS。然后,它将吐出一个带有完整有效载荷的重新组装的TCP数据包。>

注意 TCP流重组不是微不足道的,因为你必须照顾重传,排序,ack,…

tshark

根据这个答案,tshark有一个相当于wireshark的命令行选项"follow TCP stream",它接受一个pcap并为所有TCP会话/"conversation"创建多个输出文件

因为pyshark看起来只是tshark二进制文件的一个接口,所以如果还没有实现,那么实现这个功能应该是非常直接的。

对于Scapy 2.4.3+,您可以使用

sniff([...], session=TCPSession)

重建HTTP数据包

相关内容

  • 没有找到相关文章