Keistimewaan versi baru ini adalah munculnya dukungan FPGA (selain CPU, GPU, dan Xeon Phi). Untuk papan
Untuk bcrypt, pencapaian kinerja ~119k c/s dengan 2^5 iterasi (“$2b$05”) dengan konsumsi daya ~27 watt secara signifikan melebihi hasil untuk GPU terbaru per board, per harga perangkat keras, dan per watt . Juga didukung
Untuk mempercepat pekerjaan, kami menerapkan penggunaan mask (mode “—mask”, termasuk dalam kombinasi dengan mode lain) dan perbandingan hash yang dihitung dengan yang dimuat di sisi FPGA. Dari perspektif implementasi, banyak desain (mis.
Perubahan penting lainnya:
- Dukungan untuk sejumlah besar jenis hash, sandi, dll. tambahan, termasuk hash kata sandi klasik (misalnya, dari QNX versi baru), serta dompet mata uang kripto, arsip terenkripsi, dan sistem file terenkripsi (misalnya, Bitlocker dan FreeBSD geli), serta dukungan untuk format jenis baru yang didukung sebelumnya (misalnya, menambahkan dukungan untuk bcrypt-pbkdf untuk softraid OpenBSD) dan banyak lagi. Secara total, 80 format telah ditambahkan pada CPU dan 47 pada OpenCL. Jumlah total format sekarang adalah 407 pada CPU (atau 262 tidak termasuk format "dinamis" yang dikonfigurasi dari file konfigurasi) dan 88 pada OpenCL.
- Penolakan untuk mendukung bahasa CUDA demi OpenCL, yang sama sekali tidak mengganggu penggunaan penuh GPU NVIDIA (dan bahkan membantu, berkat memfokuskan pengembangan dan pengoptimalan pada satu implementasi dari setiap format untuk GPU, bukan dua implementasi sebelumnya).
- Dukungan untuk set instruksi SIMD baru - AVX2, AVX-512 (termasuk Xeon Phi generasi kedua) dan MIC (untuk generasi pertama) - serta penggunaan SIMD yang lebih universal dan lengkap dalam implementasi banyak format, termasuk penggunaan instruksi yang didukung sebelumnya diatur ke AVX dan XOP pada x86(-64) dan
NEON, ASIMD dan AltiVec masing-masing pada ARM, Aarch64 dan POWER. - Banyak pengoptimalan untuk CPU dan OpenCL, keduanya agar lebih efisien bekerja dengan sejumlah besar hash secara bersamaan (misalnya, memuat 320 juta hash SHA-1 pada GPU telah diuji), dan untuk meningkatkan kecepatan penghitungan hash. Beberapa optimasi ini bersifat universal, beberapa mencakup subkumpulan format yang berbeda, dan banyak lagi yang spesifik untuk masing-masing format.
- (Otomatis)konfigurasi buffering optimal dari kata sandi yang diperiksa pada CPU (“—tune=auto —verbosity=5”) dan ukuran pekerjaan optimal pada OpenCL (diaktifkan secara default), termasuk memperhitungkan jalur lambat hingga frekuensi pengoperasian penuh GPU seri NVIDIA GTX 10xx dan yang lebih baru. Menggunakan hash yang sebenarnya dimuat dan panjang kata sandi sebenarnya yang diperiksa (bila diketahui sebelumnya) untuk penyetelan otomatis tersebut.
- Menambahkan kompiler untuk "ekspresi dinamis" yang ditentukan langsung pada baris perintah dan mengimplementasikan tipe hash hibrid baru, misalnya "-format=dynamic='sha1(md5($p).$s)'", yang dihitung pada CPU menggunakan SIMD . Sebagai komponen ekspresi tersebut, lusinan hash cepat didukung (dari yang umum seperti MD5 hingga yang cukup eksotis seperti Whirlpool), penggabungan substring, penyandian dan penguraian kode, konversi huruf besar-kecil, referensi ke kata sandi, garam, nama pengguna, dan konstanta string.
- Penghapusan perbedaan yang tidak diinginkan dari hashcat, termasuk dukungan untuk aturan khusus hashcat sebelumnya (perintah aturan daftar kata), transisi ke perangkat OpenCL yang diberi nomor dari 1, penggunaan default panjang kata sandi yang sama (biasanya panjang 7) untuk pengujian kinerja.
- Mode baru untuk menghasilkan kata sandi yang dapat diverifikasi (mode cracking), termasuk PRINCE dari hashcat (membentuk “frasa” dengan menggabungkan beberapa kata dalam urutan panjang total), subset (memunculkan kata sandi dengan jumlah karakter berbeda yang tidak mencukupi, bahkan jika karakter ini berasal dari sejumlah besar kemungkinan) dan hybrid eksternal (memungkinkan mode eksternal, dijelaskan dalam file konfigurasi dalam bahasa mirip C, untuk menghasilkan banyak kata sandi yang dapat diverifikasi berdasarkan setiap “kata” dasar yang diterima dari mode lain). Juga, beberapa mode eksternal baru yang telah ditentukan sebelumnya.
- Fitur tambahan untuk menggunakan beberapa mode secara bersamaan (satu di atas yang lain - menumpuk), serta untuk menggunakan kumpulan aturan (penumpukan aturan daftar kata).
- Perbaikan pada mode mask (peregangan masker secara bertahap dalam rentang panjang tertentu, penerapan masker di sisi perangkat OpenCL atau papan FPGA) dan retakan tunggal (perilaku wajar pada perangkat yang menghitung hash dalam jumlah besar secara paralel , yang sebelumnya tidak memiliki cukup kata sandi yang dapat diverifikasi dalam mode ini, dan juga pembatasan konsumsi memori).
- Banyak perbaikan pada dukungan Unicode dan pengkodean lainnya di berbagai subsistem.
- Banyak perbaikan pada program *2john (yang mengonversi file dengan format berbeda
gunakan dengan john), terutama wpapcap2john (menangani lalu lintas WiFi). - Ada banyak opsi baris perintah baru, pengaturan di john.conf, opsi konfigurasi skrip, dan fitur baru terkait, tidak semuanya disebutkan di sini.
- Meningkatkan kualitas kode berkat dukungan bawaan untuk build debug dengan AddressSanitizer (sebelumnya) dan UndefinisiBehaviorSanitizer (ditambahkan), menambahkan fuzzer format bawaan (sebagai bagian dari GSoC 2015), menggunakan integrasi berkelanjutan (dibuat untuk lusinan sistem operasi dan compiler kombinasi dan mengujinya untuk dukungan yang benar untuk semua format).
Sumber: opennet.ru