Я пытаюсь изменить строку сервера:
Код: Выделить всё
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.11.8
Код: Выделить всё
HTTP/1.0 200 OK
Server: A custom one
Есть ли способ изменить строки и соответствующие поля размера, чтобы pcap оставался без ошибок?
P.S. Я попытался изменить поля «Длина кадра» и «Длина захвата» слоя Ether, но все равно получал ошибки.
На данный момент мой демонстрационный сценарий:
Код: Выделить всё
from scapy.all import *
def replace_user_agent(packets):
i = 0
for packet in packets:
i+=1
if packet.haslayer(Raw):
raw = packet[Raw].load
if b"SimpleHTTP/0.6 Python/3.11.8" in raw:
raw = raw.replace(b"SimpleHTTP/0.6 Python/3.11.8", b"A custom one"+ b" " * (len("SimpleHTTP/0.6 Python/3.11.8") - len("A custom one"))) # cover the missing length with spaces
packet[Raw].load = raw
# Recalculate length fields and checksums
if packet.haslayer(IP):
del packet[IP].len # Recalculate IP length
del packet[IP].chksum # Recalculate IP checksum
if packet.haslayer(TCP):
del packet[TCP].chksum # Recalculate TCP checksum
elif packet.haslayer(UDP):
del packet[UDP].len # Recalculate UDP length
del packet[UDP].chksum # Recalculate UDP checksum
return packets
if __name__ == "__main__":
input_pcap = "input.pcap"
output_pcap = "output.pcap"
packets = rdpcap(input_pcap)
modified_packets = replace_user_agent(packets)
wrpcap(output_pcap, modified_packets)
Подробнее здесь: https://stackoverflow.com/questions/792 ... py-wthiout
Мобильная версия