ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ FPGA (Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ CPU, GPU ΠΈ Xeon Phi). ΠΠ»Ρ ΠΏΠ»Π°Ρ
ΠΠ»Ρ bcrypt, Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π² ~119k c/s ΠΏΡΠΈ 2^5 ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ («$2b$05») Ρ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΠΌΠΎΠΉ ΠΌΠΎΡΠ½ΠΎΡΡΡΡ ΠΎΠΊΠΎΠ»ΠΎ ~27 Π²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠ΅Π²ΠΎΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π΄Π»Ρ Π½ΠΎΠ²Π΅ΠΉΡΠΈΡ
GPU Π² ΡΠ°ΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΠ»Π°ΡΡ, Π½Π° ΡΠ΅Π½Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½Π° Π²Π°ΡΡ. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ
ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΠΊΠΈ (ΡΠ΅ΠΆΠΈΠΌ «—mask», Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅ΠΆΠΈΠΌΠ°ΠΌΠΈ) ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΡ
Ρ
Π΅ΡΠ΅ΠΉ Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ FPGA. Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΈΠ· Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ
ΠΡΡΠ³ΠΈΠ΅ Π²Π°ΠΆΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² Ρ Π΅ΡΠ΅ΠΉ, ΡΠΈΡΡΠΎΠ² ΠΈ Ρ.ΠΏ., Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Ρ Π΅ΡΠΈ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΠΉ QNX), ΡΠ°ΠΊ ΠΈ ΠΊΠΎΡΠ΅Π»ΡΠΊΠΈ ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡ, ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π°ΡΡ ΠΈΠ²Ρ ΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Bitlocker ΠΈ FreeBSD geli), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π½ΠΎΠ²ΡΡ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠ΅ΠΉ ΡΠΎΡΠΌΠ°ΡΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ°Π½Π΅Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° bcrypt-pbkdf Π΄Π»Ρ OpenBSD softraid) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. Π ΠΎΠ±ΡΠ΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 80 ΡΠΎΡΠΌΠ°ΡΠΎΠ² Π½Π° CPU ΠΈ 47 Π½Π° OpenCL. ΠΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΡΠ΅ΠΏΠ΅ΡΡ 407 Π½Π° CPU (ΠΈΠ»ΠΈ 262 Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Ρ «dynamic» ΡΠΎΡΠΌΠ°ΡΡ, Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ) ΠΈ 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, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. - ΠΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ 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 rule commands), ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡ OpenCL ΡΡΡΡΠΎΠΉΡΡΠ² Ρ 1-Π³ΠΎ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ΅Ρ ΠΆΠ΅ Π΄Π»ΠΈΠ½ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ (ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π»ΠΈΠ½Π° 7) ΠΏΡΠΈ ΡΠ΅ΡΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
- ΠΠΎΠ²ΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ (cracking modes), Π²ΠΊΠ»ΡΡΠ°Ρ PRINCE ΠΈΠ· hashcat (ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ «ΡΡΠ°Π·Ρ», ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ² Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΡΡΠΌΠΌΠ°ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ), subsets (ΠΏΠΎΠ΄Π±ΠΈΡΠ°Π΅Ρ ΠΏΠ°ΡΠΎΠ»ΠΈ Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΡΠΈΡΠ»ΠΈ ΠΈΠ· Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ) ΠΈ hybrid external (ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΡΠ΅ΠΆΠΈΠΌΠ°ΠΌ, ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΠΌ Π² ΡΠ°ΠΉΠ»Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° Π‘ΠΈ-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ «ΡΠ»ΠΎΠ²Π°», ΠΏΠΎΡΡΡΠΏΠΈΠ²ΡΠ΅Π³ΠΎ ΠΎΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ°). Π’Π°ΠΊΠΆΠ΅, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½ΠΎΠ²ΡΡ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠΎΠ².
- ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ (ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ²Π΅ΡΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ — stacking), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎ ΡΠ°ΠΊΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π°Π±ΠΎΡΠΎΠ² ΠΏΡΠ°Π²ΠΈΠ» (wordlist rules stacking).
- Π£ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² mask (ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ΅ ΡΠ°ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΠΊΠΈ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Π΄Π»ΠΈΠ½, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΠΊΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ OpenCL-ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈΠ»ΠΈ ΠΏΠ»Π°ΡΡ FPGA) ΠΈ single crack (ΡΠ°Π·ΡΠΌΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ , Π²ΡΡΠΈΡΠ»ΡΡΡΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Ρ Π΅ΡΠ΅ΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, Π½Π° ΡΡΠΎ ΡΠ°Π½Π΅Π΅ Π² ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π½Π΅ Ρ Π²Π°ΡΠ°Π»ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ°ΡΡ ΠΎΠ΄ ΠΏΠ°ΠΌΡΡΠΈ).
- ΠΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Unicode ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ Π² ΡΠ°Π·Π½ΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°Ρ .
- ΠΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ *2john (ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΡ
ΡΠ°ΠΉΠ»Ρ ΡΠ°Π·Π½ΡΡ
ΡΠΎΡΠΌΠ°ΡΠΎΠ² Π΄Π»Ρ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ john), Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ wpapcap2john (ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ WiFi ΡΡΠ°ΡΠΈΠΊ). - ΠΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΡΡ ΠΎΠΏΡΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π² john.conf, ΠΎΠΏΡΠΈΠΉ configure-ΡΠΊΡΠΈΠΏΡΠ° ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ Π·Π΄Π΅ΡΡ.
- ΠΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΡΠ±ΠΎΡΠΎΠΊ Ρ AddressSanitizer (Π±ΡΠ»Π° ΡΠ°Π½Π΅Π΅) ΠΈ UndefinedBehaviorSanitizer (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π°), Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π·Π΅ΡΠ° ΡΠΎΡΠΌΠ°ΡΠΎΠ² (Π² ΡΠ°ΠΌΠΊΠ°Ρ GSoC 2015), ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ (ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ Π΄Π΅ΡΡΡΠΊΠΈ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π²ΡΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΠΎΠ²).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru