Написал русскую версию README

This commit is contained in:
saber-nyan
2020-03-10 21:32:10 +00:00
parent 3bdcaa60cf
commit 42e534df25

View File

@@ -1,6 +1,26 @@
<div align="center">
# Packmate
</div>
### [[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` -- перейти на первый стрим
<div align="right">
*desu~*
</div>