Posebna značajka nove verzije je pojava FPGA podrške (uz CPU, GPU i Xeon Phi). Za daske
Za bcrypt, postignuta izvedba od ~119k c/s s 2^5 iteracija ("$2b$05") uz potrošnju energije od ~27 vata značajno premašuje rezultate za najnovije GPU-ove po ploči, po cijeni hardvera i po vatu . Također podržano
Kako bismo ubrzali rad, implementirali smo korištenje maske (način rada "—mask", uključujući u kombinaciji s drugim načinima) i usporedbu izračunatih hashova s onima učitanim na strani FPGA. Iz perspektive implementacije, mnogi dizajni (npr.
Ostale važne promjene:
- Podrška za velik broj dodatnih vrsta hashova, šifara itd., uključujući klasične hashove zaporki (na primjer, iz novih verzija QNX-a), kao i novčanike za kriptovalute, šifrirane arhive i šifrirane datotečne sustave (na primjer, Bitlocker i FreeBSD geli), kao i podrška za nove vrste 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 sada je 407 na CPU-u (ili 262 ne uključujući "dinamičke" formate konfigurirane iz konfiguracijskih datoteka) i 88 na OpenCL-u.
- Odbijanje podrške za CUDA jezik u korist OpenCL-a, koji ni na koji način ne ometa potpunu upotrebu NVIDIA GPU-a (i čak pomaže, zahvaljujući fokusiranju razvoja i optimizacije na jednu implementaciju svakog formata za GPU umjesto dvije 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žane instrukcije postavljaju se na AVX i XOP na x86(-64) i
NEON, ASIMD i AltiVec na ARM-u, Aarch64 i POWER-u. - Brojne optimizacije za CPU i OpenCL, kako za učinkovitiji rad s velikim brojem hash-ova istovremeno (na primjer, testirano je učitavanje 320 milijuna SHA-1 hash-ova na GPU), tako i za povećanje brzine hash izračuna. Neke od tih optimizacija su univerzalne, neke pokrivaju različite podskupove formata, a mnoge su specifične za pojedinačne formate.
- (Automatska) konfiguracija optimalnog međuspremnika provjerenih zaporki 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 povećanja do pune radne frekvencije GPU serije NVIDIA GTX 10xx i novije. Korištenje stvarno učitanih hashova i stvarne duljine zaporki koje se provjeravaju (kada je unaprijed poznata) za takvo automatsko podešavanje.
- Dodavanje kompajlera za "dinamičke izraze" navedene izravno u naredbenom retku i implementacija novih hibridnih hash vrsta, na primjer "-format=dynamic='sha1(md5($p).$s)'", izračunato na CPU-u pomoću SIMD-a . Kao komponente takvih izraza podržani su deseci brzih hashova (od uobičajenih kao što je MD5 do umjereno egzotičnih kao što je Whirlpool), ulančavanje podnizova, kodiranje i dekodiranje, pretvorba velikih i malih slova, reference na lozinku, sol, korisničko ime i konstante niza.
- Uklanjanje neželjenih razlika iz hashcat-a, uključujući podršku za prethodno specifična pravila hashcat-a (naredbe pravila popisa riječi), prijelaz na OpenCL numeriranje uređaja od 1, zadana upotreba istih duljina lozinki (obično duljina 7) za testove performansi.
- Novi načini za generiranje provjerljivih lozinki (načini krekiranja), uključujući PRINCE iz hashcata (formira "fraze" kombiniranjem nekoliko riječi u rastućem redoslijedu ukupne duljine), podskupove (donosi lozinke s nedovoljnim brojem različitih znakova, čak i ako ovi znakovi dolaze iz velikog skupa mogućih) i hibridni vanjski (omogućuje vanjskim načinima rada, opisanim u konfiguracijskim datotekama u jeziku sličnom C-u, generiranje mnogih provjerljivih lozinki na temelju svake osnovne "riječi" primljene iz drugog načina). Također, nekoliko novih unaprijed definiranih vanjskih načina rada.
- Dodatne mogućnosti za korištenje nekoliko modova istovremeno (jedan na drugom - slaganje), kao i za korištenje skupova pravila (slaganje pravila liste riječi).
- Poboljšanja načina rada maske (postupno rastezanje maske u određenom rasponu duljina, primjena maske na bočnoj strani OpenCL uređaja ili FPGA ploče) i single crack (razumno ponašanje na uređajima koji paralelno izračunavaju veliki broj hashova , za koje prije nije bilo dovoljno provjerljivih lozinki u ovom načinu rada, a također i ograničenja u potrošnji memorije).
- Mnoga poboljšanja podrške za Unicode i druga kodiranja u raznim podsustavima.
- Mnoga poboljšanja *2john programa (koji pretvaraju datoteke različitih formata u
koristiti s johnom), posebno wpapcap2john (rukuje WiFi promet). - Postoje mnoge nove opcije naredbenog retka, postavke u john.conf, opcije konfiguracije skripte i odgovarajuće nove značajke, a nisu sve ovdje spomenute.
- Poboljšanje kvalitete koda zahvaljujući ugrađenoj podršci za debug builds s AddressSanitizer (prethodno) i UndefinedBehaviorSanitizer (dodan), dodavanjem ugrađenog fuzzera formata (kao dio GSoC 2015), korištenjem kontinuirane integracije (builds za desetke operativnih sustava i kompajlera kombinacije i njihovo testiranje radi ispravne podrške za sve formate).
Izvor: opennet.ru