From 42e534df25805f104ad47be3832fc8d0a0bd6f18 Mon Sep 17 00:00:00 2001 From: saber-nyan Date: Tue, 10 Mar 2020 21:32:10 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=80=D1=83=D1=81=D1=81=D0=BA=D1=83=D1=8E=20=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=81=D0=B8=D1=8E=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 92 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 78 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 25822aa..f8bd290 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,26 @@ +
+ # Packmate +
+ +### [[EN](README_EN.md) | RU] +Утилита перехвата и анализа трафика для CTF. + +#### Фичи: +* Поддерживает текстовые и бинарные сервисы +* Умеет отображать совпадения паттернов в пакетах цветом + * Подстрока + * Регулярное выражение + * Бинарная подстрока (WIP) +* Умеет сохранять пакеты в избранное и отображать только избранные пакеты +* Работает с несколькими сервисами на разных портах +* Поддерживает навигацию по стримам с помощью горячих клавиш +* Конкатенирует смежные пакеты +* Разархивирует GZIP в HTTP на лету + +![Скриншот главного окна](Screenshot.png) ## Клонирование -Поскольку этот репозиторий содержит фронтенд как submodule, его необходимо клонировать так: +Поскольку этот репозиторий содержит фронтенд как git submodule, его необходимо клонировать так: ```bash git clone --recurse-submodules https://gitlab.com/binarybears_ctf/Packmate.git @@ -14,21 +34,65 @@ git pull # Забираем свежую версию мастер-репы и git submodule update --init --recursive ``` -## Сборка -В этом ПО используется Docker и docker-compose. В образ `packmate-app` пробрасывается сетевой интерфейс хоста, его название автоматически определяется в `./start.sh`. +## Подготовка +В этом ПО используется Docker и docker-compose. В образ `packmate-app` пробрасывается +сетевой интерфейс хоста, его название указывается переменной окружения (об этом ниже). -Так как невозможно использовать `links:` вместе с `network_mode: "host"` в docker-compose, `packmate-db` настроен на прослушивание порта 65001 с локальным ip. +`packmate-db` настроен на прослушивание порта 65001 с локальным IP. +При этом файлы БД не монтируются как volume, поэтому при пересоздании контейнера все стримы теряются. -Для сборки и запуска: +### Настройка +Программа берет основные настройки из переменных окружения, поэтому для удобства +можно создать env-файл. +Он должен называться `.env` и лежать в корневой директоии проекта. + +В файле необходимо прописать: ```bash -export PACKMATE_LOCAL_IP='192.168...' # IP хоста в перехватываемой сети -export PACKMATE_INTERFACE='eth0' # Сетевой интерфейс для перехвата пакетов - -# Дальше все экспорты опциональны -export PACKMATE_WEB_LOGIN='BinaryBears' # Имя пользователя для веб-интерфейса -export PACKMATE_WEB_PASSWORD='123456' # Пароль для веб-интерфейса - -docker-compose up --build +PACKMATE_INTERFACE=wlan0 # Интерфейс, на котором производится перехват трафика +PACKMATE_LOCAL_IP=192.168.1.124 # Локальный IP сервера на указанном интерфейсе +PACKMATE_WEB_LOGIN=SomeUser # Имя пользователя для web-авторизации +PACKMATE_WEB_PASSWORD=SomeSecurePassword # Пароль для web-авторизации ``` -После успешного запуска Packmate будет видно с любого хоста на порту `65000`. +### Запуск +После указания нужных настроек в env-файле, можно запустить приложение: +```bash +sudo docker-compose up --build -d +``` + +При успешном запуске Packmate будет видно с любого хоста на порту `65000`. + +### Начало работы +При попытке зайти в web-интерфейс впервые, браузер спросит логин и пароль, +который указывался в env-файле. +После успешного входа необходимо открыть настройки кликом по шестеренкам в правом +верхнем углу, затем ввести логин и пароль API, указанный при входе. + +![Скриншот настроек](Screenshot_Settings.png) + +Все настройки сохраняются в local storage и теряются только при смене IP-адреса или порта сервера. + +## Использование +Сначала нужно создать сервисы, находящиеся в игре. +Для этого вызывается диалоговое окно по нажатию кнопки `+` в навбаре, +где можно указать название и порт сервиса, а также дополнительные опции. + +Система начнет автоматически захватывать стримы и отображать их в сайдбаре. +При нажатии на стрим в главном контейнере выводится список пакетов; +между бинарным и текстовым представлением можно переключиться по кнопке в сайдбаре. + +Для удобного отлова флагов в приложении существует система паттернов. +Чтобы создать паттерн, нужно открыть выпадающее меню `Patterns` и нажать кнопку `+`, +затем указать нужный тип поиска, сам паттерн, цвет подсветки в тексте и прочее. + +### Горячие клавиши +Для быстрой навигации по стримам можно использовать следующие горячие клавиши: +* `Ctrl+Up` -- переместиться на один стрим выше +* `Ctrl+Down` -- переместиться на один стрим ниже +* `Ctrl+Home` -- перейти на последний стрим +* `Ctrl+End` -- перейти на первый стрим + +
+ +*desu~* +