2016-09-29 3 views
0

Ich schrieb dieses Stück Code HTTP-Header und setzen Host zu erhalten:Scapy: Wie Host im http-Header zu manipulieren?

http_layer = packet.getlayer(http.HTTPRequest).fields 
http_layer['Host'] = "newHostName" 
return packet 

Nach dem afforementioned Code ausgeführt wird, hat sich der neue Hostname korrekt eingestellt wurde, aber das Problem ist, dass, wenn ich schreibe das Paket in pcap Datei, sehe ich immer noch den vorherigen Host in http Felder, Gibt es eine absolute Möglichkeit, http_layer['Host'] zu manipulieren? Jede Hilfe wäre willkommen. Grüße.

Antwort

0

Schließlich fand die Antwort. Der Schlüssel ist, dass scapy zuerst analysiert HTTP Request und zeigt das Diktat seiner Felder. Wenn wir also versuchen, ein neues Feld wie Host zuzuordnen, ändert es die Host, die es bereits analysiert hat, und ändert den ursprünglichen Feldwert nicht. Also, das ist die Art zu ändern Host oder andere entsprechende Felder:

str_headers = pkt['HTTP']['HTTP Request'].fields['Headers'] 
str_headers = str_headers.replace('Host: ' + pkt['HTTP']['HTTP Request'].fields['Host'], 'Host: ' + new_val) 
pkt['HTTP']['HTTP Request'].fields['Headers'] = str_headers 
return pkt