Como faço para enviar um quadro ethernet raw em python

Eu preciso ter um projeto feito em poucos dias, é uma interface básica de cliente e servidor. O problema é que ele precisa ser todo soquete bruto. Eu não tenho nenhum problema em criar isso, estou apenas preso ao enviar os pacotes.

Primeiro eu tentei ligá-lo a uma interface 'en1', mas ele continua me dando um erronodename not known. Quando eu o vinculo ao meu endereço IP local, ele funciona bem. Depois de concluir isso, criei uma classe de pacote bruta, tudo em hexadecimal. Eu então fiz um chamado para enviar para o fio.

O problema é que quando eu capturar o pacote usando wireshark ele aparece como sendo a carga útil de um pacote ipv4. Eu não quero que ele faça os cabeçalhos automaticamente, é para isso que minha classe de pacotes brutos era de qualquer maneira. Você sabe de alguma maneira eu posso tirar esses cabeçalhos?

Aqui está o meu código - apenas a função raw:

def raw():
    HOST = gethostbyname('192.168.1.10')

    s = socket(AF_INET, SOCK_RAW, IPPROTO_IP)
    s.bind((HOST, 0))

    s.setsockopt(IPPROTO_IP, IP_HDRINCL, 0) #no headers - it wont work!!

    pckt = packet("\x68\x65\x6c\x6c\x6f")
    netpacket = pckt.getpacket()

    print "Sending.. "
    print ""

    s.sendto(netpacket, ('192.168.1.1', 80))
    data = s.recv(4096)
    print data

o e aqui está o pacote capturado com um olá no final:

007f 2809 6da2 28cf daee 2156 0800 4500 004d 1bfc 0000 4000 db59 c0a8 010a c0a8 0101* 007f     

2809 6da2 28cf daee 2156 0800 4500 0036 2352 4000 4006 0000 c0a8 010a c0a8 0101 15c0 0050 

0000 0000 0000 0000 8010 813b 0000 68656c6c6f -hello

* este é o começo da carga mesmo que deveria ser o início do pacote também não vou usar nenhum outro módulo que eu tenha que usar o socket.

questionAnswers(2)

yourAnswerToTheQuestion