como adicionar cabeçalhos http a um pacote sniffed usando scapy

Eu estou tentando farejar um pacote http indo usando scapy, adicionar alguns novos cabeçalhos http e enviá-lo à frente. A intenção aqui é inserir apenas novos cabeçalhos enquanto mantém o pacote intacto. No máximo, qualquer recálculo da soma de verificação deve ser feito, se necessário.

Já passei por quase todas as perguntas sobre SO, mas não obtive exatamente uma solução.

A seguir está o que eu fiz.

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)

O problema é que o código acima insere uma nova seção de carga útil em vez de adicionar um cabeçalho simples. Já existe uma nova linha dupla \ r \ n \ r \ n para indicar a finalização do cabeçalho de acordo com o padrão HTTP.

Para superar isso eu tentei remover o último \ r \ n, fazendo o seguinte

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

Mas isso remove todos os cabeçalhos existentes anteriormente e apenas o "Novo Cabeçalho" permanece.

Eu tentei isso no Linux mint.

ATUALIZAÇÃO: Estou tentando criar uma nova carga útil HTTP que contenha cabeçalhos anteriores e adicionarei alguns. Alguém pode ajudar com a remoção de uma camada existente

questionAnswers(1)

yourAnswerToTheQuestion