2012-04-17 82 views
1

我想用scapy來運行一個完整的HTTP會話。也就是說,我想手動執行三次握手,GET請求,必要的確認以接收HTML文件並終止連接。使用[1]我完成了三次握手和GET請求,但似乎無法捕獲從服務器發送的原始HTML數據包,而且我顯然無法發送更多的ack數據包。有任何想法嗎?完整的HTTP GET與scapy

此外,我最終希望能夠解析HTML的原始數據包。如果有人知道如何從一個scapy數據包做到這一點,我會很感激。

[1] http://www.thice.nl/creating-ack-get-packets-with-scapy/

回答

2

Gimbi,

我在工作中,只能解析和現在不發起Scapy的連接。所以我會解決你的第二個要求。我們正在尋找像我在這裏提供的東西。如果數據包包含html或一個http請求,那麼包含html和http請求的圖層就是(Raw).load我會首先測試該圖層是否存在(haslayer),然後如果數據包是'http數據包「這裏只是在IF語句中檢查80,但是你可能只是在sniff netfilter中使用這個端口,我已經包含了選項,可以直接從線上嗅探或者在這個片段中引入一個pcap(調整端口等如果你正在使用非標準)

#!/usr/bin/python -tt 

from scapy import * 
import sys 

def parse(pkt): 
    if pkt.haslayer(TCP) and pkt.getlayer(TCP).dport == 80 and pkt.haslayer(Raw): 
     print pkt.getlayer(Raw).load 

if '-l' in sys.argv: 
    sniff(prn=parse) 

else: 
    pkts = rdpcap(sys.argv[1]) 
    for pkt in pkts: 
     parse(pkt) 

當然可以用這個作爲一個開始,你可以調整行8回暖不僅僅是DPORT也運動,例如,讓我知道,如果這有助於在所有的好運氣!

P.S.更改以下

from scapy import * 

from scapy.all import * 

取決於你的版本..