αα
αααα»αααααα·αα·ααα»ααααα·ααΆααα»αααααΌααα Ekoparty 2017 αα
ααΈαααα»α Buenos Aires α αααααα’αΆα ααααααΈα Alfredo Ortega ααΆααααα αΆαααΆαα’αα·αααααααα½αα±ααα
αΆααα’αΆαααααααα½α αααααΆαααααααααααααΆααααΆααα½α
αααααααααα·αααααααα·αααααΎααΈααααΌα αααΌαα ααα‘αα
HDD ααααΎαααΎαααΆα
ααααααΌαααα‘αααααααΆααααααααααΆα ααααα·αααα‘ααααααα ααα αΆα αα·ααααααααααααααα ααΆααα·ααΆαααααααα»ααααα·αα’αΆα
ααααΌαααΆαααααα½αααααΆαααα
α‘αΎααα αααααΈααΆα’ααααα·ααααΆααΆααααααααααα
ααα‘ααααΊααΆααΆααααααααααααα α¬α§ααααααααα»αααααααααα ααα»αααααααΆαααααααΎααα½αααααΆαααααααααΆααααα
αα ααααααααΌαααααααα
αααα
ααααΆααααα»αα ααΈααααΌα αααΌαααααΌαααΆααα
ααΆα‘αΎααααα αΆαααααα ααααΉααααα
αα - αα
ααΈαααααααα ααΆααααααααααΌαααΆααααααααΆαααααααΆαααααΎα αααααααΎα’αααααααα’αααα·αααΈα ααΆααΆααα·αααΆαα ααααΆαααααΉαααααα½αααααΆααααααααΈααααΌααααααααααα αααααΆαααααΆααααααααα½αααααααααα»ααα·αα αααααααΌαααΆαααααααΆααααΌααααΈααααΈαααααααα
αα
ααααααααα HDDs αααααα αααα»αα αα»αααα·αααΆααααααΆαααα αΆαααΈααααα·αααααααααα’αΆα
α’αα»ααααΆαααΆαα’αα·ααααΆ α αΎαααΆαααΉααααα½αα―αααΆααΏααααααΆααΆαααΆααααΆαα
αααα»ααα»ααααααΉαααααααααααααΎααΈαα
αααΌ α¬αααααΆααα’ααΈααΌα‘ααααααααααα ααΈαααααΆααΆααααα½ααααα»αααΆαααααα·ααααΆαααΆααα‘ααα’αΆα
ααααΌαααΆααααααααααΎ HDD α α’αααΈααααα
αααααΊααααΌαααααααααααΈααααα
Alfredo Ortega ααΆαααααΎαααααααα½ααααααααΆαααΆααααα αΆαααΆαααΆααααα½αααΊααΆαααΆααααα αΆααααααααΆα ααΆαααΆααααα αΆααααααΊααα’ααααΎααΆαααααααααΆααααα·ααααα·ααΆααααααααααΆααααΌαααΆαα’αα»αααααα ααΎα§ααααααα ααααααααααααΆ α’αΆαααααααΎαα·αααααααααα αΌααααααΆααααααα±ααα αααα»αααααΈααα "αα·αααααααααα αΌα" ααΊααΆααΆααααααααααααΆαα’αΆα αα·αααααα HDD αααααΆααααααΆαα½ααααααααααα·ααααΆα αααααΊααΆαα½αααΉαααα‘ααα ααΌα αααααααααΆαααΆααααααααααααααΆααααΆ αα·αααααΎααΆααα·ααΆααααα·αα·αααα·αααααα ααΆα’αΆα ααΆααααααααααααααααααΆα/α αΆα α αΎαα ααα»ααΌα ααααα αΎαααΆααααααααααα§ααααααααα»αα ααΆααααααΆααααααα»αααΆαα’αΆααα·ααααααααΆααααααΌα ααΆαααααα HDD ααΆααααααααΆαα α αΎαααΌα ααααααα‘ααααΆααααααααΆααα
ααΎααααΎααΌα
ααααα
ααΎααααΈααΆαααααααααααααΆαααααΉα? ααΆααααααΆααα ααααΆααααααααΎαααΆαααΆαα α
ααΆααααααααα read ()
- αα·ααααααααΆαααααααΆαααααΆααααΌαααΆαααΎααααΈαααα
ααα ααααααααααααα·ααααα·ααΆαααααΎαα’αα»ααααΆαα±ααα’αααα’αΆααααααααΆααααΆαα α
ααααααααααΆαα½αααΉαααΆαααααΉαααααΌα nanosecond α
ααααΏαααααΆαα’αΆαααααααΆαααΈαα·ααααα½αα’αΆααααααα ααΎααΈααΆααααααααααΆα αα·αα αΆαααΆααααααα αααααΆααααααΆαα½ααααααααααααΈ HDD α α’ααα αΎαα
ααΆααα·ααΆααααα·αα·ααααΌαααΆαα’αα»αααααααααααΎα§αααααααααΎααααΆαα Kscope ααΆααααα ααΌα ααααα½ααααα·ααΆα α’αααΈααααααααΆααααααα·αααααααααΊααΆααααα
α§αααααααααΎααααΆαα Kscope (stat() syscall)
Kscope ααΊβααΆβα§αααααβααααΎααααΆααβααΌα
βαα½αβαααααΆααβααΎαβααΎαβααΈβααΆαβαα»αβααααΆβααΌα
βαβαα
βαααα»αβαααβααααα·ααααα·βααΆαβα α
βααΌαααααβααααβααααααααα ααααα
αα
αααα»αααααΆααααΆα
ααααα‘αα read ()
.
ααΆααααα αΆαααΈααΆαααααα‘αααααααααΎ HDD ααααα·ααααα·ααΆαααααα§αααααααααΎααααΆαα Kscope
ααΆααΆααα·αααΆαα ααΆααα·ααΆααα·αα’αΆα αααααΆαααΆααα·ααΈααα ααα»αααα HDD ααΊαα·αααΆααααααααΆα§αααααα αΆαααααααΆαααααα α§ααΆα ααα α’αααα’αΆα α α»αααααα ααααα·αααΎα’αααααΆαααααααααΎαααΉα α¬ααΎαααααα αΌαααααααααΆαα½ααα»αααααΌααα (αααα ααααΆααααα·αααΎα’αααααΆααααα αΆαααΆαααααααααΎααααΆααΆααα α¬ααΆαααααΆαααααααααΆαααα ααΎα₯ααα HDD ααΉααα·αα’αΆα α α»αααααααααααααΆααα - αααααΆαααααααα·αα·ααα) α αα»αααααΌαααα’αΆα α α»αααααααααα ααααΌα α¬α§αααααα ααα»ααααααααααΆαα½αααΉαααααα·αααα‘ααααααΆααα αααααΊααΆ ααααΆαααααΉαα’αΆα αααααΎααΆααααααααααααααααααααΎαααΆαααααΆαααΆααααααααΆαααΆαα’αα»ααααΆαα
ααΆααα HDD
ααααα·ααΈααααα αα αααααααααααααααΆα’αΆα ααααΌαααΆαααααΎααΎααααΈαα·αααααΆαααααΉαα ααΆααααα ααΈααααααααααΎααα·ααααααααα ααααΈ HDD ααα»αααααααα»ααα αα·α ααΎααααααΎαααααααααααααΌαααΆααααα αΌααα αααα»α HDD α ααααα·αααΎα’αααα αΆααααα‘ααααΈα§ααααααααααααααααα ααααααααααααααααΉαααααααα HDD αααααααααααααΉααα·αα§αααααααααΆαααααααΆαααα α»α I/O (ααΊαααααΈαα»α αα·α HDD ααΆαααααα»ααααααΆααααΈ 120 αα·ααΆααΈ)α ααΆαααΉααααα½αα―αα’αΆα ααααΆαααΌα ααΆαααααα·αα’αΆα αααα‘αααα·αααΆαα
ααΊαααααΈαα»α
ααΆααα·αααααΆαααααΉααααααΆααααΈ 120 αα·ααΆααΈααααΆααααααααα‘αααα
ααααααα resonant ααΆααααα§αααααααααααα‘αα Edifier r19u USB speaker α α§αααααααααααααααααααΌαααΆαααΎααα
αααα αααα½αααΆααα½αααααΆααα (αα·α
ααΆα 100 mW) αα·ααααα·ααα
α
ααααΆα 20 αααααΈααααααααΈ HDD αααα
ααΎαα»ααΎααααΈαααααΎαααΆααααααα ααα»αααΈ
ααΆαα½αα±ααα
ααααΉααααααΆ "ααΆαααΆααααα αΆα" ααααααααΎ HDDs αα½αααΆαααΎαα‘αΎαααΆαααααα»ααααα
ααααααα
αααα»αααΈαα·ααααα
αΆαααααα ααΆα§ααΆα ααα αααα»ααααααααΆ ααααΆα 2016 ααααααααααα·αααααααααααααΆααΆα ING ααααΌαααΆααααααα±ααααα’αΆαααααα·ααααα·ααΆααααααα 10 αααααααααΆααααΈααΆαα αααΉαα αΆααααααΎαα
ααΆααααα αΆαααΈααΆααααααααααααα»ααααα ααΎ hard drive αα αααα»αααααααααααα·ααααααα ααΆαααΆαααααααΆαααΊααααΆα
ααΎααααΈαααααΎαααα‘αααααα Alfredo Ortega ααΆααααααα’αααα Python α α ααΆ
"""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