2016-09-07 19 views
0
#!/usr/bin/python 
from scapy.all import * 

def findWeb(): 
    a = sr1(IP(dst="8.8.8.8")/UDP()/DNS(qd=DNSQR(qname="www.google.com")),verbose=0) 
    return a[DNSRR].rdata 

def sendPacket(dst,src): 
    ip = IP(dst = dst) 
    SYN = TCP(sport=1500, dport=80, flags='S') 
    SYNACK = sr1(ip/SYN) 

    my_ack = SYNACK.seq + 1 
    ACK = TCP(sport=1050, dport=80, flags='A', ack=my_ack) 
    send(ip/ACK) 

    payload = "stuff" 
    PUSH = TCP(sport=1050, dport=80, flags='PA', seq=11, ack=my_ack) 
    send(ip/PUSH/payload) 


    http = sr1(ip/TCP()/'GET /index.html HTTP/1.0 \n\n',verbose=0) 
    print http.show() 

src = '10.0.0.24' 
dst = findWeb() 
sendPacket(dst,src) 

我試圖做的HTTP數據包與Scapy的 我對VMwaer當我在VMware的回報R組取得了3握手與Ubuntu

使用Ubuntu的問題是,每一次我發送消息我有RESET 我們如何解決它?

感謝

sniff package image

回答

0

幾件事我發現錯了。 1.您的序列號是靜態設置的(seq = 11),這是錯誤的。序列號總是隨機生成的,必須按照RFC793使用它們。所以順序應該是= SYNACK [TCP]域.Ack

  • 您的SYN包時設置您的源端口爲1500,但你把它作爲1050(錯字?)

  • 您不需要額外的有效載荷/ PUSH。

  • 而且,看看這些線程:

    How to create HTTP GET request Scapy?

    Python-Scapy or the like-How can I create an HTTP GET request at the packet level