Как отправить необработанный кадр Ethernet в Python?

Мне нужно сделать проект за несколько дней, это базовый интерфейс клиента и сервера. Подвох в том, что это должны быть все сырые сокеты. У меня нет проблем с созданием этого, я просто застрял при отправке пакетов.

Сначала я попытался привязать его к интерфейсу «en1»; но это продолжает давать мне ошибкуnodename not known, Когда я привязываю его к своему локальному IP-адресу, он работает нормально. После этого я создал класс необработанных пакетов, все в шестнадцатеричном формате. Затем я сделал sendto call, чтобы отправить его по проводам.

Проблема в том, что когда я перехватываю пакет с помощью wireshark, он обнаруживается как полезная нагрузка пакета ipv4. Я не хочу, чтобы он делал заголовки автоматически, для этого и был мой класс пакетов в любом случае. Вы знаете, как я могу убрать эти заголовки?

Вот мой код - только необработанная функция:

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 и вот захваченный пакет с приветом в конце:

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

* это начало полезной нагрузки, хотя оно и должно было быть началом пакета также я не собираюсь использовать какие-либо другие модули, я должен использовать сокет.

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

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