Неліктен қатты дискіге айқайламау керек?

Неліктен қатты дискіге айқайламау керек?

Буэнос-Айрестегі Ekoparty 2017 компьютерлік қауіпсіздік конференциясында аргентиналық хакер Альфредо Ортега өте қызықты әзірлеме көрсетті - микрофонды пайдаланбай үй-жайларды жасырын тыңдау жүйесін. Дыбыс тікелей қатты дискіге жазылған!

HDD негізінен жоғары қарқынды төмен жиілікті дыбыстарды, аяқ дыбыстарын және басқа тербелістерді қабылдайды. Ғалымдар болса да, адамның сөйлеуін әлі тануға болмайды осы бағытта зерттеу жұмыстарын жүргізуде (мысалы, гироскоптан немесе HDD-ден жазылған төмен жиілікті діріл арқылы сөйлеуді тану).

Дыбыс – ауаның немесе басқа ортаның тербелісі. Адам оларды ішкі құлаққа тербелістерді жіберетін құлақ қалқаны арқылы қабылдайды. Микрофон шамамен құлақ сияқты жасалған - мұнда да тербеліс электрлік импульсті қоздыратын жұқа мембрана арқылы жазылады. Қатты диск, әрине, қоршаған ауаның ауытқуына байланысты микроскопиялық тербелістерге ұшырайды. Бұл тіпті HDD-лердің техникалық сипаттамаларынан да белгілі: өндірушілер әдетте максималды рұқсат етілген діріл деңгейін көрсетеді, ал қатты дискінің өзі жиі оны резеңкеден немесе басқа оқшаулағыш материалдан жасалған дірілге қарсы контейнерге орналастыруға тырысады. Осыдан дыбыстарды HDD көмегімен жазуға болады деген қорытынды жасауға болады. Қалай екенін анықтау ғана қалады.

Альфредо Ортега бүйірлік арналы шабуылдың бірегей нұсқасын, атап айтқанда уақыттық шабуылды ұсынды. Бұл шабуыл берілген кіріс деректеріне байланысты құрылғыда әртүрлі операциялар әртүрлі уақытта орындалады деген болжамға негізделген. Бұл жағдайда «кіріс деректері» қоршаған ортаның тербелістерімен, яғни дыбыспен сәйкес келетін оқу басы мен HDD пластинасының тербелісі болып табылады. Осылайша, есептеу уақытын өлшеу және деректердің статистикалық талдауын орындау арқылы бастың/пластинаның дірілдерін, демек, ортаның тербелістерін өлшеуге болады. Деректерді оқудағы кідіріс неғұрлым ұзақ болса, HDD дірілдері соғұрлым күшті болады, демек, дыбыс соғұрлым күшті болады.

Қатты дискінің дірілін қалай өлшеуге болады? Өте қарапайым: жай ғана жүйелік қоңырауды іске қосыңыз read () — және оны аяқтауға кететін уақытты жазып алыңыз. Заманауи операциялық жүйелер жүйелік қоңыраулардың уақытын наносекундтық дәлдікпен оқуға мүмкіндік береді.

Сектордан ақпаратты оқу жылдамдығы HDD корпусының дірілдеріне сәйкес келетін бас пен табақтың орнына байланысты. Осымен болды.

Статистикалық талдау қарапайым Kscope утилитасының көмегімен жүзеге асырылады. Олар айтқандай, тапқырлардың бәрі қарапайым.

Неліктен қатты дискіге айқайламау керек?
Kscope утилитасы (stat() syscalll)

Kscope - жүйелік қоңырауларды орындау уақытындағы кішкене айырмашылықтарды визуализациялауға арналған шағын утилита. ДереккөзGitHub сайтында жарияланған.

Бөлек репозиторийде HDD-уақыты утилитаның қатты дискіге уақытша шабуыл жасау үшін конфигурацияланған нұсқасы бар, яғни жүйелік қоңырауды талдау үшін конфигурацияланған read ().

HDD көмегімен дыбыс жазуды көрсету, Kscope утилитасының жұмысы


Әрине, сөйлеуді бұлай түсіну мүмкін емес, бірақ HDD діріл сенсоры ретінде өте қолайлы. Мысалы, қатты аяқ киім киген немесе жалаң аяқ адам компьютері бар бөлмеге кіргенін тіркей аласыз (мүмкін, егер шабуылдаушы жұмсақ кроссовка киіп жүрсе немесе еденде қалың кілем болса, HDD дірілді тіркей алмайды - бұл тексеруге тұрарлық). Компьютер сынған әйнектерді немесе күшті дыбыс қарқындылығы бар басқа оқиғаларды тіркей алады. Яғни, қатты диск рұқсат етілмеген енуді анықтау жүйесінің бір түрі ретінде қызмет ете алады.

HDD өлтірушісі

Айтпақшы, қатты дискілерді өшіру үшін ұқсас техниканы қолдануға болады. Тек осы жерде біз HDD-ден тербелістерді алып тастамаймыз, керісінше, біз HDD-ге берілетін тербелістерді жасаймыз. Динамиктен дыбысты HDD жиілігімен резонанс жасайтын жиілікте ойнатсаңыз, жүйе көп ұзамай құрылғыны енгізу/шығару қатесі арқылы өшіреді (Linux ядросы 120 секундтан кейін HDD-ны толығымен өшіреді). Қатты дискінің өзі қалпына келмейтін зақым келтіруі мүмкін.

Неліктен қатты дискіге айқайламау керек?
Linux ядросы қатты дискіні Edifier r120u USB динамигінің динамигі арқылы резонансты жиілікте дыбысты жеткізгеннен кейін 19 секундтан кейін өшірді. Динамик қуаттың төрттен бір бөлігінде (100 мВт-тан аз) қосылады және дірілді күшейту үшін үстелге бағытталған HDD-ден 20 см қашықтықта орналасқан. жақтау бейне клип HDD өлтірушінің көрсетілімімен

Бір қызығы, HDD-ге мұндай «шабуылдар» кейде күнделікті өмірде кездейсоқ орын алады. Мысалы, 2016 жылдың қыркүйегінде ING Bank деректер орталығы өрт сөндіру жаттығуларынан кейін жұмысын 10 сағатқа тоқтатуға мәжбүр болды. Ондаған қатты дискілер істен шықты жоғары қысымда баллондардан шығатын инертті газдың қатты дыбысына байланысты. Дыбыс өте қатты болды (130 дБ-ден астам), бірақ сіз тіпті қатты дискілерге айқайлай алмайсыз - бұл HDD-ге қол жеткізудің кешігуін арттырады.

Деректер орталығындағы қатты дискілерде адамның айқайлауын көрсету. Кідірісті өлшеу


Резонанстық дыбысты жасау үшін Альфредо Ортега деп аталатын Python сценарийін жазды hdd өлтіруші (бейне демонстрация).

HDD өлтіру сценарийі Бұл өте кішкентай, сондықтан оны толығымен осында жариялауға болады.

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

пікір қалдыру