Особливістю нової версії є поява підтримки FPGA (на додаток до CPU, GPU та Xeon Phi). Для плат
Для bcrypt, досягнута продуктивність в ~119k c/s при 2^5 ітерацій («$2b$05») із споживаною потужністю близько ~27 ват істотно перевершує результати нових GPU для розрахунку плату, ціну устаткування й на ват. Також підтримуються
Для прискорення роботи реалізовано застосування маски (режим «mask», у тому числі в комбінації з іншими режимами) та порівняння обчислених хешей із завантаженими на стороні FPGA. З погляду реалізації, у багатьох з дизайнів (наприклад, для
Інші важливі зміни:
- Підтримка великої кількості додаткових типів хешів, шифрів тощо, включаючи як класичні хеші паролів (наприклад, від нових версій QNX), так і гаманці криптовалют, шифровані архіви та шифровані файлові системи (наприклад, Bitlocker та FreeBSD geli), а також підтримку нових різновидів форматів, що підтримувалися раніше (наприклад, додана підтримка bcrypt-pbkdf для OpenBSD softraid) та багато іншого. Загалом додано 80 форматів на CPU і 47 на OpenCL. Загальна кількість форматів тепер 407 на CPU (або 262 не включаючи "dynamic" формати, що налаштовуються з конфігураційних файлів) і 88 на OpenCL.
- Відмова від підтримки мови CUDA на користь OpenCL, що нітрохи не заважає повноцінному використанню GPU від NVIDIA (і навіть допомагає завдяки фокусуванню розробки та оптимізації на одну реалізацію кожного формату під GPU замість двох реалізацій раніше).
- Підтримка нових наборів інструкцій SIMD - AVX2, AVX-512 (у тому числі для другого покоління Xeon Phi) і MIC (для першого покоління) - а також більш універсальне та повне використання SIMD в реалізаціях багатьох форматів, включаючи застосування наборів інструкцій, що підтримувалися раніше, аж до AVX і XOP на x86(-64) та
NEON, ASIMD та AltiVec на ARM, Aarch64 та POWER, відповідно. - Численні оптимізації для CPU та OpenCL, як для більш ефективної роботи з великою кількістю хешів одночасно (наприклад, перевірялося завантаження 320 мільйонів хешів SHA-1 на GPU), так і для підвищення швидкості обчислення хешів. Частина з цих оптимізацій універсальна, частина охоплює різні підмножини форматів, а багато специфічні для окремих форматів.
- (Авто-) налаштування оптимальної буферизації паролів, що перевіряються на CPU («—tune=auto —verbosity=5») та оптимальних розмірностей завдання на OpenCL (включена за замовчуванням), у тому числі з урахуванням повільного виходу на повну робочу частоту GPU серії NVIDIA GTX 10xx та новіший. Використання реально завантажених хешів і реальної довжини паролів, що перевіряються (коли вона відома заздалегідь) для такої авто-настройки.
- Додавання компілятора «динамічних виразів», що вказуються прямо на командному рядку і реалізують нові гібридні типи хешів, наприклад «format=dynamic='sha1(md5($p).$s)'», обчислювані на CPU з використанням SIMD. Як компоненти таких виразів підтримуються десятки швидких хешів (від поширених на кшталт MD5 до помірно екзотичних на кшталт Whirlpool), об'єднання підрядків, кодування та декодування, перетворення регістру символів, посилання на пароль, сіль, ім'я користувача та строкові константи.
- Усунення небажаних відмінностей від hashcat, у тому числі підтримка раніше специфічних для hashcat правил (wordlist rule commands), перехід на нумерацію OpenCL пристроїв з одного, застосування за умовчанням тих самих довжин паролів (зазвичай довжина 1) при тестах продуктивності.
- Нові режими генерування паролів (cracking modes), включаючи PRINCE з hashcat (формує «фрази», об'єднуючи кілька слів у порядку зростання сумарної довжини), subsets (підбирає паролі з недостатньою кількістю різних символів, навіть якщо ці символи прийшли з великого набору можливих) і hybrid external (дозволяє зовнішнім режимам, що описуються у файлах конфігурації Сі-подібною мовою, формувати багато паролів, що перевіряються на основі кожного базового «слова», що надійшов від іншого режиму). Також кілька нових зумовлених зовнішніх режимів.
- Додаткові можливості щодо використання кількох режимів одночасно (один поверх іншого — stacking), а також щодо такого використання наборів правил (wordlist rules stacking).
- Удосконалення режимів mask (поступове розтягування маски у вказаному діапазоні довжин, застосування маски на стороні OpenCL-пристрою або плати FPGA) та single crack (розумна поведінка на пристроях, що обчислюють велику кількість хешей паралельно, на що раніше в цьому режимі не вистачало паролів, що перевірялися, а) також обмеження витрат пам'яті).
- Багато покращень підтримки Unicode та інших кодувань у різних підсистемах.
- Багато покращень програм *2john (перетворюють файли різних форматів для
використання з john), особливо wpapcap2john (обробляє WiFi трафік). - Багато нових опцій командного рядка, налаштувань у john.conf, опцій configure-скрипту та відповідні їм нові можливості, далеко не всі з яких вдалося згадати тут.
- Підвищення якості коду завдяки вбудованій підтримці налагоджувальних збірок з AddressSanitizer (була раніше) і UndefinedBehaviorSanitizer (додана), додаванню вбудованого фазера форматів (у рамках GSoC 2015), застосуванню безперервної інтеграції (складання під десятки поєднань операційної системи). форматів).
Джерело: opennet.ru