Awesome
Cherry
Cherry - это инструмент балансировки нагрузки между удаленными узлами, выполняющими перебор паролей по словарю. С его помощью можно объединять несколько машин в единую сеть и распределять нагрузку в зависимости от производительности каждой из них. На данный момент поддерживается только алгоритмы WPA/WPA2 и программы pyrit, hashcat, oclHashcat, aircrack-ng. В дальнейшем планируется расширить спектр поддерживаемых алгоритмов.
Принцип балансировки нагрузки заключается в разделении общего словаря на блоки (порции), которые последовательно раздаются клиентам сети. Благодаря этому принципу возможно динамическое подключение/отключение узлов. Сервером сети может являться как отдельный хост, так и один из узлов сети, выполняющий перебор паролей. Сразу после подключения к серверу узел сверяет контрольные суммы своего словаря со словарем сервера, выполняет тест производительности и в зависимости от его результата запрашивает первый для него блок. Сервер, получив данный запрос, определяет размерность блока, а именно начальную и конечную позицию в словаре, и отправляет данные в ответ. Если на узле уже загружена копия общего словаря, то он начинает перебор паролей, уведомляя сервер о своей скорости и количестве обработанных паролей с определенным интервалом. В противном случае узел называется пассивным и перед началом перебора паролей загружает свой блок с сервера. Такие блоки тоже называются пассивными и выделяются с конца, а не с начала словаря. Активные узлы, т.е. имеющие локальную копию словаря, имеют больший приоритет при распределении блоков, чем пассивные.
Узлы также бывают синхронными и асинхронными: синхронные работают с блоками и выполняют перебор паролей по ним, асинхронные же выполняют перебор по своему словарю независимо от общего словаря и других узлов.
Каждый узел взаимодействует исключительно с сервером и не имеет никакой информации о существовании других узлов. Поэтому в случае обнаружения искомого пароля узел отправляет уведомление на сервер, сервер рассылает широковещательное сообщение всем узлам о приостановке перебора, затем отправляет всем предлагаемый пароль на проверку. Если все узлы подтверждают правильность пароля, то задача считается выполненной.
Системные требования и запуск
- Любой дистрибутив на ядре Linux, например, Ubuntu. На данный момент программа разрабатывается исключительно для него. В планах поддержка OS X и Windiws.
- Node.js или io.js. Cherry написана на JavaScript, поэтому понадобится интерпретатор.
- В режиме узла требуется наличие одной из данных программ: pyrit, hashcat или oclHashcat, aircrack-ng.
Для запуска Cherry необходимо клонировать данный репозиторий в локальную папку. Изначально конфигурационные файлы master.conf, отвечающий за режим сервера, и worker.conf, отвечающий за ражим узла, пусты. Все настройки вместе с описанием можно найти в файлах master.conf.defaults и worker.conf.defaults.
Запуск программы осуществляется следующим образом:
# В режиме сервера
./cherry.js serve --capturefile <файл handshake> -d <словарь> -p <порт>
# В режиме узла
./cherry.js connect -i <IP сервера> -p <порт сервера>
# Справка
./cherry.js --help
Дальнейшая информация будет публиковаться по ходу разработки и при наличии свободного времени. Документация по протоколу обмена данными скоро будет доступна в папке doc.