Multicat - это распределенная система для перебора хешей, использующая мощность нескольких GPU на нескольких хостах. Она включает в себя три компонента: Клиент, Сервер и Агент, работающие вместе для эффективного распределения и выполнения задач по перебору хешей.
Для начала работы с multicat необходимо выполнить несколько шагов по подготовке и настройке окружения.
- Docker
- docker-compose
- Клонирование репозитория
Склонируйте репозиторий multicat на вашу машину с помощью Git:
git clone https://git.t00x.com/Tools/multicat.git
cd multicat
- Настройка сети Docker
Чтобы микросервисы могли общаться друг с другом, необходимо создать Docker сеть:
docker network create multicat
- Запуск с помощью Docker
Для запуска отдельного компанента системы multicat перейдите в директорию agent
/client
/server
и выполните следующую команду:
docker-compose up
Если вы разработчик, используйте файл docker-compose.dev.yml
:
docker-compose -f ./docker-compose.dev.yml up
- Настройка для разных типов GPU
Клиент multicat включает в себя hashcat, который поддерживает работу с разными типами GPU. Если у вас GPU, отличный от предустановленного, настройте переменную окружения HASHCAT_TYPE_GPU
в файле .env
для указания типа вашего GPU. Поддерживаемые значения:
intel cpu
intel gpu
pocl
all-gpu
cuda
- Клиент (Client): Запускает hashcat с необходимыми wordlists и правилами для обработки чанков хешей.
- Сервер (Server): Распределяет нагрузку и хеши между клиентами, оптимизируя процесс в зависимости от мощности каждого клиента.
- Агент (Agent): Телеграм-бот, управляющий процессами, принимает GPG файлы и расшифровывает их.
- Агент получает GPG файл от пользователя через Телеграм, расшифровывает его и извлекает хеши. Затем он отправляет хеши на Сервер.
- Сервер анализирует полученные хеши, оценивает нагрузку и мощность подключенных Клиентов, и на основе этого оптимально распределяет хеши по чанкам.
- Сервер отправляет чанки хешей на Клиенты вместе с необходимыми wordlists и правилами (определенными в YAML и валидируемыми через Pydantic).
- Клиенты выполняют брут хешей с использованием hashcat и возвращают результаты на Сервер.
- Python: Основной язык программирования.
- YAML и Pydantic: Для определения и валидации правил.
- Celery: Для асинхронной работы и распределения задач между Клиентами.
- PostgreSQL (pgsql): Для хранения данных о хешах, клиентах, состоянии задач и результатов.
-
Агент (Телеграм-бот):
- Разработан на
aiogram
. - Принимает и расшифровывает GPG файлы.
- Передает хеши на сервер для дальнейшей обработки.
- Разработан на
-
Сервер:
- Управляет распределением задач с помощью
Celery
. - Анализирует мощность клиентов и нагрузку для оптимального распределения хешей.
- Использует
PostgreSQL
для хранения информации о клиентах, задачах и результатах. - Отправляет задачи на клиенты и принимает результаты.
- Управляет распределением задач с помощью
-
Клиент:
- Получает чанки хешей и информацию для запуска hashcat.
- Выполняет брут хешей и отправляет результаты обратно на сервер.
-
Система контроля и управления задачами:
- Использует
Celery
для асинхронного выполнения задач и распределения нагрузки. - Позволяет масштабировать систему, добавляя дополнительных клиентов без необходимости изменения архитектуры.
- Использует
┌────────────┐
│ Client │
│ Worker ◄────┐
│ │ │
│ GPU2 │ │
└────────────┘ │
│
┌────────────┐ │
│ Client │ │
│ Worker ◄────┤
│ │ │
│ GPU1 │ │
└────────────┘ │
│
┌────────────┐ │
│ Client │ │
│ Worker ◄────┤
│ │ │
│ GPU0 │ │
└────────────┘ │
│
┌──┴────────────────────────┐
│ Server │
│ Worker │
│ │
│ │
└──────────▲────────────▲───┘
│ │
│ │
│ │
┌──────────┴─────┐ ┌──┴─────────────┐
│ Agent │ │ Agent │
│ TG bot │ │ Matrix bot/ │
│ │ │ Cli/etc │
│ │ │ │
└────────────────┘ └────────────────┘
- Определение размера чанка основывается на кол-ве хешей (
Keyspace
) и производительности (Performance
). - Размер чанка =
Keyspace / Overall Performance
, гдеOverall Performance
— это суммарная производительность всех клиентов.