Scapy:如何操纵http标头中的主机?

时间:2016-09-29 06:59:30

标签: python packet scapy

我写了这段代码来获取http标头并设置Host:

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

运行了所提到的代码之后,新的主机名已经设置正确,但问题是当我在pcap文件中写入数据包时,我仍然在http字段中看到以前的主机, 是否存在操纵http_layer['Host']的绝对方法? 任何帮助,将不胜感激。 问候。

1 个答案:

答案 0 :(得分: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