
Packet-Sniffer v4.0.0
Сниффер сетевых пакетов на основе raw-сокетов, который захватывает и разбирает TCP/IP-пакеты с сетевых интерфейсов для анализа безопасности и образовательных целей.
RootWire
Монитор сетевого трафика для GNU/Linux — ранее известный как Packet-Sniffer. Кадры захватываются с сетевого интерфейса через raw-сокет, декодируются слой за слоем с помощью библиотеки NETProtocols и выводятся в реальном времени, записываются в pcap или передаются потоком в формате JSON:
[>] Frame #4 at 15:42:07 (wlan0, 74 bytes)
[+] Ethernet 3c:7c:3f:1a:be:22 -> 9c:1e:95:aa:01:5f
EtherType: IPv4
[+] IPv4 192.168.1.96 -> 142.250.79.78
TTL: 64 | Flags: Don't fragment (DF) | Total Length: 60 | ID: 39754
Protocol: TCP | Checksum: 0x2b51
[+] TCP 51888 -> 443
Flags: 0x002 (SYN) | Seq: 3598801521 | Ack: 0
Window: 64240 | Checksum: 0x2008 | Options: 20 bytes
Декодер охватывает Ethernet, ARP, IPv4 (опции и фрагменты), IPv6 включая заголовки расширения (отчёт MLD отображает полную цепочку Hop-by-Hop), ICMPv4/v6, TCP (смещения полезной нагрузки с учётом опций) и UDP. Повреждённые или усечённые кадры диагностируются вместо того, чтобы прерывать захват, неизвестные протоколы корректно завершают цепочку, а ограничение в 16 слоёв не позволяет искусственным стекам заголовков расширения усиливать нагрузку — захват переживает всё, что доставляет сеть.
Установка
pipx install rootwire # или: uv tool install rootwire
Или запустите из клона с помощью uv:
git clone https://github.com/EONRaider/RootWire.git
cd RootWire
uv sync
Использование
rootwire [-h] [-i INTERFACE] [-r FILE] [-w FILE] [--json] [-d] [--version]
options:
-i, --interface интерфейс для захвата кадров (по умолчанию: все интерфейсы)
-r, --read FILE воспроизвести кадры из классического pcap-файла вместо живого
захвата (права не требуются)
-w, --write FILE также записывать каждый захваченный кадр в классический pcap-файл
--json один объект NDJSON на кадр в stdout (баннер и
статистика остаются в stderr): можно передавать напрямую в jq
-d, --data также отображать необработанную полезную нагрузку каждого кадра
(игнорируется с --json)
Статистика захвата — кадры, байты, кадры/с, счётчики повреждённых/усечённых кадров, итоги по протоколам — выводится в stderr по завершении захвата. Некоторые любимые комбинации:
sudo rootwire -i eth0 -w session.pcap # захват с сохранением доказательств
rootwire -r session.pcap # просмотр позже, без root
rootwire -r session.pcap --json | jq . # машинно-читаемый анализ
Живой захват требует raw-сокета, что в Linux означает root
(sudo rootwire -i eth0) или предоставление интерпретатору
возможности CAP_NET_RAW. Воспроизведение файлов с -r никогда не
требует привилегий. Из клона запускайте как sudo .venv/bin/python -m rootwire.
Как это работает
capture.py выдаёт необработанные кадры из сокета AF_PACKET (или
pcap.py воспроизводит их из файла — оба источника
взаимозаменяемы); decoder.py проходит по цепочке протоколов каждого кадра,
формируя неизменяемый DecodedFrame; выходы — экранный рендерер, поток NDJSON,
pcap-запись, сборщик статистики — потребляют каждый кадр через один небольшой
интерфейс Output. Полное описание, включая то, почему память остаётся
стабильной при длительных захватах и как добавить выход,
находится в ARCHITECTURE.md.
Всё, кроме raw-сокета, работает в любой ОС, поэтому набор тестов — который включает корпус из 65 кадров реального захваченного трафика, воспроизводимого через весь конвейер — не требует ни root, ни Linux:
uv run pytest
План развития
- Фильтрация BPF (фильтры захвата на стороне ядра)
- Ядерные временные метки (
SO_TIMESTAMPNS) и сервисное использование с чистым завершением по SIGTERM - Отображение проверки контрольных сумм (библиотека уже их вычисляет)
Правовое уведомление
Использование кода, содержащегося в этом репозитории, частично или полностью, для воздействия на цели без предварительного взаимного согласия является незаконным. Ответственность за соблюдение всех применимых местных, государственных и федеральных законов лежит на конечном пользователе.
Разработчики не несут ответственности и не отвечают за неправомерное использование или ущерб, причинённый любым кодом, содержащимся в этом репозитории, в любом случае, если случайно или иным образом он будет использован угрозой или несанкционированным лицом как средство для компрометации безопасности, конфиденциальности, целостности и/или доступности систем и связанных с ними ресурсов. В этом контексте термин «компрометация» далее понимается как использование эксплуатации известных или неизвестных уязвимостей, присутствующих в указанных системах, включая, но не ограничиваясь, реализацией средств контроля безопасности, осуществляемой человеком или электронными средствами.
Использование этого кода только одобряется разработчиками в тех случаях, которые непосредственно связаны с образовательными средами или авторизованными тестами на проникновение, чья заявленная цель состоит в поиске и устранении уязвимостей в системах, ограничивая их подверженность компрометациям и эксплойтам, применяемым вредоносными агентами, как определено в их соответствующих моделях угроз.