Posebnost nove verzije je pojava FPGA podrške (pored CPU, GPU i Xeon Phi). Za daske
Za bcrypt, postignute performanse od ~119k c/s sa 2^5 iteracija (“$2b$05”) uz potrošnju energije od ~27 vati značajno premašuju rezultate za najnovije GPU-ove po ploči, po cijeni hardvera i po vatu . Također podržano
Da bismo ubrzali rad, implementirali smo upotrebu maske (režim „—maske“, uključujući u kombinaciji sa drugim režimima) i poređenje izračunatih hešova sa onima učitanim na FPGA strani. Iz perspektive implementacije, mnogi dizajni (npr.
Ostale važne promjene:
- Podrška za veliki broj dodatnih tipova hashova, šifri itd., uključujući i klasične hešove lozinki (na primjer, iz novih verzija QNX-a), kao i novčanike kriptovaluta, šifrirane arhive i šifrirane sisteme datoteka (na primjer, Bitlocker i FreeBSD geli), kao i podrška za nove tipove formata koji su prethodno bili podržani (na primjer, dodana podrška za bcrypt-pbkdf za OpenBSD softraid) i još mnogo toga. Ukupno je dodano 80 formata na CPU i 47 na OpenCL. Ukupan broj formata je sada 407 na CPU-u (ili 262 ne uključujući "dinamičke" formate konfigurisane iz konfiguracionih datoteka) i 88 na OpenCL-u.
- Uklanjanje CUDA jezičke podrške u korist OpenCL-a, što ni najmanje ne ometa potpunu upotrebu NVIDIA GPU-a (a čak i pomaže, zahvaljujući fokusu razvoja i optimizacije na jednoj implementaciji svakog formata pod GPU-om umjesto dva implementacije ranije).
- Podrška za nove SIMD skupove instrukcija - AVX2, AVX-512 (uključujući za drugu generaciju Xeon Phi) i MIC (za prvu generaciju) - kao i univerzalniju i potpuniju upotrebu SIMD-a u implementacijama mnogih formata, uključujući upotrebu prethodno podržanih skupova instrukcija do AVX i XOP na x86(-64) i
NEON, ASIMD i AltiVec na ARM-u, Aarch64 i POWER-u, respektivno. - Brojne optimizacije za CPU i OpenCL, za efikasniji rad sa velikim brojem hešova u isto vreme (na primer, učitavanje 320 miliona SHA-1 heša na GPU) i za povećanje brzine izračunavanja heša. Neke od ovih optimizacija su univerzalne, neke pokrivaju različite podskupove formata, a mnoge su specifične za format.
- (Auto-)konfiguracija optimalnog baferovanja provjerenih lozinki na CPU-u (“—tune=auto —verbosity=5”) i optimalne veličine poslova na OpenCL-u (omogućeno prema zadanim postavkama), uključujući uzimanje u obzir sporog porasta do pune radne frekvencije grafičkih procesora NVIDIA GTX serije 10xx i novijih. Korištenje stvarno učitanih hashova i stvarne dužine lozinki koje se provjeravaju (kada je to unaprijed poznato) za takvo automatsko podešavanje.
- Dodavanje kompajlera za "dinamičke izraze" specificirane direktno u komandnoj liniji i implementacija novih hibridnih tipova hash-a, na primjer "-format=dynamic='sha1(md5($p).$s)'", izračunatih na CPU-u koristeći SIMD . Kao komponente takvih izraza, podržani su deseci brzih hashova (od uobičajenih poput MD5 do umjereno egzotičnih poput Whirlpool), konkatenacija podnizova, kodiranje i dekodiranje, konverzija velikih i malih slova, reference na lozinku, sol, korisničko ime i string konstante.
- Eliminacija nepoželjnih razlika u odnosu na hashcat, uključujući podršku za ranije naredbe pravila liste riječi specifičnih za hashcat, prelazak na numeriranje OpenCL uređaja sa 1, korištenje istih zadanih dužina lozinki (obično dužine 7) za testove performansi.
- Novi načini razbijanja, uključujući PRINCE iz hashcat-a (generira "fraze" spajanjem više riječi u rastućem redoslijedu ukupne dužine), podskupove (donosi lozinke s nedovoljno različitih znakova čak i ako ti znakovi dolaze iz velikog skupa mogućih) i hibridne eksterne (omogućava eksternim režimima, opisanim u konfiguracionim datotekama na jeziku sličnom C, da generišu mnoge proverljive lozinke na osnovu svake osnovne „reči“ primljene iz drugog režima). Takođe, nekoliko novih unapred definisanih eksternih režima.
- Dodatne mogućnosti za korištenje nekoliko načina istovremeno (jedan na drugom - slaganje), kao i za takvu upotrebu skupova pravila (slaganje pravila liste riječi).
- Poboljšanja režima maske (postupno rastezanje maske u određenom rasponu dužina, nanošenje maske na stranu OpenCL uređaja ili FPGA ploče) i single crack (razumno ponašanje na uređajima koji paralelno računaju veliki broj hashova, što je prethodno u ovom režimu nedostajale su lozinke za proveru, kao i ograničenja potrošnje memorije).
- Mnoga poboljšanja u podršci za Unicode i druga kodiranja u različitim podsistemima.
- Mnoga poboljšanja *2john programa (konvertovanje datoteka različitih formata u
koristiti sa john), posebno wpapcap2john (obavlja WiFi saobraćaj). - Mnoge nove opcije komandne linije, postavke john.conf, opcije konfigurisanja skripte i njihove odgovarajuće nove funkcije, od kojih nisu sve pomenute ovde.
- Poboljšanje kvaliteta koda zbog ugrađene podrške za debug buildove sa AddressSanitizer (prethodno) i UndefinedBehaviorSanitizer (dodat), dodavanjem ugrađenog fuzzer formata (unutar GSoC 2015), korištenjem kontinuirane integracije (gradnje za desetine kombinacija operativnih sistema i kompajlera i testirajući ih za ispravnu podršku za sve formate).
izvor: opennet.ru