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