как добавить заголовки http в пакет, сниффинг с помощью scapy

Я пытаюсь прослушать исходящий http-пакет, используя scapy, добавив в него несколько новых http-заголовков и отправив его вперед. Намерение здесь состоит в том, чтобы вставлять только новые заголовки, сохраняя пакет без изменений. На максимуме любой пересчет контрольной суммы должен быть сделан при необходимости.

Прошел почти все вопросы по SO, но неТ точно получить решение.

Вот что я сделал.

def parse(pkt):

    if pkt.haslayer(TCP) and pkt.getlayer(TCP).dport == 80 and pkt.haslayer(Raw):
        pkt = pkt / "New Header:value\r\n\r\n"

        # OR i tried this
        #pkt = pkt.getlayer(Raw).load / Raw.load(load="New Header:value\r\n\r\n")

        #pkt.getlayer(Raw).load("New Header:value\r\n\r\n")
        pkt.show()
        #del pkt[IP].chksum
        send(pkt)
#end parse function

# start sniffing
a=sniff(filter="tcp and ( port 80 )", prn=parse)

Проблема в том, что приведенный выше код вставляет новый необработанный раздел полезной нагрузки вместо добавления простого заголовка. Уже есть двойной символ новой строки \ r \ r для обозначения завершения заголовка в соответствии со стандартом HTTP.

Чтобы преодолеть это, я попытался удалить последний, выполнив следующее

   #pkt = pkt.getlayer(Raw).load[-2:] / Raw.load(load="New Header:value\r\n\r\n")

Но это лишает всех ранее существовавших заголовков и только "Новый заголовок" остается.

Я попробовал это на Linux Mint.

ОБНОВЛЕНИЕ: я пытаюсь создать новую полезную нагрузку http, которая будет содержать предыдущие заголовки, и я добавлю некоторые. Может кто-нибудь помочь с тем, как удалить существующий слой

Ответы на вопрос(1)

Ваш ответ на вопрос