ΠΡΡΠ½Π°ΡΠΎ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π½Π°ΠΉ-ΡΡΠ°ΡΠ°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π·Π° ΠΏΠΎΠ΄Π±ΠΎΡ Π½Π° ΠΏΠ°ΡΠΎΠ»ΠΈ John the Ripper 1.9.0-jumbo-1. (ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΎΡ 1996 Π³ΠΎΠ΄ΠΈΠ½Π°.) ΠΠ° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²Π΅, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π³ΠΎΡΠΎΠ²ΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π·Π° Windows.
ΠΡΠ±Π΅Π»ΡΠ·Π²Π° ΡΠ΅, ΡΠ΅ ΠΎΡ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ΡΠΎ Π½Π° Π²Π΅ΡΡΠΈΡ 1.8.0-jumbo-1 ΡΠ° ΠΌΠΈΠ½Π°Π»ΠΈ 4.5 Π³ΠΎΠ΄ΠΈΠ½ΠΈ, ΠΏΡΠ΅Π· ΠΊΠΎΠΈΡΠΎ ΡΠ° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ Π½Π°Π΄ 6000 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ (git commits) ΠΎΡ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 80 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ. ΠΡΠ΅Π· ΡΠΎΠ·ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°Ρ Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΠ΅Π΄Π°ΠΊΡΠΈΡ ΠΎΡ GitHub, ΡΠΈΠΉΡΠΎ ΡΡΠ°ΡΡΡ Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ ΡΡΠ°Π±ΠΈΠ»Π΅Π½, Π²ΡΠΏΡΠ΅ΠΊΠΈ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π²ΡΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ (pull request) Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ. Π‘ΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΡΡΡΠ° Π½Π° Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π΅ ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° FPGA (ΠΠΠΠ‘) Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ CPU, GPU ΠΈ Xeon Phi.
ΠΠ° ΠΏΠ»Π°Ρ ZTEX 1.15y, ΠΊΠΎΠΈΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΠΏΠΎ 4 FPGA ΡΠΈΠΏΠ° ΠΈ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π·Π° ΠΊΠΎΠΏΠ°Π΅Π½Π΅ Π½Π° Bitcoin, ΡΠ΅Π³Π° ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ 7 ΡΠΈΠΏΠ° Ρ
Π΅ΡΠΎΠ²Π΅ Π½Π° ΠΏΠ°ΡΠΎΠ»ΠΈ: bcrypt, ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈ descrypt (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ bigcrypt), sha512crypt, sha256crypt, md5crypt (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Apache apr1 ΠΈ AIX smd5), Drupal7 ΠΈ phpass (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅, Π² ΡΠ°ΡΡΠ½ΠΎΡΡ, Π² WordPress). ΠΡΠΊΠΎΠΈ ΠΎΡ ΡΡΡ
ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π½Π° FPGA Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ. ΠΠ° bcrypt, ΠΏΠΎΡΡΠΈΠ³Π½Π°ΡΠ°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π΅ ~119k c/s ΠΏΡΠΈ 2^5 ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ (β$2b$05β) Ρ ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ°Π½Π° ΠΌΠΎΡΠ½ΠΎΡΡ ΠΎΠΊΠΎΠ»ΠΎ 27 Π²Π°ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°Π΄ΠΌΠΈΠ½Π°Π²Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ Π·Π° Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡΠ΅ GPU ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°ΡΠΊΠ°, ΡΠ΅Π½Π° Π½Π° ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅ΡΠΎ ΠΈ ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡ Π½Π° Π²Π°Ρ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ ΠΎΡ ΡΠΎΠ·ΠΈ ΡΠΈΠΏ ΠΏΠ»Π°ΡΠΊΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄ΠΎ 16 ΠΏΠ»Π°ΡΠΊΠΈ (64 FPGA), ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΈ ΠΎΡ Π΅Π΄ΠΈΠ½ Raspberry Pi 2. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΠΎΠ±ΠΈΡΠ°ΠΉΠ½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π½Π° John the Ripper, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ Π·Π° ΠΏΠΎΠ΄Π±ΠΎΡ Π½Π° ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ° Π½Π° Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Ρ
Π΅ΡΠΎΠ²Π΅. ΠΠ° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ°ΡΠΊΠ° (ΡΠ΅ΠΆΠΈΠΌ "βmask", Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ) ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡΠ΅ Ρ
Π΅ΡΠΎΠ²Π΅ Ρ Π½Π°ΡΠΎΠ²Π°ΡΠ΅Π½ΠΈΡΠ΅ Π½Π° ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° FPGA. ΠΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ°, Π² ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΈΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° sha512crypt ΠΈ Drupal7) ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅, ΡΡΡΡΠΎΡΡΠΈ ΡΠ΅ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ΄ΡΠ° (soft CPU cores), Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ²Π°ΡΠΈ Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠΈ ΡΠ΄ΡΠ°. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄Π΅Π½Π° ΠΎΡ ΠΠ΅Π½ΠΈΡ ΠΡΡΡΠΊΠΈΠ½ Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ jumbo.
ΠΡΡΠ³ΠΈ Π²Π°ΠΆΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ Ρ Π΅ΡΠΎΠ²Π΅, ΡΠΈΡΡΠΈ ΠΈ Ρ.Π½., Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠ°ΠΊΡΠΎ ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ»Π½ΠΈ Ρ Π΅ΡΠΎΠ²Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡ Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° QNX), ΡΠ°ΠΊΠ° ΠΈ ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΠ½ΠΈ ΠΏΠΎΡΡΡΠ΅ΠΉΠ»ΠΈ, ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈ Π°ΡΡ ΠΈΠ²ΠΈ ΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Bitlocker ΠΈ FreeBSD geli), ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π½ΠΎΠ²ΠΈ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠΈ Π½Π° ΡΠΎΡΠΌΠ°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π±ΡΡ Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° bcrypt-pbkdf Π·Π° OpenBSD softraid) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎ. ΠΠ±ΡΠΎ 80 ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° CPU ΠΈ 47 Π½Π° OpenCL (ΠΈ ΠΌΠ°Π»ΠΊΠΎ Π½Π° Π±ΡΠΎΡ ΡΡΠ°ΡΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ΠΈ Π² Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ). ΠΠ±ΡΠΈΡΡ Π±ΡΠΎΠΉ ΡΠΎΡΠΌΠ°ΡΠΈ ΡΠ΅Π³Π° Π΅ 407 Π½Π° CPU (ΠΈΠ»ΠΈ 262 Π±Π΅Π· βΠ΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈΡΠ΅β ΡΠΎΡΠΌΠ°ΡΠΈ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅) ΠΈ 88 Π½Π° OpenCL.
- ΠΡΠΊΠ°Π· ΠΎΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° CUDA Π² ΠΏΠΎΠ»Π·Π° Π½Π° OpenCL, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ ΠΏΡΠ΅ΡΠΈ Π½Π° ΠΏΡΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° GPU ΠΎΡ NVIDIA (ΠΈ Π΄ΠΎΡΠΈ ΠΏΠΎΠΌΠ°Π³Π°, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠΊΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π²ΡΡΡ Ρ Π΅Π΄Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠΎΡΠΌΠ°Ρ Π·Π° GPU Π²ΠΌΠ΅ΡΡΠΎ Π΄Π²Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΠΈ).
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π½ΠΎΠ²ΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ SIMD β AVX2, AVX-512 (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π° Π²ΡΠΎΡΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ Xeon Phi) ΠΈ MIC (Π·Π° ΠΏΡΡΠ²ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅) β ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΠΎ-ΡΠΈΡΠΎΠΊΠΎ ΠΈ ΠΏΡΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° SIMD Π² ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Π²Π΅ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΡΠΈΠ³Π°ΡΠΈ Π΄ΠΎ AVX ΠΈ XOP Π½Π° x86(-64) ΠΈ
NEON, ASIMD ΠΈ AltiVec Π½Π° ARM, Aarch64 ΠΈ POWER, ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ. (Π§Π°ΡΡΠΈΡΠ½ΠΎ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° GSoC 2015.) - ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π° CPU ΠΈ OpenCL, ΠΊΠ°ΠΊΡΠΎ Π·Π° ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Ρ Π΅ΡΠΎΠ²Π΅ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Ρ 320 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ Π΅ΡΠΎΠ²Π΅ SHA-1 Π½Π° GPU), ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½Π° Ρ Π΅ΡΠΎΠ²Π΅. Π§Π°ΡΡ ΠΎΡ ΡΠ΅Π·ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΈ, ΡΠ°ΡΡ ΠΎΠ±Ρ Π²Π°ΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΈ, Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ.
- (ΠΠ²ΡΠΎ-)Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΎΠΏΡΠΈΠΌΠ°Π»Π½Π° Π±ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ Π½Π° CPU ("βtune=auto βverbosity=5") ΠΈ ΠΎΠΏΡΠΈΠΌΠ°Π»Π½ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΈ Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π½Π° OpenCL (Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅), Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Ρ ΠΎΠ³Π»Π΅Π΄ Π½Π° Π±Π°Π²Π½ΠΎΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π½Π΅ Π΄ΠΎ ΠΏΡΠ»Π½Π° ΡΠ°Π±ΠΎΡΠ½Π° ΡΠ΅ΡΡΠΎΡΠ° Π½Π° GPU ΡΠ΅ΡΠΈΡ NVIDIA GTX 10xx ΠΈ ΠΏΠΎ-Π½ΠΎΠ²ΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π°Π»Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ΅Π½ΠΈ Ρ Π΅ΡΠΎΠ²Π΅ ΠΈ ΡΠ΅Π°Π»Π½Π° Π΄ΡΠ»ΠΆΠΈΠ½Π° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ (ΠΊΠΎΠ³Π°ΡΠΎ ΡΡ Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ) Π·Π° ΡΠ°ΠΊΠ°Π²Π° Π°Π²ΡΠΎ-Π½Π°ΡΡΡΠΎΠΉΠΊΠ°.
- ΠΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Π·Π° βΠ΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈβ, ΡΠΊΠ°Π·Π²Π°Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠΈ Π½ΠΎΠ²ΠΈ Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ Ρ Π΅ΡΠΎΠ²Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ "βformat=dynamic=βsha1(md5($p).$s)β", ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½ΠΈ Π½Π° CPU Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° SIMD. ΠΠ°ΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΠΈΠ·ΡΠ°Π·ΠΈ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π΄Π΅ΡΠ΅ΡΠΊΠΈ Π±ΡΡΠ·ΠΈ Ρ Π΅ΡΠΎΠ²Π΅ (ΠΎΡ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡΠ΅ ΠΊΠ°ΡΠΎ MD5 Π΄ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΎ Π΅ΠΊΠ·ΠΎΡΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠ°ΡΠΎ Whirlpool), ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΡΡΡΠΈΠ½Π³ΠΎΠ²Π΅, ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅, ΡΠΏΡΠ°Π²ΠΊΠΈ ΠΊΡΠΌ ΠΏΠ°ΡΠΎΠ»Π°ΡΠ°, ΡΠΎΠ»ΡΠ°, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΈΠΌΠ΅ ΠΈ Π½ΠΈΠ·ΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ.
- ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΆΠ΅Π»Π°Π½ΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΎΡ hashcat, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠ΅Π΄ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° hashcat ΠΏΡΠ°Π²ΠΈΠ»Π° (ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° wordlist ΠΏΡΠ°Π²ΠΈΠ»ΠΎ), ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡ Π½Π° OpenCL ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΡΠ° ΠΎΡ 1-Π²ΠΈ, ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠΈΡΠ΅ Π΄ΡΠ»ΠΆΠΈΠ½ΠΈ Π½Π° ΠΏΠ°ΡΠΎΠ»ΠΈΡΠ΅ (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΄ΡΠ»ΠΆΠΈΠ½Π° 7) ΠΏΡΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ.
- ΠΠΎΠ²ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ (cracking modes), Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ PRINCE ΠΎΡ hashcat (ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ βΡΡΠ°Π·ΠΈβ, ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°ΠΉΠΊΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄ΡΠΌΠΈ Π² ΡΠ΅Π΄Π° Π½Π° Π½Π°ΡΠ°ΡΡΠ²Π°ΡΠ° ΠΎΠ±ΡΠ° Π΄ΡΠ»ΠΆΠΈΠ½Π°), subsets (ΠΏΠΎΠ΄Π±ΠΈΡΠ° ΠΏΠ°ΡΠΎΠ»ΠΈ Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, Π΄ΠΎΡΠΈ ΠΈ ΡΠ΅Π·ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π΄Π° ΠΏΡΠΎΠΈΠ·Π»ΠΈΠ·Π°Ρ ΠΎΡ Π³ΠΎΠ»ΡΠΌ Π½Π°Π±ΠΎΡ ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ) ΠΈ hybrid external (ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π²ΡΠ½ΡΠ½ΠΈΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΠΈ, ΠΎΠΏΠΈΡΠ²Π°Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° C-ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π΅Π·ΠΈΠΊ, Π΄Π° ΡΠΎΡΠΌΠΈΡΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π²ΡΡΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ βΡΠ»ΠΎΠ²ΠΎβ, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ ΠΎΡ Π΄ΡΡΠ³ ΡΠ΅ΠΆΠΈΠΌ). Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½ΠΎΠ²ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π²ΡΠ½ΡΠ½ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ.
- ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ (Π΅Π΄ΠΈΠ½ Π²ΡΡΡ Ρ Π΄ΡΡΠ³ β stacking), Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΡΠ°ΠΊΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½Π°Π±ΠΎΡΠΈ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π° (wordlist rules stacking).
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ mask (ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ°ΡΠΊΠ°ΡΠ° Π² ΡΠΊΠ°Π·Π°Π½ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ Π΄ΡΠ»ΠΆΠΈΠ½ΠΈ, ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠ°ΡΠΊΠ°ΡΠ° Π½Π° ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° OpenCL ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ ΠΈΠ»ΠΈ FPGA ΠΏΠ»Π°ΡΠΊΠ°ΡΠ°) ΠΈ single crack (ΡΠ°Π·ΡΠΌΠ½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°ΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ Π΅ΡΠΎΠ²Π΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ, Π·Π° ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π½Π΅ ΡΡΠΈΠ³Π°ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ Π² ΡΠΎΠ·ΠΈ ΡΠ΅ΠΆΠΈΠΌ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ°Π·Ρ ΠΎΠ΄Π° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ).
- ΠΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Unicode ΠΈ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠΈ.
- ΠΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ *2john (ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ Π·Π°
ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Ρ john), Π² ΡΠ°ΡΡΠ½ΠΎΡΡ wpapcap2john (ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° WiFi ΡΡΠ°ΡΠΈΠΊ). - ΠΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ ΡΠ΅Π΄, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² john.conf, ΠΎΠΏΡΠΈΠΈ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡ ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ Ρ ΡΡΡ Π½ΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π΄Π°Π»Π΅Ρ Π½Π΅ Π²ΡΠΈΡΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° ΡΠΏΠΎΠΌΠ΅Π½Π΅ΠΌ ΡΡΠΊ.
- ΠΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΎΡΠ»Π°Π΄ΡΡΠ½ΠΈ ΡΠ±ΠΈΡΠΊΠΈ Ρ AddressSanitizer (ΠΏΠΎ-ΡΠ°Π½ΠΎ) ΠΈ UndefinedBehaviorSanitizer (Π΄ΠΎΠ±Π°Π²Π΅Π½), Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½ ΡΠ°Π·Π·Π΅Ρ Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈ (Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° GSoC 2015), ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ (ΡΠ±ΠΈΡΠΊΠΈ Π·Π° Π΄Π΅ΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ ΠΈ ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π² ΡΡΡ Π·Π° ΠΊΠΎΡΠ΅ΠΊΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
