nová verze nejstarší podporované aplikace pro generování hesel (projekt se vyvíjí od roku 1996). Od vydání předchozí verze 1.8.0-jumbo-1 uplynulo 4,5 roku, během kterého bylo provedeno více než 6000 změn (git commitů) od více než 80 vývojářů. Díky , která zahrnovala předběžnou kontrolu každé změny (pull request) na mnoha platformách, během této doby vývojáři doporučovali používat , jejíž stav byl stabilně udržován navzdory prováděným změnám. Hlavní kód projektu je pod licencí GPLv2+, zatímco kód některých komponentů je pod licencí BSD.
Významnou novinkou nové verze je podpora FPGA (vedle CPU, GPU a Xeon Phi). Pro desky , které obsahují po 4 čipech FPGA a původně se používaly hlavně pro těžbu Bitcoinu, je nyní implementováno 7 typů hashů hesel: bcrypt, klasický descrypt (včetně bigcrypt), sha512crypt, sha256crypt, md5crypt (včetně Apache apr1 a AIX smd5), Drupal7 a phpass (používá se zejména ve WordPressu). Některé z nich jsou na FPGA implementovány poprvé.
Pro bcrypt byla dosažena výkonnost ~119k c/s při 2^5 iteracích („$2b$05“) s očekávaným výkonem přibližně ~27 wattů, což podstatně překonává výsledky nejnovějších GPU na desku, co se týče ceny vybavení a wattů. Podporovány jsou také desky tohoto typu, což bylo ověřeno až pro 16 desek (64 čipů FPGA), řízených z jednoho Raspberry Pi 2. Podporována je běžná funkčnost John the Ripper, včetně všech režimů generování hesel a současného zpracování velkého množství hashů.
Pro zrychlení práce bylo realizováno použití masky (režim „—mask“, včetně kombinace s jinými režimy) a porovnání vypočítaných hashů se nahranými na straně FPGA. Z hlediska implementace, v mnoha designích (například pro ) aplikováno blokové uspořádání složené z vícetré procesorových jader (soft CPU cores), které spolupracují s kryptografickými jádry. Vývoj této funkčnosti vedl Denis Burykin ve spolupráci s dalšími vývojáři jumbo.
Další důležité změny:
- Podpora široké škály dalších typů hashů, šifrů atd., včetně klasických hashů hesel (například z nových verzí QNX), stejně jako kryptoměnové peněženky, šifrované archivy a šifrované souborové systémy (například Bitlocker a FreeBSD geli), a také podpora nových variant formátů, které byly dříve podporovány (například byla přidána podpora bcrypt-pbkdf pro OpenBSD softraid) a mnohem více. Celkem bylo přidáno 80 formátů na CPU a 47 na OpenCL. Celkový počet formátů nyní činí 407 na CPU (nebo 262, pokud se nezapočítávají „dynamic“ formáty, které lze konfigurovat z konfiguračních souborů) a 88 na OpenCL.
- Odmítnutí podpory jazyka CUDA ve prospěch OpenCL, což nijak nebrání plnému využití GPU od NVIDIA (a dokonce to pomáhá, díky zaměření vývoje a optimalizacím na jedno provedení každého formátu pro GPU místo dvou provedení dříve).
- Podpora nových sad instrukcí SIMD — AVX2, AVX-512 (včetně pro druhou generaci Xeon Phi) a MIC (pro první generaci) — a také obecnější a úplnější využití SIMD v implementacích mnoha formátů, včetně aplikace dříve podporovaných sad instrukcí až po AVX a XOP na x86(-64) a
NEON, ASIMD a AltiVec pro ARM, Aarch64 a POWER. - Několik optimalizací pro CPU a OpenCL, jak pro efektivnější práci s velkým počtem hashů současně (například byla testována zátěž 320 milionů hashů SHA-1 na GPU), tak pro zvýšení rychlosti výpočtu hashů. Některé z těchto optimalizací jsou univerzální, některé pokrývají různé podmnožiny formátů, a mnohé jsou specifické pro jednotlivé formáty.
- (Auto-)nastavení optimálního bufferování kontrolovaných hesel na CPU („—tune=auto —verbosity=5“) a optimálních velikostí úloh na OpenCL (je zapnuto ve výchozím nastavení), včetně zohlednění pomalého dosažení plné pracovní frekvence GPU řady NVIDIA GTX 10xx a novějších. Použití skutečně zatížených hashů a skutečné délky kontrolovaných hesel (když je známa předem) pro takové auto-nastavení.
- Přidání „kompilátoru dynamických výrazů“, který se uvádí přímo na příkazovém řádku a realizuje nové hybridní typy hashů, například „—format=dynamic=’sha1(md5($p).$s)'“, které se počítají na CPU s využitím SIMD. Jako komponenty takových výrazů jsou podporovány desítky rychlých hashů (od běžných, jako je MD5, po mírně exotické, jako je Whirlpool), spojování podřetězců, kódování a dekódování, převod velikosti písmen, odkazy na heslo, sůl, uživatelské jméno a řetězcové konstanty.
- Odstranění nežádoucích rozdílů od hashcat, včetně podpory dříve specifických pravidel pro hashcat (příkazy pro pravidla wordlist), přechod na číslování zařízení OpenCL od 1, použití stejných délek hesel (obvykle délka 7) jako výchozí při testech výkonu.
- Nové režimy generování testovaných hesel (cracking modes), včetně PRINCE z hashcat (tvoří 'fráze' spojením několika slov v pořadí vzrůstající celkové délky), subsets (načítá hesla s nedostatečným počtem různých znaků, i když tyto znaky pocházejí z velké sady možných) a hybrid external (umožňuje externím režimům, popsaným v konfiguračních souborech v jazyce podobném C, generovat mnoho testovaných hesel na základě každého základního 'slova' pocházejícího z jiného režimu). Také několik nových předdefinovaných externích režimů.
- Další možnosti využívání několika režimů současně (jeden nad druhým - stacking), stejně jako takovéto využívání sad pravidel (stacking pravidel wordlist).
- Vylepšení režimů mask (postupné rozšiřování masky v určeném rozsahu délky, aplikace masky na straně zařízení OpenCL nebo FPGA desky) a single crack (rozumné chování na zařízeních, která počítají velké množství hashů současně, na což dříve v tomto režimu chyběly testované hesla, a také omezení na spotřebu paměti).
- Mnoho vylepšení podpory Unicode a jiných kódování v různých subsystémech.
- Mnoho vylepšení programů *2john (převádějících soubory různých formátů pro
použití s john), zejména wpapcap2john (zpracovává WiFi provoz). - Mnoho nových možností příkazového řádku, nastavení v john.conf, možností konfiguračního skriptu a odpovídajících nových funkcí, z nichž nebylo možné všechny zmínit zde.
- Zvýšení kvality kódu díky integrované podpoře ladicích sestavení s AddressSanitizer (předtím) a UndefinedBehaviorSanitizer (přidáno), zavedení integrovaného fuzzera formátů (v rámci GSoC 2015), a aplikaci kontinuální integrace (sestavení pro desítky kombinací operačního systému a překladače a testování jejich správné podpory všech formátů).
Zdroj: opennet.ru
