ARP Service¶
Сервис низкоуровневого ARP-сканирования локальной сети.
Назначение:
Обнаружение активных узлов в пределах сетей хоста путём широковещательных ARP-запросов от имени выбранного интерфейса.
Помощь сервисам более высокого уровня (например, IPService) при проверке занятости адресов перед применением конфигураций.
Особенности реализации:
Определяет подключённые сети интерфейса через netifaces и строит CIDR для сканирования.
Формирует ARP-пакеты с помощью scapy (Ether/ARP) и отправляет их с таймаутом.
Добавляет локальный адрес интерфейса в результирующий список клиентов.
Требования/ограничения:
Для отправки ARP-кадров могут потребоваться повышенные привилегии или capability на сырой сокет.
- class services.arp_service.NetworkScanner(interface=None, translations: Translations = Depends(translations_dependency))[source]¶
Bases:
objectИнициализация сетевого сканера.
Предоставляет методы для сканирования сети с использованием ARP-запросов и вывода информации о клиентах.
- print_clients(clients)[source]¶
Выводит список адресов клиентов в формате таблицы.
- Args:
- clients (List[dict]): Список словарей с ключами “ip” и “mac”,
представляющих клиентов.
Выводит IP-адреса и MAC-адреса в отсортированном по IP порядке.
- scan_network(attempts=3, timeout=2)[source]¶
Сканирует сеть для обнаружения активных клиентов.
- Args:
- attempts (int, optional): Количество попыток отправки ARP-запросов.
По умолчанию 3.
- timeout (int, optional): Таймаут ожидания ответа в секундах.
По умолчанию 2.
- Returns:
- List[dict]: Список словарей с ключами “ip” и “mac”, представляющих
обнаруженных клиентов, включая локальные IP-адреса.
- Note:
Учитывает локальные IP-адреса интерфейса и удаляет дубликаты.