2016-09-29 2 views
0

Я написал этот кусок кода, чтобы получить заголовок HTTP и установить хост:Scapy: Как манипулировать хостом в http-заголовке?

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

После запуска afforementioned кода, новое имя хоста которое было установлено правильно, но проблема в том, что, когда я пишу этот пакет в PCAP файл, я все еще вижу предыдущий узел в http-полях, Есть ли абсолютный способ манипулирования http_layer['Host']? Любая помощь будет оценена по достоинству. С уважением.

ответ

0

В конце концов, нашел ответ. Ключ в том, что scapy сначала разбирает HTTP Request и показывает диктофон его полей. Поэтому, когда мы пытаемся назначить новое поле, например Host, он изменяет Host, который он уже разобрал и не изменил исходное значение поля. Таким образом, это способ изменения Host или любых других соответствующих полей:

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 
Смежные вопросы