2016-07-22 34 views
0

我知道它是一个愚蠢的问题。但相信我 - 我搜查了我所有的互联网,我没有得到任何答案。 首先,有我的代码:我如何从网站获得http数据由scapy

def Make_Get(): 
     synR = IP(dst = 'www.google.com', ttl = 64)/TCP(dport = 80, flags = 'S') 
     synAckAN = sr1(synR) 
     getStr = 'GET /index.html HTTP/1.0 \n\n' 
     req = (IP(dst = 'www.google.com', ttl = 64)/TCP(dport = 80, sport = synAckAN[TCP].dport, seq = synAckAN[TCP].ack, ack = synAckAN[TCP].seq+1, flags = 'A')/getStr) 

     ans, unans = sr(req) 
     return ans, unans 
当我运行这个功能和特林打印“答”(第一个参数)

- 它给我一个答案没有数据。 看: 收到1包,拿到了1个回答,剩余0包

###[ IP ]### 
    version = 4L 
    ihl  = 5L 
    tos  = 0x0 
    len  = 40 
    id  = 9784 
    flags  = 
    frag  = 0L 
    ttl  = 128 
    proto  = tcp 
    chksum = 0xc02f 
    src  = 216.58.210.4 
    dst  = 192.168.233.128 
    \options \ 
###[ TCP ]### 
    sport  = http 
    dport  = ftp_data 
    seq  = 2116250139 
    ack  = 28 
    dataofs = 5L 
    reserved = 0L 
    flags  = A 
    window = 64240 
    chksum = 0x77bc 
    urgptr = 0 
    options = {} 
###[ Padding ]### 
     load  = '\x00\x00\x00\x00\x00\x00' 
None 

没有任何数据....... 但是当我闻在Wireshark的传历程,我得到了一个HTML代码在数据包中。

我的问题是 - 我怎么能发送Get请求像我一样,从网站保存的HTML代码(将其打印出来,或文件..犯规梅特..)

回答

0

我会强烈建议使用scapy-http,这是一个可以帮助您支持HTTP的scapy扩展。

+0

我可以使用它..但我想知道如何做没有它的HTTP REQ。问题是我这样做的答案是Ack,而不是HTML代码。你不知道为什么? – jony

+0

您需要先建立TCP连接,然后在TCP有效负载的主体中执行您的HTTP请求。所以,首先一个SYN,接收一个ACK,然后发送一个SYN/ACK。之后,您可以在TCP有效负载的主体中发送HTTP,然后希望收到它 – StephenG

+0

这就是我在我发送的代码中所做的 – jony

相关问题