Buenos Aires ááœááºáá»ááºážáááá·áº Ekoparty 2017 ááœááºáá»á°áá¬áá¯á¶ááŒá¯á¶áá±ážááœááºáááá·áºááœáẠá¡á¬áá»ááºáá®ážáá¬ážáááºáᬠAlfredo Ortega ááẠááá¯ááºáááá¯áá¯ááºážááá¯á¡áá¯á¶ážáááŒá¯áá² áá»áŸáá¯á·ááŸááºááŒáá¯ážááá¯ááºááŒááºážá¡ááœáẠá¡ááœááºá
áááºáááºá
á¬ážááœááºáá±á¬ááºážáá±á¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠááŒááá²á·áááºá á¡áá¶
HDD ááẠá¡áááá¡á¬ážááŒáá·áº ááŒááºážáááºááŸá¯ááŒáá·áºáá¬ážáá±á¬ ááŒáááºááŸá¯ááºážáááá·áºá¡áá¶áá»á¬ážá ááŒá±áá¶áá»á¬ážááŸáá·áº á¡ááŒá¬ážáá¯ááºáá«ááŸá¯áá»á¬ážááᯠáá±á¬ááºáá°áááºá áááá¹áá¶ááá¬ááŸááºáá»á¬áž ááŒá
áºáá±á¬áºáááºáž áá°á·á¡ááŒá±á¬á¡ááá¯ááᯠá¡ááá¡ááŸááºáááŒá¯ááá¯ááºáá±ážáá±á
á¡áá¶ááẠáá±ááá¯ááºáá«ááŸá¯ ááá¯á·ááá¯áẠá¡ááŒá¬ážáá±á¬ ááŒá¬ážáá¶ááŒá
áºáááºá áá°áá
áºáŠážááẠáááºážááá¯á·á¡á¬áž áá¬ážá
ááºááŸáááá·áº ááááºááááŒá®áž á¡ááœááºážáá¬ážááᯠáá¯ááºáá«ááŸá¯ááŒá
áºá
á±áááºá ááá¯ááºáááá¯áá¯ááºážááᯠáá¬ážááœááºáá²á·ááá¯á· á¡ááŒááºážáá»ááºáž áá®ááá¯ááºážáá¯ááºáá¬ážááẠ- á€áá±áá¬ááœááºáááºáž áá»áŸááºá
á
áºááœááºážá¡á¬ážááᯠááŸá¯á¶á·áá±á¬áºáá±ážááá·áº áá«ážááœáŸá¬áá±á¬ á¡ááŒáŸá±ážáá«ážáá
áºáá¯ááŒáá·áº áá¯ááºáá«ááŸá¯áá»á¬ážááᯠááŸááºáááºážáááºáá¬ážáááºá áá¬á·ááºáááá¯ááºááẠáááºáááºážáá»ááºáá±áá¯á¡áááºá¡áá»ááŒá±á¬áá·áº á¡áá¯ááŒáá·áºáá¯ááºáá«ááŸá¯áá»á¬ážáááºáž áááºáá±á¬ááºáá«áááºá HDD áá»á¬ážá áááºážááá¬ááá¯ááºáᬠáááá±áááá¹ááá¬áá»á¬ážááŸááẠááááŸááááº- áá¯ááºáá¯ááºáá°áá»á¬ážááẠá¡áá»á¬ážá¡á¬ážááŒáá·áº ááœáá·áºááŒá¯ááá¯ááºáá±á¬ áá¯ááºáá«ááŸá¯á¡ááá·áºááᯠááœáŸááºááŒáá±á·ááŸáááŒá®áž hard drive ááá¯ááºááá¯ááºá áááºážááᯠáá±á¬áºáᬠááá¯á·ááá¯áẠá¡ááŒá¬áž insulating material ááŒáá·áº ááŒá¯áá¯ááºáá¬ážáá±á¬ áá¯ááºáá«ááŸá¯áááºáá¶ááá¯ááºáá±á¬ ááœááºááááºáá¬ááœáẠáá¬ážáá±á·ááŸááááºá áááºážá០á¡áá¶áá»á¬ážááᯠHDD ááŒáá·áº ááŸááºáááºážáááºááá¯ááºáááºáᯠáá±á¬ááºáá»ááºáá»ááẠááœááºáá°áááºá áá»ááºáá¬ááá±á¬á· áááºááá¯ááŒá
áºááá² ááá¯áá¬ááᯠá¡ááŒá±ááŸá¬ááá¯á·áá«áá²á
Alfredo Ortega ááẠá¡áá»áááºááá¯ááºááá¯ááºááŸá¯áᯠá¡áááºáááá·áº áá±ážááœááºáá»ááºáááºááá¯ááºááá¯ááºááŸá¯á áá°ážááŒá¬ážáá±á¬áá¬ážááŸááºážááᯠá¡ááá¯ááŒá¯áá²á·áááºá á€ááá¯ááºááá¯ááºááŸá¯ááẠáá±ážáá¬ážááá·áº ááá·áºááœááºážáá±áá¬áá±á«áº áá°áááºá á ááºáá á¹á ááºážáá±á«áºááœáẠááá°áá®áá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡áá»áááºá¡áá»áá¯ážáá»áá¯ážááœáẠáá¯ááºáá±á¬ááºáááºáᯠáá°ááá»ááºá¡áá±á«áº á¡ááŒá±áá¶áá¬ážáááºá á€ááá á¹á ááœááºá "input data" ááẠáááºáááºážáá»ááºááá¯ááºáá«ááŸá¯áá»á¬ážá á¡áá¶ááŒáá·áºáááºá ááºáá±ááá·áº á á¬áááºáá±á«ááºážááŸáá·áº HDD áááºáááºážá áá¯ááºáá«ááŸá¯áá»á¬ážááŒá áºáááºá ááá¯á·ááŒá±á¬áá·áºá ááœááºáá»ááºááŸá¯á¡áá»áááºááᯠááá¯ááºážáá¬ááŒá®áž áá±áá¬á ááááºážááááºážááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááᯠáá¯ááºáá±á¬ááºááŒááºážááŒáá·áºá áŠážáá±á«ááºáž/áááºážáááºááŒá¬ážá áá¯ááºáá«ááŸá¯áá»á¬ážááŒá±á¬áá·áº ááŒá¬ážáá¶ááá¯ááºáá«ááŸá¯áá»á¬ážááᯠááá¯ááºážáá¬ááá¯ááºáááºá áá±áá¬áááºááŒááºážááœáẠááŒá¬ááŒá¬ááŸá±á¬áá·áºááŸá±ážáá± HDD áá¯ááºáá«ááŸá¯ á¡á¬ážáá±á¬ááºážáá±áá±á ááá¯á·ááŒá±á¬áá·áº á¡áá¶ááá¯áá»ááºáá±ááŒá áºáááºá
hard drive áá¯ááºáá«ááŸá¯ááᯠáááºááá¯ááá¯ááºážáá¬ááá²á á¡ááœááºááá¯ážááŸááºážáá«áááº- á
áá
áºáá±á«áºááá¯ááŸá¯ááá¯áᬠáá¯ááºáá±á¬ááºáá«á read ()
â ááŒá®ážááŒá±á¬ááºááẠááá¯á¡ááºááá·áºá¡áá»áááºááᯠááŸááºáááºážáááºáá«á áá±ááºáá®áááºáááºááŸá¯á
áá
áºáá»á¬ážááẠááá·áºá¡á¬áž áá¬ááá¯á
áá¹ááá·áºáááá»ááŸá¯ááŒáá·áº á
áá
áºáá±á«áºááá¯ááŸá¯á¡áá»áááºááᯠáááºááá¯ááºá
á±áá«áááºá
ááá¹ááá áºáá¯á០ááááºážá¡áá»ááºá¡áááºáá»á¬áž áááºááŸá¯ááŒááºážá¡ááŒááºááŸá¯ááºážááẠHDD á¡áááºá áá¯ááºáá«ááŸá¯áá»á¬ážááŸáá·áº áááºá ááºáá±ááá·áº áŠážáá±á«ááºážááŸáá·áº áááºážáááºááŒá¬áž á¡áá±á¡áá¬ážá¡áá±á«áº áá°áááºáááºá áá«áá«áá²á
ááá¯ážááŸááºážáá±á¬ Kscope utility ááᯠá¡áá¯á¶ážááŒá¯á á á¬áááºážá¡ááºážááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááᯠáá¯ááºáá±á¬ááºáááºá áá°ááá¯á·ááŒá±á¬áááᯠáá¬ááºááá¬á ááá¯ážááŸááºážáá«áááºá
Kscope á¡áá¯á¶ážáááºááŸá¯ (stat() syscall)
Kscope ááẠá
áá
áºáá±á«áºááá¯ááŸá¯áá¯ááºáá±á¬ááºááá·áºá¡áá»áááºáá»á¬ážááœáẠáá±ážáááºáá±á¬ááœá²ááŒá¬ážááŸá¯áá»á¬ážááᯠááŒááºáá¬á
á±áááºá¡ááœáẠáá±ážáááºáá±á¬á¡áá¯á¶ážáááºááŸá¯áá
áºáá¯ááŒá
áºáááºá á¡áááºážá¡ááŒá
áº
áá®ážááŒá¬ážááá¯ááŸá±á¬ááºááŸá¯ááœáẠread ()
.
HDD ááᯠá¡áá¯á¶ážááŒá¯á á¡áá¶áááºážáá°ááŒááºáž ááá¯ááºááŒááŒááºážá Kscope utility á áá¯ááºáá±á¬ááºááŸá¯
áá¯ááºáá«áááºá á áá¬ážáá¶ááᯠáá®áááºážáá²á· áá¬ážááááºááá¯ááºáá±ááá·áº HDD áᬠáá¯ááºáá«ááŸá¯á¡á¬áá¯á¶áá¶áááááá¬áá áºáá¯á¡áá±áá²á· á¡áá±á¬áºáá±ážááᯠááá·áºáá»á±á¬áºáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááááºááŒááºážá á®ážáá¬ážáá° ááá¯á·ááá¯áẠááŒá±áá±á¬ááºááá¬áááºáááºáá¬ážáá°ááẠááœááºáá»á°áá¬ááŸáá·áº á¡áááºážáá²ááá¯á· áááºáá«á á á¬áááºážááœááºážááá¯ááºááẠ(ááŒá áºááá¯ááºáááºá ááá¯ááºááá¯ááºáá°ááẠáá»á±á¬á·áá»á±á¬ááºážáá±á¬áááááºááᯠáááºáá¬ážáá»áŸáẠááá¯á·ááá¯áẠááŒááºážááŒááºáá±á«áºááœáẠáá±á¬áºáá±á¬áá°áá«á HDD ááẠáá¯ááºáá«ááŸá¯áá»á¬ážááᯠá á¬áááºážááœááºážááá¯ááºáááºááá¯ááºáá« - áá«áá¬á á áºáá±ážááá»áá¯ážáááºáá«áááºá) ááœááºááŒá°áá¬ááẠá¡áá¶ááŒááºážááŒááºážááŒáá·áº ááŸááºááœá²ááŒááºáž ááá¯á·ááá¯áẠá¡ááŒá¬ážáá±á¬ á¡ááŒá áºá¡áá»ááºáá»á¬ážááᯠááŸááºáááºážáááºááá¯ááºáááºá ááá¯ááá¯áááºááŸá¬á áá¬á·ááºáááá¯ááºááẠááœáá·áºááŒá¯áá»ááºáááŸááá² áá»á°ážáá»á±á¬áºáááºáá±á¬ááºááŸá¯ááᯠáá±á¬ááºááŸááºážááŒááºážá áá áºáá áºáá»áá¯ážá¡ááŒá Ạáá¯ááºáá±á¬ááºááá¯ááºáááºá
HDD áá°áááºááá¬áž
á áá¬ážáá ááºá á¡áá¬ážáá°áááºážááá¬ááᯠhard drives áá»á¬ážááᯠdisable áá¯ááºááá¯ááºáááºá á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠHDD á០áá¯ááºááŸá¯ááºááŒááºážáá»á¬ážááᯠááááºááŸá¬ážáá±á¬áºáááºáž ááá·áºáá»ááºáááºá¡áá±ááŸáá·áº HDD ááá¯á· áá±ážááá¯á·áá±á¬ áá¯ááºááŸá¯ááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±ážáá«áááºá áááºááẠHDD ááŒáááºááŸá¯ááºážááŸáá·áº áá²á·áááºáááºááá·áº ááŒáááºááŸá¯ááºážááŒáá·áº á áá®áá¬á០á¡áá¶ááᯠááœáá·áºáá«áá á áá áºááẠáááŒá¬áá® I/O á¡ááŸá¬ážáá áºáá¯ááŒáá·áº á ááºáá á¹á ááºážááᯠááááºááœá¬ážáá«ááẠ(Linux kernel ááẠá áá¹ááá·áº 120 ááŒá¬ááŒá®ážáá±á¬áẠHDD ááᯠáá¯á¶ážáááááºááœá¬ážáááº)á áá¬á·ááºáááá¯ááºááá¯ááºááá¯ááºá áá±á¬ááºááŒááºááá¯ááºááá¯ááºáá²á· áá»ááºá á®ážááŸá¯ááᯠáá¶á á¬ážáááá¯ááºáá«áááºá
Edifier r120u USB á
áá®áá¬áá
áá®áá¬ááŸáááá·áº áá²á·áááºáááºáá±á¬ááŒáááºááŸá¯ááºážááŒáá·áº á¡áá¶áá¯ááºáá±ážááá·áº á
áá¹ááá·áº 19 á¡ááŒá¬ááœáẠLinux kernel ááẠhard drive ááᯠááááºááá¯ááºáááºá á
áá®áá¬á¡á¬áž áá«áá«ááá±ážáá¯á¶áá
áºáá¯á¶ááá·áº (100 mW áááºáááºážáá±á¬) ááœááºááœáá·áºáá¬ážááŒá®áž áá¯ááºáá«ááŸá¯áá»á¬ážááᯠááŒáŸáá·áºáááºááẠá
á¬ážááœá²áá±á«áºáááºááœááºá HDD á០20 á
ááºáá®áá®áá¬á¡ááœá¬ááœáẠáááºááŸááááºá áá±á¬ááºááá±
HDD áá»á¬ážáá±á«áºááœááºá€áá²á·ááá¯á·áá±á¬ "ááá¯ááºááá¯ááºááŸá¯" áá»á¬ážáááºáá±á·á
ááºááááœááºáááŒá¬ááááá±á¬áºááááŸá¯áá¯á¶ážáááŒá
áºááœá¬ážááŒá±á¬ááºážáááá»ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá 2016 áá¯ááŸá
Ạá
ááºáááºáá¬áááœáẠING Bank áá±áá¬á
ááºáá¬ááẠáá®ážáááºáá±á·áá»áá·áºááŸá¯ááŒá¯áá¯ááºááŒá®ážáá±á¬áẠ10 áá¬áá®ááŒá¬ áá¯ááºáááºážáááºáááºááŸá¯ááᯠáááºááá¯ááºážáá¬ážáá²á·ááááºá
áá±áá¬á ááºáá¬áá áºáá¯ááŸá áá¬á·ááºáááá¯ááºáá»á¬ážá¡ááœááºáž áá°áá¬ážáá»á¬ážá á¡á±á¬áºáá áºáá¶ááᯠááá¯ááºááŒááŒááºážá Latency ááá¯ááºážáá¬ááŒááºážá
áá²á·áááºáááºáá±á¬á¡áá¶ááá¯áá¯ááºáá¯ááºáááºá¡ááœáẠAlfredo Ortega áá¯áá±á«áºáá±á¬ Python script ááá¯áá±ážáá¬ážáá²á·áááºá
"""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()
source: www.habr.com