
Di konferansa ewlehiya komputerê ya Ekoparty 2017 de li Buenos Aires, hackerê Arjantînî Alfredo Ortega pêşkeftinek pir balkêş nîşan da - pergalek ji bo guhdarîkirina veşartî ya cîhan bêyî karanîna mîkrofonê. Rengdan !
HDD bi giranî dengên frekansa nizm, bi tundî bilind, gav û vibrasyonên din digire. Axaftina mirovan hîn jî nayê naskirin, her çend zanyar (naskirina axaftinê bi vibrasyonên frekansa nizm, ku ji bo nimûne, ji gyroscope an HDD-ê têne tomar kirin).
Deng lerizîna hewayê an navgînek din e. Mirov wan bi riya perdeya guhê, ku vibrasyonê diguhezîne guhê hundur, wan dihesibîne. Mîkrofon hema hema mîna guhek hatî sêwirandin - li vir jî, vibrasyon ji hêla membranek zirav ve têne tomar kirin, ku pêlekek elektrîkê heyecan dike. Bê guman, ajokera hişk jî ji ber guheztinên hewaya derdorê berbi vibrasyonên mîkroskopî ve tê. Ev yek ji taybetmendiyên teknîkî yên HDD-ê jî tê zanîn: hilberîner bi gelemperî asta vibrasyonê ya herî zêde destûr destnîşan dikin, û ajokera hişk bi xwe pir caran hewl dide ku wê di konteynirek vibrasyonê ya ku ji gomûk an materyalek din a îzolekirî hatî çêkirin de bi cîh bike. Ji vê yekê hêsan e ku meriv encam bike ku deng dikarin bi karanîna HDD-ê bêne tomar kirin. Tiştê ku dimîne ev e ku meriv çawa bibîne.
Alfredo Ortega guhertoyek bêhempa ya êrîşek kanalek alî, ango êrişek demkî, pêşniyar kir. Ev êrîş li ser bingeha wê yekê ye ku operasyonên cihêreng li ser cîhazê di demên cûda de têne kirin, li gorî daneyên têketinê têne dayîn. Di vê rewşê de, "daneyên têketinê" lerizînên serê xwendinê û plattera HDD-ê ye, ku bi vibrasyonên hawîrdorê, ango bi deng re têkildar e. Bi vî rengî, bi pîvandina dema hesabkirinê û pêkanîna analîzek îstatîstîkî ya daneyan, lerizînên serê/platterê û ji ber vê yekê lerzînên navîn dikarin werin pîvandin. Derengiya xwendina daneyê çiqas dirêjtir be, lerizînên HDD-ê bihêztir dibe û, ji ber vê yekê, deng jî bilindtir dibe.
Meriv çawa vibrasyona dîska hişk bipîve? Pir hêsan: tenê banga pergalê bimeşînin read () - û dema ku ew temam dike tomar bikin. Pergalên xebitandinê yên nûjen dihêlin ku hûn dema bangên pergalê bi rastbûna nanosecondê bixwînin.
Leza xwendina agahdariya ji sektorek bi pozîsyona serî û platterê ve girêdayî ye, ku bi vibrasyonên doza HDD-ê re têkildar e. Navê pêger.
Analîza statîstîkî bi karanîna karûbarek Kscope ya hêsan tête kirin. Wekî ku ew dibêjin, her tişt aqilmend hêsan e.

Alîkariya Kscope (stat() syscall)
Kscope ji bo xuyangkirina cûdahiyên piçûk di demên darvekirina banga pergalê de amûrek piçûk e. Kanî.
Di depoyek cuda de guhertoyek amûreyê heye ku ji bo êrîşek demkî ya li ser dîska hişk hatî mîheng kirin, ango ji bo analîzkirina banga pergalê hatî mîheng kirin. read ().
Xwenîşandana tomarkirina deng bi karanîna HDD-ê, xebitandina kargêriya Kscope

Bê guman, axaftin bi vî rengî nayê fêm kirin, lê HDD wekî senzorek vibrasyonê pir maqûl e. Mînakî, hûn dikarin xwe tomar bikin ger kesek pêlavên hişk an lingên tazî bi komputerek bikeve jûreyek (dibe ku, heke êrîşkar pêlavên nerm li xwe bike an jî xalîçeyek stûr li erdê hebe, HDD dê nikaribe vibrasyonên tomar bike - ev hêjayî kontrolê ye). Komputer dikare camên şikestî an bûyerên din ên bi dengek bihêz tomar bike. Ango, dîska hişk dikare wekî celebek pergala vedîtina destwerdanê ya nedestûrdar bike.
qatil HDD
Bi awayekî din, teknîkek dişibihe vê dikare ji bo neçalakkirina dîskên hişk were bikar anîn. Lêbelê, li vir em lerizînên ji HDD-ê nagirin, lê belê lerizînên ku ji HDD-ê re têne şandin çêdikin. Ger hûn deng ji axaftvanek bi frekansek ku bi frekansa HDD-ê re têkildar e bilîzin, pergal dê di demek kurt de cîhazê bi xeletiyek I/O (kernel) bigire. Linux (Ev piştî 120 saniyeyan HDD bi tevahî digire.) Dibe ku hard dîska bixwe bi awayekî bêveger zirar bibîne.

Core Linux Piştî 120 saniyeyan lêxistina deng bi frekanseke rezonansê bi rêya axaftvana USB ya Edifier r19u, dîska hişk qut bû. Axaftvan bi qasî çaryeka hêza xwe (kêmtir ji 100 mW) hate vekirin û 20 cm ji HDD dûr hate danîn, ber bi maseyê ve hate nîşankirin da ku lerizînê zêde bike. Hîn jî ji bi xwenîşandanek kujerê HDD
Meraq e ku "êrîş"ên weha li ser HDD-an carinan di jiyana rojane de bi tevahî bi xeletî çêdibin. Mînakî, di îlona 2016-an de, navenda daneyê ya ING Bank neçar ma ku 10 demjimêran xebatan rawestîne piştî ceribandinek agir. ji ber dengê bilind ê gaza bêserûber di bin tansiyona bilind de ji silindiran derdikeve. Deng pir bilind bû (ji 130 dB zêdetir), lê hûn nekarin li ser dîskên hişk jî biqîrin - ev dereng di gihîştina HDD-ê de zêde dike.
Xwepêşandana qîrîna mirovan li ser dîskên hişk ên li navendek daneyê. Pîvana derengbûnê

Ji bo afirandina dengê resonê, Alfredo Ortega skrîptek Python bi navê nivîsand ().
Ew pir piçûk e, ji ber vê yekê hûn dikarin wê bi tevahî li vir biweşînin.
"""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
