Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π½Π° Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π΅ ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° 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 Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° (ΠΈΠ»ΠΈ 262, Π±Π΅Π· Π΄Π° ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ "Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈΡΠ΅" ΡΠΎΡΠΌΠ°ΡΠΈ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅) ΠΈ 88 Π½Π° OpenCL.
- ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° Π΅Π·ΠΈΠΊΠΎΠ²Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° CUDA Π² ΠΏΠΎΠ»Π·Π° Π½Π° OpenCL, ΠΊΠΎΠ΅ΡΠΎ Π½ΠΈ Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ Π½Π΅ ΠΏΡΠ΅ΡΠΈ Π½Π° ΠΏΡΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° NVIDIA GPU (ΠΈ Π΄ΠΎΡΠΈ ΠΏΠΎΠΌΠ°Π³Π°, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠΊΡΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π²ΡΡΡ Ρ Π΅Π΄Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠΎΡΠΌΠ°Ρ ΠΏΠΎΠ΄ 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), ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° Ρ Π΅ΡΠΎΠ²Π΅ΡΠ΅. ΠΡΠΊΠΎΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΈ, Π½ΡΠΊΠΎΠΈ ΠΏΠΎΠΊΡΠΈΠ²Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΠ΄Π³ΡΡΠΏΠΈ ΠΎΡ ΡΠΎΡΠΌΠ°ΡΠΈ, Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΡΠΎΡΠΌΠ°Ρ.
- (ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π°) Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΎΠΏΡΠΈΠΌΠ°Π»Π½ΠΎ Π±ΡΡΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° (β-tune=auto βverbosity=5β) ΠΈ ΠΎΠΏΡΠΈΠΌΠ°Π»Π½ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΈ Π½Π° Π·Π°Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° OpenCL (Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅), Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠ°ΡΠΎ ΡΠ΅ Π²Π·Π΅ΠΌΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π±Π°Π²Π½ΠΎΡΠΎ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π΄ΠΎ ΠΏΡΠ»Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ½Π° ΡΠ΅ΡΡΠΎΡΠ° Π½Π° GPU ΠΎΡ ΡΠ΅ΡΠΈΡΡΠ° NVIDIA GTX 10xx ΠΈ ΠΏΠΎ-Π½ΠΎΠ²ΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π°Π»Π½ΠΎ Π·Π°ΡΠ΅Π΄Π΅Π½ΠΈ Ρ Π΅ΡΠΎΠ²Π΅ ΠΈ ΡΠ΅Π°Π»Π½Π° Π΄ΡΠ»ΠΆΠΈΠ½Π° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ (ΠΊΠΎΠ³Π°ΡΠΎ Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ) Π·Π° ΡΠ°ΠΊΠ°Π²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°.
- ΠΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Π½Π° "Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ", ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠΊΠ°Π·Π°Π½ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ ΠΈ ΠΏΡΠΈΠ»Π°Π³Π° Π½ΠΎΠ²ΠΈ Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ Ρ Π΅Ρ ΡΠΈΠΏΠΎΠ²Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ "--format=dynamic='sha1(md5($p).$s)'", ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ Π½Π° CPU ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ SIMD. ΠΠ΅ΡΠ΅ΡΠΊΠΈ Π±ΡΡΠ·ΠΈ Ρ Π΅ΡΠΎΠ²Π΅ (ΠΎΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΠΊΠ°ΡΠΎ MD5 Π΄ΠΎ Π»Π΅ΠΊΠΎ Π΅ΠΊΠ·ΠΎΡΠΈΡΠ½ΠΈ ΠΊΠ°ΡΠΎ Whirlpool), ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ Π½Π° ΠΏΠΎΠ΄Π½ΠΈΠ·ΠΎΠ²Π΅, ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° Π³Π»Π°Π²Π½ΠΈ ΠΈ ΠΌΠ°Π»ΠΊΠΈ Π±ΡΠΊΠ²ΠΈ, ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈ ΠΊΡΠΌ ΠΏΠ°ΡΠΎΠ»ΠΈ, ΡΠΎΠ», ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎ ΠΈΠΌΠ΅ ΠΈ Π½ΠΈΠ·ΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΠΈΠ·ΡΠ°Π·ΠΈ.
- ΠΠ»ΠΈΠΌΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅ΠΆΠ΅Π»Π°Π½ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ ΠΎΡ hashcat, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° hashcat ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΡΠΏΠΈΡΡΠΊ Ρ Π΄ΡΠΌΠΈ, ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΊΡΠΌ Π½ΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π½Π° OpenCL ΠΎΡ 1, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΡΠΈΡΠ΅ Π΄ΡΠ»ΠΆΠΈΠ½ΠΈ Π½Π° ΠΏΠ°ΡΠΎΠ»ΠΈΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΄ΡΠ»ΠΆΠΈΠ½Π° 7) Π·Π° ΡΠ΅ΡΡΠΎΠ²Π΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ.
- ΠΠΎΠ²ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΡΠ°ΠΊΠ½Π°ΡΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ (ΡΠ΅ΠΆΠΈΠΌΠΈ Π·Π° ΠΊΡΠ°ΠΊΠ²Π°Π½Π΅), Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ PRINCE ΠΎΡ hashcat (Π³Π΅Π½Π΅ΡΠΈΡΠ° "ΡΡΠ°Π·ΠΈ" ΡΡΠ΅Π· ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄ΡΠΌΠΈ Π²ΡΠ² Π²ΡΠ·Ρ ΠΎΠ΄ΡΡ ΡΠ΅Π΄ Π½Π° ΠΎΠ±ΡΠ° Π΄ΡΠ»ΠΆΠΈΠ½Π°), ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° (Π½ΠΎΡΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½ Π±ΡΠΎΠΉ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π½Π°ΡΠΈ, Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΡΠ΅Π·ΠΈ Π·Π½Π°ΡΠΈ ΠΈΠ΄Π²Π°Ρ ΠΎΡ Π³ΠΎΠ»ΡΠΌ Π½Π°Π±ΠΎΡ ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ) ΠΈ Ρ ΠΈΠ±ΡΠΈΠ΄Π΅Π½ Π²ΡΠ½ΡΠ΅Π½ (ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ, ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° C-ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π΅Π·ΠΈΠΊ, Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π²ΡΡΠΊΠ° Π±Π°Π·ΠΎΠ²Π° βΠ΄ΡΠΌΠ°β, ΠΏΠΎΠ»ΡΡΠ΅Π½Π° ΠΎΡ Π΄ΡΡΠ³ ΡΠ΅ΠΆΠΈΠΌ). Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½ΠΎΠ²ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π²ΡΠ½ΡΠ½ΠΈ ΡΠ΅ΠΆΠΈΠΌΠ°.
- ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ (Π΅Π΄ΠΈΠ½ Π²ΡΡΡ Ρ Π΄ΡΡΠ³ - ΠΏΠΎΠ΄ΡΠ΅ΠΆΠ΄Π°Π½Π΅), ΠΊΠ°ΠΊΡΠΎ ΠΈ Π·Π° ΡΠ°ΠΊΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½Π°Π±ΠΎΡΠΈ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π° (ΠΏΠΎΠ΄ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΡΠΏΠΈΡΡΠΊ Ρ Π΄ΡΠΌΠΈ).
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ Π½Π° ΠΌΠ°ΡΠΊΠ° (ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ°Π·ΡΡΠ³Π°Π½Π΅ Π½Π° ΠΌΠ°ΡΠΊΠ°ΡΠ° Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ Π΄ΡΠ»ΠΆΠΈΠ½ΠΈ, ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠ°ΡΠΊΠ°ΡΠ° ΠΎΡΡΡΡΠ°Π½ΠΈ Π½Π° OpenCL ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈΠ»ΠΈ FPGA ΠΏΠ»Π°ΡΠΊΠ°) ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎ ΠΏΡΠΎΠΏΡΠΊΠ²Π°Π½Π΅ (ΡΠ°Π·ΡΠΌΠ½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Ρ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Ρ Π΅ΡΠΎΠ²Π΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΈ Π² ΡΠΎΠ·ΠΈ ΡΠ΅ΠΆΠΈΠΌ Π»ΠΈΠΏΡΠ²Π°Ρ Π° ΠΏΠ°ΡΠΎΠ»ΠΈ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ).
- ΠΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Unicode ΠΈ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠΈ.
- ΠΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ *2john (ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ Π²
ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Ρ john), ΠΎΡΠΎΠ±Π΅Π½ΠΎ wpapcap2john (ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° WiFi ΡΡΠ°ΡΠΈΠΊ). - ΠΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° john.conf, ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΠΌ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ Π²ΡΠΈΡΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈ ΡΡΠΊ.
- ΠΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° ΠΏΠΎΡΠ°Π΄ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Ρ AddressSanitizer (ΠΏΡΠ΅Π΄ΠΈΡΠ΅Π½) ΠΈ UndefinedBehaviorSanitizer (Π΄ΠΎΠ±Π°Π²Π΅Π½), Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½ ΡΠ°Π·ΠΌΡΡΠ΄Π°ΡΠ΅Π» Π½Π° ΡΠΎΡΠΌΠ°Ρ (Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° GSoC 2015), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ (Π±ΠΈΠ»Π΄ΠΎΠ²Π΅ Π·Π° Π΄Π΅ΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ ΠΈ ΡΠ΅ΡΡΠ²Π°ΠΉΠΊΠΈ Π³ΠΈ Π·Π° ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru