Асаблівасцю новай версіі з'яўляецца з'яўленне падтрымкі 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