Scapy:如何在 http header 中操作主机?
Scapy: How to manipulate Host in http header?
我写了这段代码来获取httpheader并设置Host:
http_layer = packet.getlayer(http.HTTPRequest).fields
http_layer['Host'] = "newHostName"
return packet
经过运行上述代码后,新的主机名已经设置正确,但问题是当我将数据包写入pcap文件时,我仍然在http字段中看到以前的主机,
有绝对的方法来操纵 http_layer['Host']
吗?
任何帮助,将不胜感激。
问候。
总算找到答案了。
关键是 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
我写了这段代码来获取httpheader并设置Host:
http_layer = packet.getlayer(http.HTTPRequest).fields
http_layer['Host'] = "newHostName"
return packet
经过运行上述代码后,新的主机名已经设置正确,但问题是当我将数据包写入pcap文件时,我仍然在http字段中看到以前的主机,
有绝对的方法来操纵 http_layer['Host']
吗?
任何帮助,将不胜感激。
问候。
总算找到答案了。
关键是 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