2025-10-14 16:11:12 +05:00
|
|
|
|
# ARP Service
|
|
|
|
|
|
|
|
|
|
|
|
Сервис низкоуровневого ARP-сканирования локальной сети.
|
|
|
|
|
|
|
|
|
|
|
|
Назначение:
|
|
|
|
|
|
|
2025-10-21 09:20:50 +05:00
|
|
|
|
- Обнаружение активных узлов в пределах сетей хоста путём широковещательных ARP-запросов от имени выбранного интерфейса.
|
2025-10-14 16:11:12 +05:00
|
|
|
|
- Помощь сервисам более высокого уровня (например, IPService) при проверке занятости адресов перед применением конфигураций.
|
|
|
|
|
|
|
|
|
|
|
|
Особенности реализации:
|
|
|
|
|
|
|
|
|
|
|
|
- Определяет подключённые сети интерфейса через netifaces и строит CIDR для сканирования.
|
2025-10-21 09:20:50 +05:00
|
|
|
|
- Формирует ARP-пакеты с помощью scapy (Ether/ARP) и отправляет их с таймаутом.
|
2025-10-14 16:11:12 +05:00
|
|
|
|
- Добавляет локальный адрес интерфейса в результирующий список клиентов.
|
|
|
|
|
|
|
|
|
|
|
|
Требования/ограничения:
|
|
|
|
|
|
|
2025-10-21 09:20:50 +05:00
|
|
|
|
- Для отправки ARP-кадров могут потребоваться повышенные привилегии или capability на сырой сокет.
|
2025-10-14 16:11:12 +05:00
|
|
|
|
|
|
|
|
|
|
### *class* services.arp_service.NetworkScanner(interface=None, translations: Translations = Depends(translations_dependency))
|
|
|
|
|
|
|
|
|
|
|
|
Bases: `object`
|
|
|
|
|
|
|
|
|
|
|
|
Инициализация сетевого сканера.
|
|
|
|
|
|
|
|
|
|
|
|
Предоставляет методы для сканирования сети с использованием ARP-запросов и
|
|
|
|
|
|
вывода информации о клиентах.
|
|
|
|
|
|
|
|
|
|
|
|
#### print_clients(clients)
|
|
|
|
|
|
|
|
|
|
|
|
Выводит список адресов клиентов в формате таблицы.
|
|
|
|
|
|
|
|
|
|
|
|
* **Parameters:**
|
|
|
|
|
|
**clients** (*List* *[**dict* *]*) – Список словарей с ключами “ip” и “mac”,
|
|
|
|
|
|
представляющих клиентов.
|
|
|
|
|
|
|
|
|
|
|
|
Выводит IP-адреса и MAC-адреса в отсортированном по IP порядке.
|
|
|
|
|
|
|
|
|
|
|
|
#### scan_network(attempts=3, timeout=2)
|
|
|
|
|
|
|
|
|
|
|
|
Сканирует сеть для обнаружения активных клиентов.
|
|
|
|
|
|
|
|
|
|
|
|
* **Parameters:**
|
|
|
|
|
|
* **attempts** (*int* *,* *optional*) – Количество попыток отправки ARP-запросов.
|
|
|
|
|
|
По умолчанию 3.
|
|
|
|
|
|
* **timeout** (*int* *,* *optional*) – Таймаут ожидания ответа в секундах.
|
|
|
|
|
|
По умолчанию 2.
|
|
|
|
|
|
* **Returns:**
|
|
|
|
|
|
Список словарей с ключами “ip” и “mac”, представляющих
|
|
|
|
|
|
: обнаруженных клиентов, включая локальные IP-адреса.
|
|
|
|
|
|
* **Return type:**
|
|
|
|
|
|
List[dict]
|
|
|
|
|
|
|
|
|
|
|
|
#### NOTE
|
|
|
|
|
|
Учитывает локальные IP-адреса интерфейса и удаляет дубликаты.
|