ΠΠ΅ΠΉΡ ΠΡΠΊ (Kees Cook), Π±ΠΈΠ²ΡΠΈΡΡ Π³Π»Π°Π²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π½Π° kernel.org ΠΈ Π»ΠΈΠ΄Π΅Ρ Π½Π° Ubuntu Security Team, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΈΡ, ΡΠΈΠΉΡΠΎ ΡΡΠΊΡΠ°ΡΠ΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΠ²ΠΏΠ°Π΄Π° Ρ ΠΊΠΎΠΌΠΈΡ, ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π΄ΠΎΠ±Π°Π²Π΅Π½ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux. ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡΡ Π΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ ΠΊΠ°ΡΠΎ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π»Π΅ΡΡΠΎΠ±ΡΠ°Π·Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠ΅Ρ ΠΎΠ΄Π° ΠΊΡΠΌ 16-ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈ ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux, ΠΎΠ±ΡΡΠΆΠ΄Π°Π½ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π² ΠΈΠΌΠ΅ΠΉΠ» ΡΠΏΠΈΡΡΠΊΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ, Π½ΠΎ Π½Π΅ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ ΠΎΡ ΠΠΈΠ½ΡΡ Π’ΠΎΡΠ²Π°Π»Π΄Ρ.
Π‘ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈ ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ°Ρ ΡΡΠ΅Π· ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΏΡΡΠ²ΠΈΡΠ΅ 12 ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΎΡ Ρ Π΅ΡΠ° SHA-1 (48 Π±ΠΈΡΠ° ΠΎΡ 160 Π±ΠΈΡΠ°). ΠΠΎΡΠ°Π΄ΠΈ ΡΠΎΠ²Π°, ΡΠ΅ Π±ΡΠΎΡΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ Π² ΡΠ΄ΡΠΎΡΠΎ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ ΡΡΠ΅Π· Ρ Π΅Ρ SHA-1, Π½Π°Π΄Π²ΠΈΡΠΈ 13 ΠΌΠΈΠ»ΠΈΠΎΠ½Π°, ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° ΠΊΠΎΠ»ΠΈΠ·ΠΈΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° 12-ΡΠΈΠΌΠ²ΠΎΠ»Π΅Π½ ΠΏΡΠ΅ΡΠΈΠΊΡ ΡΡΠ°Π½Π° Π²ΡΠΏΡΠΎΡ Π½Π° Π²ΡΠ΅ΠΌΠ΅. ΠΠ°ΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ Π²Π΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π² ΡΠ΄ΡΠΎΡΠΎ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠ΅ΡΠΈΡΠ°Ρ ΠΏΠΎ ΡΠ²ΠΎΠΈΡΠ΅ 11-ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΎ, ΡΠ΅ ΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° 12-ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π²Π΅ΡΠ΅ Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΎ ΠΏΡΠ΅Π· ΠΎΠΊΡΠΎΠΌΠ²ΡΠΈ, Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΡΡΠ° Π΅ Π±ΠΈΠ»Π° ΠΎΡΠΊΡΠΈΡΠ° ΡΡΠΈΠ»ΠΈΡΠ° checkpatch.
Π‘ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΊΡΠ°ΡΠΊΠΈ Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ ΠΊΠΎΠΌΠΈΡΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΠ°Π³ "Fixes" ΠΊΠ°ΡΠΎ Π²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ ΠΊΠΎΠΌΠΈΡ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ Π² ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠ΅ΡΠ΅Π½ Π² ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, "Fixes: e21d2170f366"). ΠΠΎΡΠ²Π°ΡΠ° Π½Π° ΠΊΠΎΠ»ΠΈΠ·ΠΈΠΈ, ΠΏΡΠΈ ΠΊΠΎΠΈΡΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π΅Π΄ΠΈΠ½ ΡΡΠΊΡΠ°ΡΠ΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΎΡΡΠΈΡΠ°Ρ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π³ΠΎΠ²Π΅ΡΠ΅ "Fixes". ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π·ΠΈ ΡΠ°Π³ΠΎΠ²Π΅ ΡΠ΅ ΠΎΡΡΠΈΡΠ°Ρ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ° check_fixes, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² ΠΊΠ»ΠΎΠ½Π° linux-next, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° ΠΏΠ°ΡΡΠΎΠ²Π΅ΡΠ΅.
ΠΠΈΠ½ΡΡ Π’ΠΎΡΠ²Π°Π»ΡΠ΄Ρ ΠΏΡΠΎΡΠ²ΠΈ ΡΠΊΠ΅ΠΏΡΠΈΡΠΈΠ·ΡΠΌ ΠΊΡΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π·Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΡΡΠ½ΠΎΡΡ Π±ΡΠΎΡΡ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡΠ° Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΡΠΊ ΠΎΡ Π±ΡΠΎΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ (ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 1/8). ΠΠ°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π°ΠΊΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ ΡΠ±Π»ΡΡΡΡΠΈ ΡΠ΅ ΡΠ»ΡΡΠ°Ρ, ΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΈΡ ΠΈ ΠΎΠ±Π΅ΠΊΡ ΠΎΡ Π΄ΡΡΠ³ ΡΠΈΠΏ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ blob ΠΈΠ»ΠΈ ΠΊΠ»ΠΎΠ½). Π‘ΠΏΠΎΡΠ΅Π΄ Π½Π΅Π³ΠΎ ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ ΡΠ° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈ, Π·Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΡΠ½ΠΈ, ΡΠ΅ΡΠΈΠΌΠΈ ΠΈ Π»Π΅ΡΠ½ΠΈ Π·Π° ΡΠΈΡΠΈΡΠ°Π½e, ΠΈ Π·Π°ΡΠ΅Π³Π° Π½ΡΠΌΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π·Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ΅Ρ Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ.
ΠΠ΄ΠΈΠ½ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΡΠ΅Π· ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π±ΡΠΎΡ Π½Π° Π·Π½Π°ΡΠΈΠΌΠΈΡΠ΅ Π±ΠΈΡΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π½ΠΎΠ² ΡΠΎΡΠΌΠ°Ρ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°ΡΠ° Base36 (ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ 0-9a-z) Π²ΠΌΠ΅ΡΡΠΎ ΡΠ΅ΡΡΠ½Π°Π΄Π΅ΡΠ΅ΡΠΈΡΠ½ΠΈ ΡΠΈΡΡΠΈ. Π‘ΠΏΠΎΡΠ΅Π΄ ΠΠΈΠ½ΡΡ ΡΠ°ΠΊΠ°Π²Π° ΠΏΡΠΎΠΌΡΠ½Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ΅ ΡΠ΅ΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π½ΠΎΠ²ΠΈΡ ΡΠΎΡΠΌΠ°Ρ Π² ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ Π΄Π° ΡΠ΅ Π²ΡΠ²Π΅Π΄Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΡΠΎΡΠΌΠ°ΡΠ°, Π·Π° Π΄Π° ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°Ρ ΡΡΠ°ΡΠΈΡΡ ΠΈ Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΡΠΌΠ°Ρ.
ΠΠ° Π΄Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°, ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΡΡ ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π΅ Π΅ Ρ ΠΈΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π½ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΌΡ Π½Π΅ Π±ΠΈΠ²Π° Π΄Π° ΡΠ΅ ΠΎΡΠ»Π°Π³Π°, ΠΠ΅ΠΉΡ ΠΡΠΊ ΡΠΎΡΠΌΡΠ»ΠΈΡΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ΄ΡΠΎΡΠΎ, ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΠΊΠΎΡΡΠΎ (1da177e4c3f4) ΡΡΠ²ΠΏΠ°Π΄Π½Π° Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° ΠΊΠΎΠΌΠΈΡΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½Π° Π½Π° ΡΠ΄ΡΠΎΡΠΎ 2.6.12-rc2. ΠΠΎΠ»ΠΈΠ·ΠΈΡΡΠ° Π±Π΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½Π° Π·Π° 6 ΡΠ°ΡΠ° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Ρ GPU NVIDIA GeForce RTX 3080.
ΠΠΎΠ΄Π±ΠΎΡΡΡ Π±Π΅ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠ° lucky-commit β Π² ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΠ΅Π»Π΅Π²ΠΈΡ ΠΏΠ°ΡΡ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ
Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ 12-ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ SHA-1 Π½Π΅ ΡΡΠ²ΠΏΠ°Π΄Π½Π΅ Ρ Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ Π² ΡΠ΄ΡΠΎΡΠΎ ΠΏΡΠ΅ΡΠΈΠΊΡΠΈ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅. Π‘ΠΏΠΎΡΠ΅Π΄ ΠΠ΅ΠΉΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° Π½Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΡΠ»ΡΡΠ°Π΅Π½ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ, ΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡ Π½Π° ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Ρ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΠΈ ΡΠ΅Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠ½Π΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
