2015-09-17 31 views
1

使用wireshark,我可以看到我請求的網頁(網段重建)。我無法使用pyshark來完成這項任務,所以我轉向scapy。使用Scapy的和嗅探爲wlan0,我能夠打印請求的頭與此代碼:Python2.7 - 重構打印html的數據包

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頁面。

回答

1

什麼您正在尋找是

  • IP數據包碎片整理
  • TCP流重組

看到here

Scapy的

提供有st努力ip.defragmentation通過defragment([list_of_packets,])但不提供通用的tcp流重組。無論如何,here's一個非常基本的TCPStreamReassembler可以爲你的用例工作,但運行在無效假設上,連續的流將被拆分成最大段大小(mss)的段。它會連接段== mss,直到找到段< mss。然後它會用全部的有效負載吐出一個重組的TCP數據包。

注意 TCP流重組是不平凡的,你要照顧重傳,訂貨,的ACK的...

tshark的

根據this answer tshark的有一個命令行選項相當於wiresharks「跟蹤tcp流」,它需要pcap併爲所有tcp會話/「對話」創建多個輸出文件。

因爲它看起來像pyshark只是tshark二進制文件的接口如果它尚未實現,那麼實現該功能應該非常簡單。