GitHub mirror: Av0idD4rk/packmate
Go to file
2020-03-13 00:40:52 +03:00
frontend@6883d5566b Переписал упаковку в Docker, обновил фронтэнд 2020-03-09 21:17:04 +03:00
gradle/wrapper Переезд на java 13 2020-03-11 18:56:46 +03:00
src Улучшение производительности 2020-03-13 00:40:52 +03:00
.gitignore Убрал хардкод, добавил скриншот для ридми 2020-03-10 23:39:16 +03:00
.gitmodules Сменил remote у фронтенда 2019-11-21 17:08:24 +00:00
build.gradle Переезд на java 13 2020-03-11 18:56:46 +03:00
docker-compose.yml Переезд на java 13 2020-03-11 18:56:46 +03:00
Dockerfile_app Переезд на java 13 2020-03-11 18:56:46 +03:00
Dockerfile_db Переписал упаковку в Docker, обновил фронтэнд 2020-03-09 21:17:04 +03:00
gradlew Добавлен gradle wrapper 2019-11-20 22:19:59 +03:00
gradlew.bat Добавлен gradle wrapper 2019-11-20 22:19:59 +03:00
postgresql.conf Added frontend as submodule, tuned networks 2019-11-18 17:49:42 +03:00
README_EN.md Шаблон английской версии README 2020-03-10 21:33:49 +00:00
README.md Синхронизация таймера и потока pcap 2020-03-11 02:11:41 +03:00
Screenshot_Settings.png Скриншот настроек 2020-03-11 00:13:34 +03:00
Screenshot.png Очистил скриншот 2020-03-10 23:53:20 +03:00
settings.gradle Initial commit 2019-04-26 02:21:44 +03:00
update_db_config.sh Added frontend as submodule, tuned networks 2019-11-18 17:49:42 +03:00

Packmate

[EN | RU]

Утилита перехвата и анализа трафика для CTF.

Фичи:

  • Поддерживает текстовые и бинарные сервисы
  • Умеет отображать совпадения паттернов в пакетах цветом
    • Подстрока
    • Регулярное выражение
    • Бинарная подстрока (WIP)
  • Умеет сохранять пакеты в избранное и отображать только избранные пакеты
  • Работает с несколькими сервисами на разных портах
  • Поддерживает навигацию по стримам с помощью горячих клавиш
  • Конкатенирует смежные пакеты
  • Разархивирует GZIP в HTTP на лету

Скриншот главного окна

Клонирование

Поскольку этот репозиторий содержит фронтенд как git submodule, его необходимо клонировать так:

git clone --recurse-submodules https://gitlab.com/binarybears_ctf/Packmate.git

# Или, на старых версиях git
git clone --recursive https://gitlab.com/binarybears_ctf/Packmate.git

Если репозиторий уже был склонирован без подмодулей, необходимо выполнить:

git pull  # Забираем свежую версию мастер-репы из gitlab
git submodule update --init --recursive

Подготовка

В этом ПО используется Docker и docker-compose. В образ packmate-app пробрасывается сетевой интерфейс хоста, его название указывается переменной окружения (об этом ниже).

packmate-db настроен на прослушивание порта 65001 с локальным IP.
При этом файлы БД не монтируются как volume, поэтому при пересоздании контейнера все стримы теряются.

Настройка

Программа берет основные настройки из переменных окружения, поэтому для удобства можно создать env-файл.
Он должен называться .env и лежать в корневой директоии проекта.

В файле необходимо прописать:

PACKMATE_INTERFACE=wlan0  # Интерфейс, на котором производится перехват трафика
PACKMATE_LOCAL_IP=192.168.1.124  # Локальный IP сервера на указанном интерфейсе
PACKMATE_WEB_LOGIN=SomeUser  # Имя пользователя для web-авторизации
PACKMATE_WEB_PASSWORD=SomeSecurePassword  # Пароль для web-авторизации

Запуск

После указания нужных настроек в env-файле, можно запустить приложение:

sudo docker-compose up --build -d

При успешном запуске Packmate будет видно с любого хоста на порту 65000.

Начало работы

При попытке зайти в web-интерфейс впервые, браузер спросит логин и пароль, который указывался в env-файле.
После успешного входа необходимо открыть настройки кликом по шестеренкам в правом верхнем углу, затем ввести логин и пароль API, указанный при входе.

Скриншот настроек

Все настройки сохраняются в local storage и теряются только при смене IP-адреса или порта сервера.

Использование

Сначала нужно создать сервисы, находящиеся в игре.
Для этого вызывается диалоговое окно по нажатию кнопки + в навбаре, где можно указать название и порт сервиса, а также дополнительные опции.

Система начнет автоматически захватывать стримы и отображать их в сайдбаре.
При нажатии на стрим в главном контейнере выводится список пакетов; между бинарным и текстовым представлением можно переключиться по кнопке в сайдбаре.

Для удобного отлова флагов в приложении существует система паттернов.
Чтобы создать паттерн, нужно открыть выпадающее меню Patterns и нажать кнопку +, затем указать нужный тип поиска, сам паттерн, цвет подсветки в тексте и прочее.

Горячие клавиши

Для быстрой навигации по стримам можно использовать следующие горячие клавиши:

  • Ctrl+Up -- переместиться на один стрим выше
  • Ctrl+Down -- переместиться на один стрим ниже
  • Ctrl+Home -- перейти на последний стрим
  • Ctrl+End -- перейти на первый стрим

desu~