versionin e ri të programit më të vjetër të mbështetur për gjetjen e fjalëkalimeve (projekti është në zhvillim që nga viti 1996). Që nga dalja e versionit të kaluar 1.8.0-jumbo-1 kanë kaluar 4.5 vjet, gjatë të cilave janë bërë më shumë se 6000 ndryshime (git commits) nga mbi 80 zhvillues. Falë , që përfshin kontrollin paraprak të çdo ndryshimi (pull request) në shumë platforma, gjatë kësaj periudhe zhvilluesit rekomanduan përdorimin e , i cili u mbajt stabil pavarësisht ndryshimeve të bëra. Kodi kryesor i projektit nën licencën GPLv2+, ndërsa kodet e disa komponentëve nën licencën BSD.
Karakteristika e re e versionit është mbështetje për FPGA (përveç CPU, GPU dhe Xeon Phi). Për kartat , të cilat përmbajnë nga 4 çipa FPGA dhe fillimisht janë përdorur kryesisht për minimin e Bitcoin, tani janë implementuar 7 lloje hash fjalëkalimesh: bcrypt, descrypt klasik (përfshirë bigcrypt), sha512crypt, sha256crypt, md5crypt (përfshirë Apache apr1 dhe AIX smd5), Drupal7 dhe phpass (përdoret, në veçanti, në WordPress). Disa prej tyre janë implementuar për herë të parë në FPGA.
Për bcrypt, performanca e arritur është ~119k c/s me 2^5 iteracione ("$2b$05") me një konsum të energjisë rreth ~27 watt që tejkalon ndjeshëm rezultatet për GPU më të reja në llogaritje për kartë, çmimin e pajisjeve dhe watt-in. Gjithashtu janë mbështetur nga këto lloje kartash, e cila është testuar deri në 16 karta (64 çipa FPGA), të kontrolluar nga një Raspberry Pi 2. Funksionaliteti standard i John the Ripper mbështetet, duke përfshirë të gjitha modet e gjetjes së fjalëkalimeve dhe ngarkimin njëkohësisht të shumë hash-eve.
PĂ«r tĂ« pĂ«rshpejtuar punĂ«n Ă«shtĂ« implementuar pĂ«rdorimi i maskĂ«s (modi "âmask", pĂ«rfshirĂ« nĂ« kombinim me modet e tjera) dhe krahasimi i hash-eve tĂ« llogaritur me ato tĂ« ngarkuara nĂ« anĂ«n e FPGA. Nga pikĂ«pamja e implementimit, nĂ« shumĂ« nga dizajnet (pĂ«r shembull, pĂ«r ) janĂ« pĂ«rdorur blloqe qĂ« pĂ«rbĂ«hen nga bĂ«rthama soft CPU tĂ« shumta, qĂ« bashkĂ«veprojnĂ« me bĂ«rthamat kriptografike. Zhvillimi i kĂ«tij funksionaliteti Ă«shtĂ« udhĂ«hequr nga Denis Burikin nĂ« koordinim me zhvillues tĂ« tjerĂ« jumbo.
Ndryshime të tjera të rëndësishme:
- MbĂ«shtetje pĂ«r njĂ« numĂ«r tĂ« madh tipash tĂ« tjerĂ« hash, algoritmesh, etj., duke pĂ«rfshirĂ« si hash tradicional tĂ« fjalĂ«kalimeve (p.sh., versione tĂ« reja tĂ« QNX), ashtu edhe portofolat kriptomonedhave, arkivat e enkriptuara dhe sistemet e dosjeve tĂ« enkriptuara (p.sh., Bitlocker dhe FreeBSD geli), si dhe mbĂ«shtetje pĂ«r lloje tĂ« reja tĂ« formateve qĂ« janĂ« mbĂ«shtetur mĂ« parĂ« (p.sh., mbĂ«shtetje pĂ«r bcrypt-pbkdf pĂ«r OpenBSD softraid) dhe shumĂ« tĂ« tjera. NĂ« total, janĂ« shtuar 80 formate nĂ« CPU dhe 47 nĂ« OpenCL. Numri i pĂ«rgjithshĂ«m i formateve tani Ă«shtĂ« 407 nĂ« CPU (ose 262 duke pĂ«rjashtuar format âdynamicâ qĂ« pĂ«rshtaten nga skedarĂ«t e konfigurimit) dhe 88 nĂ« OpenCL.
- Heqja e mbështetjes për gjuhën CUDA në favor të OpenCL, e cila nuk pengon në përdorimin e plotë të GPU-ve nga NVIDIA (përkundrazi ndihmon falë fokusi në zhvillim dhe optimizimin për një implementim të vetëm të secilit format për GPU, në vend të dy implementimeve më përpara).
- MbĂ«shtetje pĂ«r grupe tĂ« reja tĂ« instrukcioneve SIMD â AVX2, AVX-512 (pĂ«rfshirĂ« pĂ«r gjeneratĂ«n e dytĂ« tĂ« Xeon Phi) dhe MIC (pĂ«r gjeneratĂ«n e parĂ«) â si dhe pĂ«rdorim mĂ« universale dhe tĂ« plotĂ« tĂ« SIMD nĂ« implementimet e shumĂ« formateve, duke pĂ«rfshirĂ« aplikimin e grupeve tĂ« instrukcioneve qĂ« ishin mbĂ«shtetur mĂ« parĂ« deri nĂ« AVX dhe XOP nĂ« x86(-64) dhe
NEON, ASIMD dhe AltiVec në ARM, Aarch64 dhe POWER, përkatësisht. - Optimizime të shumta për CPU dhe OpenCL, si për një funksionim më efikas me një numër të madh hash-esh njëkohësisht (p.sh., u testua ngarkesa e 320 milionëve hash SHA-1 në GPU), ashtu edhe për rritjen e shpejtësisë së llogaritjes së hash-eve. Disa nga këto optimizime janë universale, disa përfshijnë nëngrupe të ndryshme formatesh, ndërsa shumë janë specifike për formate të veçanta.
- (Automatikisht) konfigurimi i optimizuar i buferit tĂ« fjalĂ«kalimeve tĂ« kontrolluara nĂ« CPU (ââtune=auto âverbosity=5â) dhe pĂ«rmasat optimale tĂ« detyrĂ«s nĂ« OpenCL (tĂ« aktivizuara si parazgjedhje), duke pĂ«rfshirĂ« mbajtjen parasysh tĂ« ngadalshĂ«m tĂ« daljes nĂ« frekuencĂ«n e plotĂ« tĂ« punĂ«s pĂ«r GPU-s nga seria NVIDIA GTX 10xx dhe mĂ« tĂ« reja. PĂ«rdorimi i hash-eve tĂ« ngarkuara realisht dhe gjatĂ« e fjalĂ«kalimeve tĂ« kontrolluara (kur ajo Ă«shtĂ« e njohur paraprakisht) pĂ«r kĂ«tĂ« konfigurim automatik.
- Shtimi i kompilatorit tĂ« «shprehjeve dinamike», tĂ« specifikuara drejtpĂ«rdrejt nĂ« linjĂ«n e komandĂ«s dhe qĂ« realizojnĂ« lloje tĂ« reja hibride tĂ« hash-eve, pĂ«r shembull «âformat=dynamic='sha1(md5($p).$s)'», tĂ« llogaritura nĂ« CPU duke pĂ«rdorur SIMD. Si komponentĂ« tĂ« kĂ«tyre shprehjeve mbĂ«shteten dhjetra hash-e tĂ« shpejtĂ« (nga ato tĂ« zakonshme si MD5 deri tek ato pak mĂ« ekzotike si Whirlpool), bashkimin e nĂ«nstruktura, kodimin dhe dekodimin, transformimin e regjistrit tĂ« simboleve, referencat pĂ«r fjalĂ«kalim, kripĂ«, emrin e pĂ«rdoruesit dhe konstantet e vargjeve.
- Eliminimi i dallimeve të padëshiruara nga hashcat, përfshirë mbështetje për rregulla që ishin specifike për hashcat (komandat për rregullat e listës së fjalëve), kalimi në numerimin e pajisjeve OpenCL nga 1, aplikimi automatik i të njëjtave gjatësi fjalëshkalimi (zakonisht gjatësi 7) gjatë testeve të performancës.
- Rejime tĂ« reja pĂ«r gjenerimin e fjalĂ«vekalimeve tĂ« kontrollueshme (reĆŸim krashimi), duke pĂ«rfshirĂ« PRINCE nga hashcat (formon «fraza» duke bashkuar disa fjalĂ« nĂ« rendin e rritjes sĂ« gjatĂ«si sĂ« pĂ«rgjithshme), subsets (pĂ«rzgjedh fjalĂ«kalime me njĂ« numĂ«r tĂ« pamjaftueshĂ«m tĂ« simboleve tĂ« ndryshme, edhe nĂ«se kĂ«to simbole kanĂ« ardhur nga njĂ« grup i madh tĂ« mundshĂ«m) dhe hybrid external (lejon rejimet eksternale, tĂ« pĂ«rshkruara nĂ« skedarĂ«t e konfigurarit nĂ« njĂ« gjuhĂ« tĂ« ngjashme me C, tĂ« formojnĂ« shumĂ« fjalĂ«kalime tĂ« kontrollueshme nĂ« bazĂ« tĂ« çdo «fjale» themelore qĂ« vjen nga njĂ« regjim tjetĂ«r). Gjithashtu, disa mĂ«nyra tĂ« reja tĂ« parapara nga jashtĂ«.
- MundĂ«si tĂ« tjera pĂ«r pĂ«rdorimin e disa rejimeve njĂ«herĂ«sh (njĂ« mbi tjetĂ«r â stacking), si dhe pĂ«r kĂ«tĂ« pĂ«rdorim tĂ« grupeve tĂ« rregullave (stacking i rregullave tĂ« listĂ«s sĂ« fjalĂ«ve).
- Përmirësime të rejimeve maskë (zgjatja graduale e maskës në një gamë të specifikuar të gjatësi, aplikimi i maskës në pajisjet OpenCL ose plakat FPGA) dhe single crack (sjellje logjike në pajisjet që llogaritin shumë hash-e paralelisht, për të cilat në këtë regjim përpara kishte mungesë të fjalëvekalimeve të kontrollueshme, si dhe kufizime mbi përdorimin e memories).
- Shumë përmirësime të mbështetjes Unicode dhe encoding-ut të tjerë në sisteme të ndryshme.
- Shumë përmirësime të programeve *2john (që transformojnë skedarët e formateve të ndryshme për
përdorim me john), sidomos wpapcap2john (trajton trafikun WiFi). - Shumë opsione të reja të komandave në rresht, konfigurimeve në john.conf, skenarëve të opsioneve të konfigurimit dhe mundësive të reja përkatëse, shumë prej të cilave nuk arritëm t'i përmendim këtu.
- Përmirësimi i cilësisë së kodit përmes mbështetjes së integruar për ndërtimet e debug me AddressSanitizer (e cila është ekzistuar më parë) dhe UndefinedBehaviorSanitizer (shtuar), shtimit të një fuzzersi të integruar për formate (në kuadër të GSoC 2015), aplikimi i integrimit të vazhdueshëm (ndërtime për dhjetëra kombinime të sistemit operativ dhe kompajlerit dhe testimi i mbështetjes korrekte për të gjitha formatet).
Burimi: opennet.ru
