Перехват пакетов DHCP на Python с помощью Scapy

Перехват пакетов DHCP Python Scapy

DHCP — это сетевой протокол, который позволяет клиентам, подключенным к сети, получать информацию о конфигурации TCP/IP (например, частный IP-адрес) от DHCP-сервера. В статье покажу, как перехватить пакеты DHCP на Python с помощью библиотеки Scapy.

Еще по теме: Истощение и подмена DHCP-сервера

Перехват пакетов DHCP на Python с помощью Scapy

Сервер DHCP (точка доступа, маршрутизатор или сервер) динамически назначает IP-адрес и другие параметры конфигурации каждому устройству, подключенному к сети.

Протокол DHCP использует протокол UDP для общения между сервером и клиентами. Он реализуется с помощью двух портов: порт 67 UDP для сервера и порт 68 UDP для клиента.

Статья в образовательных целях, для обучения этичных хакеров. При написании статьи использовались личные устройства автора. Несанкционированный взлом сетей и манипуляции с трафиком являются незаконными и рассматривается как уголовное преступление. Ни редакция spy-soft.net, ни автор не несут ответственности за ваши незаконные действия.

Мы создадим простой слушатель DHCP с использованием библиотеки Scapy на Python. Другими словами, мы сможем прослушивать пакеты DHCP в сети и перехватывать важную информацию при подключении устройства к сети.

Для начала, нужно установить Scapy:

Если вы знакомы с Scapy, вы, возможно, уже знаете о функции sniff() в Scapy, которая отвечает за прослушивание любого типа пакетов, которые можно отслеживать. Чтобы убрать другие пакеты, которые нас не интересуют, просто используем параметр фильтрации в функции sniff():

В функции listen_dhcp() вызываем функцию sniff() и передаем функцию print_packet(), которую определим как обратный вызов, выполняемый при прослушивании и соответствии пакета параметрам фильтрации.

Сопоставляем пакеты UDP с портом 67 или 68 в их атрибутах для фильтрации DHCP.

Определим функцию print_packet():

Сначала извлекаем MAC-адрес из атрибута src слоя Ether.

Затем, если в пакете есть параметры DHCP, перебираем их и извлекаем requested_addr (который представляет собой запрошенный IP-адрес), hostname (имя хоста запрашивающего) и vendor_class_id (идентификатор клиента DHCP-поставщика). После этого получаем текущее время и отображаем детали.

Начнем сниффинг:

Вот мой результат, когда я попробовал подключиться с тремя разными устройствами:

Теперь у вас есть быстрый сниффер DHCP на Python, который вы можете расширить. Я предлагаю вывести переменную dhcp_options в функции print_packet(), чтобы посмотреть, как выглядит этот объект.

ПОЛЕЗНЫЕ ССЫЛКИ:

Ban32

Хакер-самоучка, который может взломать тостер и настроить его на отправку вам утреннего приветствия в коде Морзе.

Добавить комментарий