В первой части мы создали простейший вариант сканера локальной сети, однако его вывод значительно отличается от вывода netdiscover. Сейчас мы глубже копнем в модуль scapy и посмотрим в каком виде посылаются ARP-запросы, какие поля данных при этих запросах мы можем использовать. Создаем экземпляр ARP-запроса мы можем получить с помощью метода модуля scapy - scapy.all.ARP(). Применив функцию summary() мы увидим, как выглядит сам ARP-запрос: summary() выводит нам следующее: Т.е. по ARP не форматированный экземпляр спрашивает: «who has 0...
В прошлой части мы сформировали ARP-запрос, который спрашивает у устройств сети – «Кто обладает ip-адресом 192.168.0.1». Сейчас нам нужно написать код, отвечающий за того, куда мы будем отправлять этот запрос. Как мы уже выяснили обмен данными между устройствами в локальной сети производится посредством MAC-адресов устройств, а не посредством их IP-адресов. MAC-адреса источника и адреса назначения прописываются в той части запроса, который относится к Ethernet. Поэтому нам необходимо создать Ethernet-фрейм и отправить его на широковещательный адрес...