scapy

2016-06-21 6 views
0

を使用してHTTPパケットの応答がない私は、HTTP GETリクエストを送信するために、次のコードを使用していますscapy

syn = IP(dst='www.google.com')/TCP(dport=80, flags='S') 
syn_ack = sr1(syn) 
getStr = 'GET/HTTP/1.1\r\nHost: www.google.com\r\n\r\n' 
request = IP(dst='www.google.com')/TCP(dport=80, sport=syn_ack[TCP].dport,seq=syn_ack[TCP].ack, ack=syn_ack[TCP].seq + 1, flags='A')/getStr 
reply = sr1(request) 

と私はまだグーグル

+0

この投稿はあなたに役立つと思います。 [リンク](http://stackoverflow.com/questions/37683026/how-to-create-http-get-request-scapy) – Noob123

答えて

0

からそれを応答パケットの受信を待機していますあなたが適切なTCPプロトコルに従っていないという事実と関係しているかもしれません。 3ウェイハンドシェイク(SYN-SYN_ACK-ACK)でACKを忘れたように見えるコードを読んでいます。あなたのデータを送信しますが、接続の設定が完了していないため無視します。以下のようなことをしてみてください。

syn = IP(dst='www.google.com')/TCP(dport=80, flags='S') 
syn_ack = sr1(syn) 
ack = TCP(sport=syn.sport, dport=80, flags='A', seq=syn_ack.ack, ack=syn_ack.seq + 1) 
ack_resp = sr1(ip/ack) 

getStr = 'GET/HTTP/1.1\r\nHost: www.google.com\r\n\r\n' 
request = IP(dst='www.google.com')/TCP(sport=syn.sport, dport=80, flags='A', seq=ack_resp.ack, ack=ack_resp.seq $ 
reply = sr1(request) 

私はそれがまたは動作しない場合がありますので、これをテストしていませんが、それは間違いなく最後のACKなしでは動作しません。