2016-06-21 3 views
0

я использовал следующий код для того, чтобы отправить запрос HTTP GET:нет ответа на HTTP-пакета с использованием 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) 

и я все еще жду, чтобы получить ответный пакет от Google

+0

Я думаю, что это сообщение может вам помочь. [Ссылка] (http://stackoverflow.com/questions/37683026/how-to-create-http-get-request-scapy) – Noob123

ответ

0

It может иметь какое-то отношение к тому факту, что вы не соблюдаете надлежащий протокол TCP. Чтение кода выглядит так, будто вы забыли ACK в трехстороннем рукопожатии (SYN-SYN_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.