Një tipar i versionit të ri është shfaqja e mbështetjes FPGA (përveç CPU, GPU dhe Xeon Phi). Për dërrasat
Për bcrypt, performanca e arritur prej ~ 119 mijë c/s në 2^5 përsëritje ("2b$05") me një konsum energjie prej rreth ~27 watts tejkalon ndjeshëm GPU-të më të fundit për bord, për çmimin e harduerit dhe për vat. Mbështetur gjithashtu
Për të përshpejtuar punën, ne zbatuam përdorimin e një maske (modaliteti "--mask", duke përfshirë në kombinim me mënyrat e tjera) dhe një krahasim të hasheve të llogaritura me ato të ngarkuara në anën FPGA. Për sa i përket zbatimit, në shumë prej modeleve (për shembull, për
Ndryshime të tjera të rëndësishme:
- Mbështetje për një numër të madh llojesh shtesë të hasheve, shifrave, etj., duke përfshirë të dyja haset klasike të fjalëkalimeve (për shembull, nga versionet e reja të QNX), dhe kuletat e kriptomonedhave, arkivat e koduar dhe sistemet e skedarëve të koduar (për shembull, Bitlocker dhe FreeBSD geli ), si dhe mbështetje për varietete të reja të formateve të mbështetura më parë (për shembull, mbështetja bcrypt-pbkdf për OpenBSD softraid është shtuar) dhe shumë më tepër. Në total, 80 formate janë shtuar në CPU dhe 47 në OpenCL. Numri i përgjithshëm i formateve tani është 407 në CPU (ose 262 pa përfshirë formatet "dinamike" të konfiguruara nga skedarët e konfigurimit) dhe 88 në OpenCL.
- Heqja e mbështetjes së gjuhës CUDA në favor të OpenCL, e cila nuk ndërhyn aspak në përdorimin e plotë të GPU-së NVIDIA (dhe madje ndihmon, falë fokusit të zhvillimit dhe optimizimeve në një implementim të secilit format nën GPU në vend të dy implementimet më parë).
- Mbështetje për grupet e reja të udhëzimeve SIMD - AVX2, AVX-512 (përfshirë gjeneratën e dytë të Xeon Phi) dhe MIC (për gjeneratën e parë) - si dhe përdorim më universal dhe më të plotë të SIMD në zbatime të shumë formateve, duke përfshirë përdorimin i konfigurimeve të udhëzimeve të mbështetura më parë 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, të dyja për të punuar në mënyrë më efikase me një numër të madh hasesh në të njëjtën kohë (për shembull, ngarkimi i 320 milionë hasheve SHA-1 në GPU) dhe për të rritur shpejtësinë e llogaritjes së hash-it. Disa nga këto optimizime janë universale, disa mbulojnë nëngrupe të ndryshme formatesh dhe shumë janë specifike për format.
- (Auto-)akordim i buferimit optimal të fjalëkalimeve të kontrolluara në CPU (“-tune=auto —verbosity=5”) dhe dimensioneve optimale të punës në OpenCL (aktivizuar si parazgjedhje), duke përfshirë marrjen parasysh të rikuperimit të ngadaltë në frekuencën e plotë të funksionimit e GPU-ve të serisë NVIDIA GTX 10xx dhe më të reja. Përdorimi i hash-eve të ngarkuara reale dhe gjatësia reale e fjalëkalimeve të kontrolluara (kur dihet paraprakisht) për një akordim automatik të tillë.
- Shtimi i një përpiluesi të "shprehjeve dinamike" që specifikohet drejtpërdrejt në vijën e komandës dhe zbaton lloje të reja hash hibride, për shembull "--format=dynamic='sha1(md5($p).$s)'", i llogaritur në CPU duke përdorur SIMD. Dhjetra hash-e të shpejta (nga ato të zakonshme si MD5 tek ato paksa ekzotike si Whirlpool), lidhja e nënstringave, kodimi dhe dekodimi, konvertimi i rasteve të karaktereve, referencat e fjalëkalimit, kripërat, emri i përdoruesit dhe konstantet e vargut mbështeten si përbërës të shprehjeve të tilla.
- Eliminimi i dallimeve të padëshiruara nga hashcat, duke përfshirë mbështetjen për komandat e rregullave të listave të fjalëve specifike të hashcat-it, kalimi në numërimin e pajisjes OpenCL nga 1, duke përdorur të njëjtat gjatësi të fjalëkalimeve të paracaktuar (zakonisht gjatësinë 7) për testet e performancës.
- Mënyra të reja për gjenerimin e fjalëkalimeve të thyera (modalitetet e thyerjes), duke përfshirë PRINCE nga hashcat (gjeneron "fraza" duke bashkuar disa fjalë në rend rritës të gjatësisë totale), nëngrupe (sjell fjalëkalime me një numër të pamjaftueshëm karakteresh të ndryshëm, edhe nëse këto karaktere vijnë nga një grup i madh i atyre të mundshme) dhe hibride të jashtme (lejon mënyrat e jashtme, të përshkruara në skedarët e konfigurimit në gjuhën e ngjashme me C-në, të gjenerojnë shumë fjalëkalime të verifikueshme bazuar në çdo "fjalë" bazë të marrë nga një modalitet tjetër). Gjithashtu, disa mënyra të reja të paracaktuara të jashtme.
- Karakteristika shtesë për përdorimin e disa mënyrave në të njëjtën kohë (njëra mbi tjetrën - grumbullimi), si dhe për një përdorim të tillë të grupeve të rregullave (vendosja e rregullave të listës së fjalëve).
- Përmirësime në mënyrat e maskës (shtrirja graduale e maskës në intervalin e caktuar të gjatësive, aplikimi i maskës në anën e një pajisjeje OpenCL ose bordit FPGA) dhe çarje e vetme (sjellje e arsyeshme në pajisjet që llogarisin një numër të madh hasesh paralelisht, të cilat më parë në këtë modalitet mungonin fjalëkalimet për t'u kontrolluar, si dhe kufizimet në konsumin e memories).
- Shumë përmirësime në mbështetje për Unicode dhe kodime të tjera në nënsisteme të ndryshme.
- Shumë përmirësime në programet *2john (konvertimi i skedarëve të formateve të ndryshme në
përdorni me john), veçanërisht wpapcap2john (trajton trafikun WiFi). - Shumë opsione të reja të linjës së komandës, cilësimet john.conf, opsionet e konfigurimit të skriptit dhe veçoritë e reja përkatëse të tyre, jo të gjitha janë përmendur këtu.
- Përmirësimi i cilësisë së kodit për shkak të mbështetjes së integruar për ndërtimet e korrigjimit me AddressSanitizer (më parë) dhe UndefinedBehaviorSanitizer (shtuar), duke shtuar një fuzzer të formatit të integruar (brenda GSoC 2015), duke përdorur integrimin e vazhdueshëm (ndërtimet për dhjetëra kombinime të sistemit operativ dhe kompilatorëve dhe testimi i tyre për mbështetjen e saktë të të gjitha formateve).
Burimi: opennet.ru