Попытка использовать raw сокет в Python 3 для слепой отправки пакета IP, но продолжаю искать ARP, как отключить - PullRequest
1 голос
/ 16 января 2020

Я пытаюсь отправить IP-пакет в Python 3 в сети точка-точка IE Хост и клиент подключены напрямую друг к другу с использованием c IP.

Я использую следующий код:

import socket

class Client:

    def __init__(self):
        self._sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
        self._sock.bind(('192.168.1.10',0))

    def send(self, data):
        data_to_send = bytes([0x0,0x1C,0x23,0x17,0x4A,0xCB,0x00,0x50,0xB6,0x0D,0x35,0x9F,0x08,0x00,0x45,0x00,0x00,0x2E,0x00,0x00,0x40,0x00,0x40,0x00,0xB7,0x6A,0xC0,0xA8,0x01,0x0A,0xC0,0xA8,0x01,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])
        self._sock.sendto(data_to_send, ('192.168.1.11', 0))

Однако каждый раз, когда я пытаюсь отправить пакет, я всегда получаю ARP-запросы (и пакет никогда не получает передатчик).

1   0.000000    GoodWayI_0d:35:9f   Broadcast   ARP 42  Who has 192.168.1.11? Tell 192.168.1.10
2   0.981801    GoodWayI_0d:35:9f   Broadcast   ARP 42  Who has 192.168.1.11? Tell 192.168.1.10
3   1.981830    GoodWayI_0d:35:9f   Broadcast   ARP 42  Who has 192.168.1.11? Tell 192.168.1.10

Как мне избежать этих поисков и просто отправить посылку вслепую?

Кажется, мой поисковый запрос не работает, потому что я не могу найти много документации по Python 3 сокетам.

С уважением

1 Ответ

0 голосов
/ 16 января 2020

Я обошел эту проблему, добавив IP / MA C в список ARP

, используя

netsh interface ip add neighbors "Ethernet 3" "192.168.1.11" "00-1C-23-17-4A-CB"

Однако я хотел бы иметь возможность отключить его в python

привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...