
Графоориентированный визуализатор сетевого трафика для захвата в реальном времени и воспроизведения PCAP с диффингом контрольных точек, трассировкой путей и фильтрами отображения в стиле Wireshark для анализа безопасности.
PacMap — это визуализатор сетевого трафика, ориентированный на графы, для захвата в реальном времени и воспроизведения PCAP. Он помогает увидеть, что изменилось, что является шумным и что стоит проверить в первую очередь.
Думайте о нём как о Git для сетевого поведения: снимки состояния, сравнение и визуальное воспроизведение состояния сети.

PacMap поддерживает два режима работы:
.pcap или .pcapng и воспроизведение потока пакетов с течением времени.Из корня репозитория:
python3 -m venv venv
source venv/bin/activate
pip install websockets scapy
npm install --prefix client
В Windows создайте и активируйте venv, используя обычный рабочий процесс Python, затем установите те же пакеты. Захват пакетов в Windows требует Npcap.
Запустите PacMap из корня репозитория:
npm start -- --iface en0
Примеры распространённых интерфейсов:
en0eth0wlan0Откройте:
http://127.0.0.1:5176
Затем используйте панель управления, чтобы начать захват в реальном времени.
Для захвата сырых пакетов обычно требуются повышенные локальные привилегии. На macOS/Linux:
sudo npm start -- --iface en0
В Windows запускайте терминал от имени администратора.
Откройте веб-приложение, переключите источник на PCAP Replay и загрузите файл .pcap или .pcapng. Затем используйте:
Воспроизведение выполняется в браузере и не требует работающего сервера захвата Python.
Воспроизведение включает панели исследования для диалогов, конечных точек, разбора протоколов, разрешения имён и временной шкалы ввода/вывода.
Ограничения файлов: 100 МБ и 100 000 пакетов. Неподдерживаемые кадры пропускаются, и их количество отображается в интерфейсе.
Текущая поддержка воспроизведения:
.pcap и базовые .pcapngОба режима — захват в реальном времени и воспроизведение — поддерживают строку фильтра отображения в стиле Wireshark. Введите фильтр и нажмите Enter для применения; очистите поле и нажмите Enter для его удаления.
Поддерживаемый синтаксис:
tcp udp dns http arp
ip.addr == 192.168.1.10
ip.src == 10.0.0.1
ip.dst == 8.8.8.8
tcp.port == 443
udp.port == 53
port == 80
ip.src == 10.0.0.1 && ip.dst == 8.8.8.8
Составные фильтры (&&) объединяют два фильтра полей. Применение фильтра сужает граф до соответствующих узлов и рёбер; его очистка восстанавливает полное представление для текущего окна захвата.
Составной фильтр ip.src == X && ip.dst == Y активирует трассировку пути. PacMap запускает BFS по всему захвату, чтобы найти цепочку переходов между двумя конечными точками. Под панелью управления появляется панель, показывающая каждый переход с количеством пакетов и байтов на ребро, а промежуточные узлы выделяются на графе.
Контрольные точки создают снимок текущего состояния сети — узлы, рёбра, объёмы трафика — в определённый момент времени.
Контрольные точки сохраняются в localStorage под ключом pacmap_checkpoints (до 50 записей).
Браузеры не могут напрямую перехватывать сетевой трафик хоста или запускать привилегированный захват пакетов. PacMap использует локальный вспомогательный WebSocket-сервер на Python с Scapy для захвата в реальном времени, затем передаёт сводки пакетов в React-приложение по адресу:
ws://127.0.0.1:8765
Воспроизведение PCAP работает иначе: браузер читает загруженный файл и повторно использует ту же визуализацию графа без необходимости прямого доступа к пакетам.
Только фронтенд:
cd client
npm install
npm run dev
Сборка для продакшена:
npm run build
Только сервер захвата:
source venv/bin/activate
python3 server.py --iface en0
server.py не запущен или порт WebSocket недоступен.ping 8.8.8.8, DNS-запросами или другой сетевой активностью.