Найти в Дзене
Программируем сканер локальной сети

Программируем сканер локальной сети

сканер локальной сети шаг за шагом
подборка · 7 материалов
185 читали · 5 лет назад
Программируем сканер локальной сети. Часть 7
Сегодня мы произведем рефакторинг кода в целях его сокращения. Также добавим пользователю возможность вводить ключи с командной строки. Нам этом мы завершим разработку сетевого сканера. Рефа́кторинг (англ. refactoring), или перепроектирование кода, переработка кода, равносильное преобразование алгоритмов — процесс изменения внутренней структуры программы. в 3-5 строках у нас создаются и объединяются переменные. Объединим эти три строки и присвоим значение переменной broadcast. Соответсвующим образом изменим строку 5...
160 читали · 5 лет назад
Программируем сканер локальной сети. Часть 6
Наш скрипт уже умеет получать, обрабатывать и выводить необходимые нам данные. Сейчас займемся тем, что сделаем вывод более удобочитаемым. Уберем информацию о том, сколько пакетов было отправлено и на сколько из них был получен ответ. Для этого в srp() используется параметр verbose. Установим его в значение verbose = False answer_yes = scapy.all.srp(arp_request_broadcast, timeout=1, verbose = False)[0] Делаем схожую шапку с netdiscover : print ('IP-Adress\t\t\tMAC-Adress\n----------------------------------------------')...
179 читали · 5 лет назад
Программируем сканер локальной сети. Часть 5
На данный момент наш скрипт умеет составлять и собирать ARP-запросы, отправлять их на все возможные ip-адреса локальной сети, а также захватывать от них ответы. Он запоминает в один список адреса, от которых мы получили ответ и в другой список - не занятые ip-адреса. Однако помимо нужных нам данных - мы получаем и сохраняем много не нужных пользователю данных. Все эти данные нужны нам в процессе разработки скрипта, для того чтобы понимать как происходит процесс. Пользователя же интересуют лишь конкретные ip-адреса и MAC-адреса устройств, которые находятся на данный момент в сети...
298 читали · 5 лет назад
Программируем сканер локальной сети. Часть 4
Доброго время суток, уважаемый читатель! На данный момент мы собрали пакеты-запросы для отправки на широковещательный адрес. Сейчас мы разберемся как отправлять эти пакеты, а также как принимать и обрабатывать ответы. Для того, чтобы отправить пакет, в scapy предусмотрены функции sr() и srp(). sr() в нашем конкретном примере использовать не получиться, т.к адрес широковещательного канала в Ether() мы прописали вручную, а sr() этого не позволяет. Поэтому используем srp() : scapy.all.srp(arp_request_broadcast)...
580 читали · 5 лет назад
Программируем сканер локальной сети. Часть 3
В прошлой части мы сформировали ARP-запрос, который спрашивает у устройств сети – «Кто обладает ip-адресом 192.168.0.1». Сейчас нам нужно написать код, отвечающий за того, куда мы будем отправлять этот запрос. Как мы уже выяснили обмен данными между устройствами в локальной сети производится посредством MAC-адресов устройств, а не посредством их IP-адресов. MAC-адреса источника и адреса назначения прописываются в той части запроса, который относится к Ethernet. Поэтому нам необходимо создать Ethernet-фрейм и отправить его на широковещательный адрес...
971 читали · 5 лет назад
Программируем сканер локальной сети. Часть 2
В первой части мы создали простейший вариант сканера локальной сети, однако его вывод значительно отличается от вывода netdiscover. Сейчас мы глубже копнем в модуль scapy и посмотрим в каком виде посылаются ARP-запросы, какие поля данных при этих запросах мы можем использовать. Создаем экземпляр ARP-запроса мы можем получить с помощью метода модуля scapy - scapy.all.ARP(). Применив функцию summary() мы увидим, как выглядит сам ARP-запрос: summary() выводит нам следующее: Т.е. по ARP не форматированный экземпляр спрашивает: «who has 0...