cómo agregar encabezados http a un paquete detectado mediante scapy

Estoy intentando rastrear un paquete http saliente usando scapy, agregar algunos encabezados http nuevos y enviarlo por adelantado. La intención aquí es solo insertar nuevos encabezados mientras se mantiene el paquete intacto. En el máximo, cualquier recuento de suma de comprobación se debe hacer si es necesario.

He pasado por casi todas las preguntas sobre SO, pero no obtuve una solución exacta.

Lo siguiente es lo que he hecho.

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)

El problema es que el código anterior inserta una nueva sección de carga útil en bruto en lugar de agregar un encabezado simple. Ya existe una doble línea nueva \ r \ n \ r \ n para indicar la terminación del encabezado de acuerdo con el estándar HTTP.

Para superar esto, intenté eliminar la última \ r \ n haciendo lo siguiente

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

Pero esto elimina todos los encabezados existentes anteriormente y solo queda el "Nuevo encabezado".

He intentado esto en Linux mint.

ACTUALIZACIÓN: Estoy tratando de crear una nueva carga útil http que contendría los encabezados anteriores y agregaré algunos. ¿Puede alguien ayudarme a eliminar una capa existente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta