новая версия старейшей поддерживаемой программы для подбора паролей (проект развивается с 1996 года). C выхода прошлой версии 1.8.0-jumbo-1 прошло 4.5 года, за которые было внесено более 6000 изменений (git commits) от более 80 разработчиков. Благодаря , включающей предварительную проверку каждого изменения (pull request) на многих платформах, в течение этого срока разработчики рекомендовали использовать , состояние которой поддерживалось стабильным несмотря на вносимые изменения. Основной код проекта под лицензией GPLv2+, а код некоторых компонентов под лицензией BSD.
Особенностью новой версии является появление поддержки FPGA (в дополнение к CPU, GPU и Xeon Phi). Для плат , включающих по 4 чипа FPGA и исходно использовавшихся в основном для майнинга Bitcoin, теперь реализованы 7 типов хешей паролей: bcrypt, классический descrypt (включая bigcrypt), sha512crypt, sha256crypt, md5crypt (включая Apache apr1 и AIX smd5), Drupal7 и phpass (используется, в частности, в WordPress). Некоторые из них реализованы на FPGA впервые.
Для bcrypt, достигнутая производительность в ~119k c/s при 2^5 итераций («$2b$05») с потребляемой мощностью около ~27 ватт существенно превосходит результаты для новейших GPU в расчете на плату, на цену оборудования и на ватт. Также поддерживаются из плат этого типа, что проверено вплоть до 16 плат (64 чипа FPGA), контролируемых с одного Raspberry Pi 2. Поддерживается обычная функциональность John the Ripper, включая все режимы подбора паролей и одновременную загрузку большого количества хешей.
Для ускорения работы реализовано применение маски (режим «—mask», в том числе в комбинации с другими режимами) и сравнение вычисленных хешей с загруженными на стороне FPGA. С точки зрения реализации, во многих из дизайнов (например, для Andra viktiga förändringar:
Другие важные изменения:
- Поддержка большого количества дополнительных типов хешей, шифров и т.п., включая как классические хеши паролей (например, от новых версий QNX), так и кошельки криптовалют, шифрованные архивы и шифрованные файловые системы (например, Bitlocker и FreeBSD geli), а также поддержку новых разновидностей форматов, поддерживаемых ранее (например, добавлена поддержка bcrypt-pbkdf для OpenBSD softraid) и многое другое. В общей сложности, добавлено 80 форматов на CPU и 47 на OpenCL. Общее количество форматов теперь 407 на CPU (или 262 не включая «dynamic» форматы, настраиваемые из файлов конфигурации) и 88 на OpenCL.
- Övergång från stöd för CUDA-språket till förmån för OpenCL, vilket inte hindrar full användning av GPU:er från NVIDIA (och till och med hjälper, tack vare fokus på utvecklingen och optimeringar på en implementation av varje format under GPU istället för två som tidigare).
- Stöd för nya SIMD-instruktionsuppsättningar – AVX2, AVX-512 (inklusive för andra generationen Xeon Phi) och MIC (för första generationen) – samt mer allsidig och fullständig användning av SIMD i implementationerna av många format, inklusive tillämpningen av tidigare stödda instruktionsuppsättningar ända tillbaka till AVX och XOP på x86(-64) och
NEON, ASIMD и AltiVec на ARM, Aarch64 и POWER, соответственно. - Många optimeringar för CPU och OpenCL, både för mer effektiv hantering av ett stort antal hash-algoritmer samtidigt (t.ex. testade lasten på 320 miljoner hash-algoritmer SHA-1 på GPU) och för att öka hastigheten på hash-beräkningarna. En del av dessa optimeringar är universella, andra omfattar olika delmängder av format, och många är specifika för enskilda format.
- (Авто-)настройка оптимальной буферизации проверяемых паролей на CPU («—tune=auto —verbosity=5») и оптимальных размерностей задания на OpenCL (включена по умолчанию), в том числе с учетом медленного выхода на полную рабочую частоту GPU серии NVIDIA GTX 10xx и новее. Использование реально загруженных хешей и реальной длины проверяемых паролей (когда она известна заранее) для такой авто-настройки.
- Добавление компилятора «динамических выражений», указываемых прямо на командной строке и реализующих новые гибридные типы хешей, например «—format=dynamic=’sha1(md5($p).$s)'», вычисляемые на CPU с использованием SIMD. В качестве компонентов таких выражений поддерживаются десятки быстрых хешей (от распространенных вроде MD5 до умеренно экзотических вроде Whirlpool), объединение подстрок, кодирование и декодирование, преобразование регистра символов, ссылки на пароль, соль, имя пользователя и строковые константы.
- Åtgärdande av oönskade avvikelser från hashcat, inklusive stöd för tidigare specifika hashcat-regler (wordlist rule commands), övergång till numrering av OpenCL-enheter från 1, tillämpning av samma längd på lösenord som standard (vanligtvis längd 7) vid prestandatest.
- Nya lägen för generering av kontrollerade lösenord (cracking modes), inklusive PRINCE från hashcat (skapar "fraser" genom att kombinera flera ord i ordning av totalt längd), subsets (välj lösenord med otillräckligt antal olika tecken, även om dessa tecken kom från en stor uppsättning möjliga) och hybrid external (tillåter externa lägen, beskrivna i konfigurering i C-liknande språk, att generera många kontrollerade lösenord baserat på varje grundläggande "ord" från ett annat läge). Dessutom, flera nya fördefinierade externa lägen.
- Ytterligare möjligheter att använda flera lägen samtidigt (ett ovanpå ett annat — stacking), liksom användning av regeluppsättningar (wordlist rules stacking).
- Förbättringar av masklägen (gradvis utsträckning av masken inom angivna längdgränser, tillämpning av masken på OpenCL-enheten eller FPGA-kortet) och single crack (förnuftigt beteende på enheter som beräknar ett stort antal hash samtidigt, vilket tidigare i detta läge inte hade tillräckligt med kontrollerade lösenord, samt begränsningar på minnesanvändning).
- Många förbättringar av stöd för Unicode och andra kodningar i olika delsystem.
- Många förbättringar av programmen *2john (konverterar filer av olika format för
användning med john), särskilt wpapcap2john (bearbetar WiFi-trafik). - Många nya alternativ för kommandoraden, inställningar i john.conf, konfigurationsalternativ och de nya funktionerna kopplade till dem, av vilka långt ifrån alla har nämnts här.
- Förbättring av kodkvaliteten genom inbyggt stöd för debug-builds med AddressSanitizer (tidigare) och UndefinedBehaviorSanitizer (tillagd), införande av inbyggda fuzzers för format (inom ramen för GSoC 2015), och tillämpning av kontinuerlig integration (bygge för dussintals kombinationer av operativsystem och kompilator och testning av korrekt stöd för alla format).
Källa: opennet.ru
