nova verzija najstarijeg podržanog programa za generisanje lozinki (projekat se razvija od 1996. godine). Od izlaska poslednje verzije 1.8.0-jumbo-1 prošlo je 4,5 godina, tokom kojih je uneto više od 6000 izmena (git commits) od više od 80 programera. Zbog , koja uključuje prethodnu proveru svake izmene (pull request) na mnogim platformama, tokom ovog razdoblja, programeri su preporučili korišćenje , čije je stanje održavano stabilnim uprkos promenama. Osnovni kod projekta je pod licencom GPLv2+, dok je kod nekih komponenti pod licencom BSD.
Karakteristika nove verzije je pojavnost podrške za FPGA (pored CPU, GPU i Xeon Phi). Za , koji uključuju 4 FPGA čipa i prvobitno su se koristili uglavnom za rudarenje Bitcoina, sada je implementirano 7 tipova lozinki: bcrypt, klasični descrypt (uključujući bigcrypt), sha512crypt, sha256crypt, md5crypt (uključujući Apache apr1 i AIX smd5), Drupal7 i phpass (koristi se, između ostalog, u WordPress-u). Neki od njih su prvi put implementirani na FPGA.
Za bcrypt, postignuta je performansa od ~119k c/s pri 2^5 iteracija („$2b$05”) sa potrošnjom od oko ~27 vati, što suštinski nadmašuje rezultate za najnovije GPU-ove kada se uzme u obzir cena opreme i potrošnja struje. Takođe su podržani ovog tipa, što je testirano do 16 ploča (64 FPGA čipa), kontrolisanih sa jednog Raspberry Pi 2. Održava se uobičajena funkcionalnost John the Ripper-a, uključujući sve režime generisanja lozinki i simultano učitavanje velikog broja heševa.
Za ubrzavanje rada implementirana je upotreba maske (režim „—mask”, uključujući kombinaciju sa drugim režimima) i upoređivanje izračunatih heševa sa učitanim na strani FPGA. Što se tiče implementacije, u mnogim od dizajna (na primer, za ) korišćeni su blokovi sa višedretvenim procesorskim jezgrama (soft CPU cores) koji interaguju sa kriptografskim jezgrama. Razvoj ove funkcionalnosti vodio je Denis Burikin u saradnji sa drugim programerima jumbo.
Druge važne izmene:
- Podpora široke palete dodatnih tipov heširanja, šifriranja itd., vključno z klasiki heši za gesla (na primer, najnovejše različice QNX), kriptovalutnimi denarnicami, šifriranimi arhivi in šifriranimi datotečnimi sistemi (na primer Bitlocker in FreeBSD geli), ter podporo novih različic formatov, ki so bile prej podprte (npr. dodana podpora bcrypt-pbkdf za OpenBSD softraid) in še veliko več. Skupaj je dodanih 80 formatov na CPU in 47 na OpenCL. Skupno število formatov je sedaj 407 na CPU (ali 262, če ne upoštevamo 'dinamičnih' formatov, nastavljenih iz konfiguracijskih datotek) ter 88 na OpenCL.
- Opustitev podpore jeziku CUDA v prid OpenCL, kar ne ovira polne uporabe GPU-jev iz NVIDIA (in celo pomaga, saj se razvoj in optimizacije osredotočajo na eno izvedbo vsakega formata za GPU namesto dveh izvedb prej).
- Podpora novim nizom ukazov SIMD — AVX2, AVX-512 (vključno za drugo generacijo Xeon Phi) in MIC (za prvo generacijo) — ter bolj univerzalna in celovita uporaba SIMD v izvedbah mnogih formatov, vključno z uporabo prej podprtih nizov ukazov, vse do AVX in XOP na x86(-64) ter
NEON, ASIMD in AltiVec na ARM, Aarch64 in POWER, ustrezno. - Številne optimizacije za CPU in OpenCL, tako za bolj učinkovito delo z velikim številom hešev hkrati (na primer, testiranje obremenitve 320 milijonov hešev SHA-1 na GPU), kot tudi za povečanje hitrosti izračunavanja hešev. Del teh optimizacij je univerzalnih, del zajema različne podmnožice formatov, mnoge pa so specifične za posamezne formate.
- (Avto-)nastavitev optimalnega predpomnjenja preverjanih gesel na CPU ('—tune=auto —verbosity=5') in optimalnih dimenzij naloge na OpenCL (vklopljeno privzeto), vključno z upoštevanjem počasnega prehoda na polno delovno frekvenco GPU serije NVIDIA GTX 10xx in novejše. Uporaba resnično obremenjenih hešev in resnične dolžine preverjanih gesel (ko je to vnaprej znano) za to avtomatsko nastavitev.
- Dodajanje prevajalnika 'dinamičnih izrazov', določenih neposredno v ukazni vrstici in ki izvajajo nove hibridne tipe hashev, na primer '—format=dynamic='sha1(md5($p).$s)'', ki se izračunavajo na CPU z uporabo SIMD. Kot sestavne dele takih izrazov podpirajo desetine hitrih hashev (od široko uporabljenih, kot je MD5, do zmerno eksotičnih, kot je Whirlpool), združevanje podnizi, kodiranje in dekodiranje, spremembo registra znakov, sklicevanje na gesla, sol, uporabniško ime in nizovne konstante.
- Odpravljanje nezaželenih razlik od hashcat, vključno z podporo za prej specifična pravila hashcat (ukazi pravil za seznam besed), prehod na numeracijo OpenCL naprav z 1, uporaba enakih dolžin gesel (običajno dolžina 7) privzeto pri testih zmogljivosti.
- Novi načini generiranja preverjenih gesel (načini razbitja), vključno s PRINCE iz hashcat (tvori 'fraze', združuje več besed v naraščajočem vrstnem redu skupne dolžine), podskladi (izbira gesla z nezadostnim številom različnih znakov, tudi če so ti znaki iz velikega niza možnih) in hibridni zunanji (omogoča zunanjim načinom, opisanih v konfiguracijskih datotekah v jeziku podobnem C, da oblikujejo veliko preverjenih gesel na osnovi vsakega osnovnega 'besede', ki prihaja iz drugega načina). Prav tako, več novih prednastavljenih zunanjih načinov.
- Dodatne možnosti za uporabo več načinov hkrati (enega nad drugim - stacking), pa tudi za uporabo nizov pravil (stacking pravil za seznam besed).
- Izboljšave načinov maska (postopno raztezanje maske v določenem razponu dolžin, uporaba maske na strani naprave OpenCL ali FPGA ploščice) in single crack (smiselno vedenje na napravah, ki izračunavajo veliko število hashev hkrati, kar prej v tem načinu ni zadostovalo s preverjenimi gesli, pa tudi omejitve na porabo pomnilnika).
- Mnogo izboljšav podpore za Unicode in druge kodne strani v različnih podsistemih.
- Mnogo izboljšav programov *2john (pretvarjanje datotek različnih formatov za
uporabo z john), še posebej wpapcap2john (obravnava WiFi promet). - Mnoge nove opcije komandne linije, postavke u john.conf, opcije configure skripta i odgovarajuće nove mogućnosti, od kojih se mnoge ovde nisu mogle spomenuti.
- Povećanje kvaliteta koda zahvaljujući ugrađenoj podršci za debagovanje sa AddressSanitizer (ranije) i UndefinedBehaviorSanitizer (dodato), dodavanju ugrađenog fuzzer-a formata (u okviru GSoC 2015), primeni kontinuirane integracije (gradnja za desetine kombinacija operativnog sistema i kompajlera i testiranje ispravne podrške za sve formate).
Izvor: opennet.ru
