ΠΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ EkopartyΒ 2017 Π² ΠΡΡΠ½ΠΎΡ-ΠΠΉΡΠ΅ΡΠ΅ Π°ΡΠ³Π΅Π½ΡΠΈΠ½ΡΠΊΠΈΠΉ Ρ
Π°ΠΊΠ΅Ρ ΠΠ»ΡΡΡΠ΅Π΄ΠΎ ΠΡΡΠ΅Π³Π° (Alfredo Ortega) ΠΏΠΎΠΊΠ°Π·Π°Π» ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ β ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΊΡΡΡΠΎΠΉ ΠΏΡΠΎΡΠ»ΡΡΠΊΠΈ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠΎΠ½Π°. ΠΠ²ΡΠΊ
HDD ΡΠ»Π°Π²Π»ΠΈΠ²Π°Π΅Ρ, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, Π½ΠΈΠ·ΠΊΠΎΡΠ°ΡΡΠΎΡΠ½ΡΠ΅ Π·Π²ΡΠΊΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΠΈ, ΡΠ°Π³ΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ. Π§Π΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΡΡ ΡΠ΅ΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΠΏΠΎΠΊΠ° Π½Π΅Π»ΡΠ·Ρ, Ρ
ΠΎΡΡ ΡΡΡΠ½ΡΠ΅
ΠΠ²ΡΠΊ β ΡΡΠΎ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΡ Π²ΠΎΠ·Π΄ΡΡ
Π° ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ΅Π΄Ρ. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈΡ
ΡΠ΅ΡΠ΅Π· Π±Π°ΡΠ°Π±Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ½ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΡ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡ
ΠΎ. ΠΠΈΠΊΡΠΎΡΠΎΠ½ ΡΡΡΡΠΎΠ΅Π½ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΊΠ°ΠΊ ΡΡ
ΠΎ β Π·Π΄Π΅ΡΡ ΡΠΎΠΆΠ΅ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΡΡ ΡΠΎΠ½ΠΊΠΎΠΉ ΠΌΠ΅ΠΌΠ±ΡΠ°Π½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π±ΡΠΆΠ΄Π°Π΅Ρ ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠΌΠΏΡΠ»ΡΡ. ΠΡΡΡΠΊΠΈΠΉ Π΄ΠΈΡΠΊ, ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΡΠΎΠΆΠ΅ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½ ΠΌΠΈΠΊΡΠΎΡΠΊΠΎΠΏΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΠΈΠ±ΡΠ°ΡΠΈΡΠΌ ΠΈΠ·-Π·Π° ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΠΉ ΠΎΠΊΡΡΠΆΠ°ΡΡΠ΅Π³ΠΎ Π²ΠΎΠ·Π΄ΡΡ
Π°. ΠΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΠΎ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌ HDD: ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΉ, Π° ΡΠ°ΠΌ ΠΆΡΡΡΠΊΠΈΠΉ Π΄ΠΈΡΠΊ ΡΠ°ΡΡΠΎ ΡΡΠ°ΡΠ°ΡΡΡΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² Π·Π°ΡΠΈΡΡΠ½Π½ΡΠΉ ΠΎΡ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈΠ· ΡΠ΅Π·ΠΈΠ½Ρ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°. ΠΠ· ΡΡΠΎΠ³ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ HDD ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π²ΡΠΊΠΈ. ΠΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ.
ΠΠ»ΡΡΡΠ΅Π΄ΠΎ ΠΡΡΠ΅Π³Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» ΡΠ²ΠΎΠ΅ΠΎΠ±ΡΠ°Π·Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π°ΡΠ°ΠΊΠΈ ΠΏΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ (side-channel attack), Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π°ΡΠ°ΠΊΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠ° Π°ΡΠ°ΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠΎΠ΄Π°Π½Π½ΡΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ . Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Β«Π²Ρ ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈΒ» ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΡ ΡΡΠΈΡΡΠ²Π°ΡΡΠ΅ΠΉ Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΠ»Π°ΡΡΠΈΠ½Ρ HDD, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΡΡΠ΅Π»ΠΈΡΡΡΡ Ρ Π²ΠΈΠ±ΡΠ°ΡΠΈΡΠΌΠΈ ΡΡΠ΅Π΄Ρ, ΡΠΎ Π΅ΡΡΡ ΡΠΎ Π·Π²ΡΠΊΠΎΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΠ·ΠΌΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄Ρ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½ΡΡ , ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΡ Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ/ΠΏΠ»Π°ΡΡΠΈΠ½Ρ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π΄Ρ. Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π² ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ β ΡΠ΅ΠΌ ΡΠΈΠ»ΡΠ½Π΅Π΅ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΡ HDD ΠΈ, Π·Π½Π°ΡΠΈΡ, ΡΠ΅ΠΌ Π³ΡΠΎΠΌΡΠ΅ Π·Π²ΡΠΊ.
ΠΠ°ΠΊ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΡ ΠΆΡΡΡΠΊΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ°? ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ: Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² read ()
β ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΡ, Π·Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠΌΠΈΠ½Π³ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ² Ρ ΡΠΎΡΠ½ΠΎΡΡΡΡ Π΄ΠΎ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Ρ.
Π‘ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Ρ ΡΠ΅ΠΊΡΠΎΡΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΠ»Π°ΡΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΡΡΠ΅Π»ΠΈΡΡΠ΅Ρ Ρ Π²ΠΈΠ±ΡΠ°ΡΠΈΡΠΌΠΈ ΠΊΠΎΡΠΏΡΡΠ° HDD. ΠΠΎΡ ΠΈ Π²ΡΡ.
Π‘ΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ Kscope. ΠΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, Π²ΡΡ Π³Π΅Π½ΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΠΎ.
Π£ΡΠΈΠ»ΠΈΡΠ° Kscope (stat () syscall)
Kscope β ΠΌΠ°Π»Π΅Π½ΡΠΊΠ°Ρ ΡΡΠΈΠ»ΠΈΡΠ° Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΠΎΡ
ΠΎΡΠ½ΡΠΉ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ². ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄
Π ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ read ()
.
ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π·Π²ΡΠΊΠΎΠ·Π°ΠΏΠΈΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ HDD, ΡΠ°Π±ΠΎΡΠ° ΡΡΠΈΠ»ΠΈΡΡ Kscope
ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΡΠ΅ΡΡ Π½Π΅Π»ΡΠ·Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, Π½ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄Π°ΡΡΠΈΠΊΠ° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΉ HDD Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ³ΠΎΠ΄ΠΈΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ Π² ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ Π·Π°ΡΡΠ» ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π² ΡΠ²ΡΡΠ΄ΠΎΠΉ ΠΎΠ±ΡΠ²ΠΈ ΠΈΠ»ΠΈ Π±ΠΎΡΠΈΠΊΠΎΠΌ (Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΠΎΠ±ΡΡ Π² ΠΌΡΠ³ΠΊΠΈΠ΅ ΠΊΡΠΎΡΡΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Π½Π° ΠΏΠΎΠ»Ρ ΠΏΠΎΡΡΠ΅Π»Π΅Π½ ΡΠΎΠ»ΡΡΡΠΉ ΠΊΠΎΠ²ΡΡ, ΡΠΎ HDD Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ β ΡΡΠΎ ΡΡΠΎΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ). ΠΠΎΠΌΠΏΡΡΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π±ΠΈΡΠΎΠ΅ ΡΡΠ΅ΠΊΠ»ΠΎ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΠΏΡΠΎΠΈΡΡΠ΅ΡΡΠ²ΠΈΠ΅ Ρ ΡΠΈΠ»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡΡ Π·Π²ΡΠΊΠ°. Π’ΠΎ Π΅ΡΡΡ ΠΆΡΡΡΠΊΠΈΠΉ Π΄ΠΈΡΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»Ρ ΡΠ²ΠΎΠ΅ΠΎΠ±ΡΠ°Π·Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΠ½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ.
HDD-ΠΊΠΈΠ»Π»Π΅Ρ
ΠΡΡΠ°ΡΠΈ, ΡΡ ΠΎΠΆΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΠ· ΡΡΡΠΎΡ ΠΆΡΡΡΠΊΠΈΡ Π΄ΠΈΡΠΊΠΎΠ². Π’ΠΎΠ»ΡΠΊΠΎ Π·Π΄Π΅ΡΡ ΠΌΡ Π½Π΅ ΡΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΡ Ρ HDD, Π° Π½Π°ΠΎΠ±ΠΎΡΠΎΡ β Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π°ΡΡΡΡ Π½Π° HDD. ΠΡΠ»ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π·Π²ΡΠΊ Π½Π° ΡΠ°ΡΡΠΎΡΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π·ΠΎΠ½ΠΈΡΡΠ΅Ρ Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ HDD, ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π²ΡΠΊΠΎΡΠ΅ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° (ΡΠ΄ΡΠΎ Linux ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ HDD ΡΠ΅ΡΠ΅Π· 120 ΡΠ΅ΠΊΡΠ½Π΄). Π‘Π°ΠΌ ΠΆΡΡΡΠΊΠΈΠΉ Π΄ΠΈΡΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΠ΅ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ.
Π―Π΄ΡΠΎ Linux ΠΎΡΠΊΠ»ΡΡΠΈΠ»ΠΎ ΠΆΡΡΡΠΊΠΈΠΉ Π΄ΠΈΡΠΊ ΠΏΠΎΡΠ»Π΅ 120 ΡΠ΅ΠΊΡΠ½Π΄ ΠΏΠΎΠ΄Π°ΡΠΈ Π·Π²ΡΠΊΠ° Π½Π° ΡΠ΅Π·ΠΎΠ½ΠΈΡΡΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΎΡΠ΅ ΡΠ΅ΡΠ΅Π· Π΄ΠΈΠ½Π°ΠΌΠΈΠΊ USB-ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Edifier r19u. ΠΠΈΠ½Π°ΠΌΠΈΠΊ Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΡΡ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ (ΠΌΠ΅Π½Π΅Π΅ 100Β ΠΌΠΡ) ΠΈ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π² 20Β ΡΠΌ ΠΎΡ HDD, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΡΠΎΠ» Π΄Π»Ρ ΡΡΠΈΠ»Π΅Π½ΠΈΡ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΉ. ΠΠ°Π΄Ρ ΠΈΠ·
ΠΡΠ±ΠΎΠΏΡΡΠ½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΈΠ΅ Β«Π°ΡΠ°ΠΊΠΈΒ» Π½Π° HDD ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ΅Π½ΡΡΠ±ΡΠ΅ 2016 Π³ΠΎΠ΄Π° Π΄Π°ΡΠ°-ΡΠ΅Π½ΡΡ ING Bank Π±ΡΠ» Π²ΡΠ½ΡΠΆΠ΄Π΅Π½ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π° 10 ΡΠ°ΡΠΎΠ² ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠΆΠ°ΡΠ½ΡΡ
ΡΡΠ΅Π½ΠΈΠΉ.
ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΡΠΈΠΊΠ° Π½Π° ΠΆΡΡΡΠΊΠΈΠ΅ Π΄ΠΈΡΠΊΠΈ Π² Π΄Π°ΡΠ°-ΡΠ΅Π½ΡΡΠ΅. ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ
ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ΅Π·ΠΎΠ½ΠΈΡΡΡΡΠ΅Π³ΠΎ Π·Π²ΡΠΊΠ° ΠΠ»ΡΡΡΠ΅Π΄ΠΎ ΠΡΡΠ΅Π³Π° Π½Π°ΠΏΠΈΡΠ°Π» ΠΏΠΈΡΠΎΠ½ΠΎΠ²ΡΠΊΠΈΠΉ ΡΠΊΡΠΈΠΏΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ
"""PyAudio hdd-killer: Generate sound and interfere with HDD """
"""Alfredo Ortega @ortegaalfredo"""
"""Usage: hdd-killer /dev/sdX"""
"""Where /dev/sdX is a spinning hard-disk drive"""
"""Turn the volume to the max for better results"""
"""Requires: pyaudio. Install with 'sudo pip install pyaudio' or 'sudo apt-get install python-pyaudio'"""
import pyaudio
import time
import sys
import math
import random
RATE=48000
FREQ=50
# validation. If a disk hasn't been specified, exit.
if len(sys.argv) < 2:
print "hdd-killer: Attempt to interfere with a hard disk, using sound.nn" +
"The disk will be opened as read-only.n" +
"Warning: It might cause damage to HDD.n" +
"Usage: %s /dev/sdX" % sys.argv[0]
sys.exit(-1)
# instantiate PyAudio (1)
p = pyaudio.PyAudio()
x1=0
NEWFREQ=FREQ
# define audio synt callback (2)
def callback(in_data, frame_count, time_info, status):
global x1,FREQ,NEWFREQ
data=''
sample=0
for x in xrange(frame_count):
oldsample=sample
sample=chr(int(math.sin(x1*((2*math.pi)/(RATE/FREQ)))*127)+128)
data = data+sample
# continous frequency change
if (NEWFREQ!=FREQ) and (sample==chr(128)) and (oldsample<sample) :
FREQ=NEWFREQ
x1=0
x1+=1
return (data, pyaudio.paContinue)
# open stream using callback (3)
stream = p.open(format=pyaudio.paUInt8,
channels=1,
rate=RATE,
output=True,
stream_callback=callback)
# start the stream (4)
stream.start_stream()
# wait for stream to finish (5)
while stream.is_active():
timeprom=0
c=file(sys.argv[1])
for i in xrange(20):
a=time.clock()
c.seek(random.randint(0,1000000000),1) #attempt to bypass file buffer
c.read(51200)
b=time.clock()
timeprom+=b-a
c.close()
timeprom/=20
print("Frequency: %.2f Hz File Read prom: %f us" % (FREQ,timeprom*1000000))
NEWFREQ+=0.5
# stop stream (6)
stream.stop_stream()
stream.close()
# close PyAudio (7)
p.terminate()
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com