Спасибо читателю RTL-SDR.com ‘flatflyfish’ за предоставление информации о том, как запустить TempestSDR Мартина Маринова на системе Windows. Если вы ещё не знали, по определению TEMPEST относится к техникам, используемым некоторыми разведывательными службами для подслушивания электронного оборудования через их непреднамеренные радиовыбросы (а также через звуки и вибрации). Вся электроника излучает какой-то непреднамеренный RF сигнал, и захватив и обработав эти сигналы, можно восстановить часть данных. Например, непреднамеренные сигналы с экрана компьютера можно захватить и преобразовать обратно в живое изображение того, что отображается на экране.
TempestSDR — инструмент с открытым исходным кодом, который позволяет использовать любой SDR, имеющий поддерживающий ExtIO (например, RTL-SDR, Airspy, SDRplay, HackRF), чтобы принимать непреднамеренное излучение сигнала от экрана и преобразовывать этот сигнал обратно в живое изображение. Это позволяет увидеть, что отображается на экране, без каких-либо физических подключений. Если используется направленная антенна с высоким коэффициентом усиления, то возможно будет получить изображения на расстоянии в несколько метров.

Хотя TempestSDR выпущен уже несколько лет, он не работал должным образом в Windows с интерфейсами ExtIO. В своем письме flatflyfish показал нам, как скомпилировать новую версию, которая работает.
1. Необходимо установить 32-битную версию рантайма Java. 64-битная версия не будет работать с ExtIO, возможно потому что они все 32-битовые. Также установите JDK.
2. Нужно установить MingW32 и MSYS и поместить их каталоги bin в PATH Windows.
3. Затем при компиляции я столкнулся с множеством ошибок CC: command not found. Чтобы исправить это, я просто добавил CC=gcc в верхнюю часть всех makefile. Я также удалил строку компиляции Mirics из makefile JavaGUI, чтобы упростить процесс, так как мы не используем этот SDR.
4. Изначально моя папка JDK находилась в Program Files. В makefile не нравились пробелы в названии папки, поэтому я переместил её в папку без пробелов, и это исправило ошибки.
5. И наконец, чтобы скомпилировать, нужно указать ARCHNAME как x86, например: “make all JAVA_HOME=F:/Java/jdk1.7.0_45 ARCHNAME=X86”
После выполнения всего этого компиляция прошла успешно, и у меня появился рабочий JAR-файл. ExtIO, которые обычно используются с HDSDR, теперь работают нормально, и я получаю изображения с моего тестового монитора через rtlsdr.
Мы сами протестировали компиляцию и получили рабочую программу. Чтобы помочь другим, мы загрузили форк кода с изменениями в makefile, а также предварительно скомпилированный ZIP-дистрибутив на странице релизов, так что компиляция не требуется, чтобы просто использовать его. Обратите внимание: чтобы использовать предварительно скомпилированный JAR, нужно все еще установить MingW32, а также не забыть поместить папки MingW /bin и msys /1.0/bin в PATH Windows. Также необходимо установить 32-битную версию Java runtime, так как 64-битная версия, похоже, не работает. Как минимум на одной машине Windows 10 нам пришлось вручную добавить папку ‘Prefs’ в путь Java в реестре.
Мы протестировали программное обеспечение с ExtIO для RTL-SDR (доступно на странице загрузок HDSDR) и подтвердили, что оно работает. Изображения от одного из наших старых мониторов DELL, подключенного через DVI, получаются нормально, хотя немного размыты. Мы также попробовали использовать Airspy или SDRplay, и это значительно улучшило качество изображений благодаря более широкой пропускной способности. ExtIO для Airspy доступны на этой странице, а для SDRplay — на официальном сайте SDRplay. Примечание: для SDRplay мы не могли выйти выше 6 МГц, а на RTL-SDR предел составлял 2.8 МГц — всё, что выше у этих SDR не давало изображения, возможно из-за пропусков выборки.
Чтобы использовать программное обеспечение, желательно знать разрешение и частоту обновления целевого монитора. Но если вы не знаете, есть графики автокорреляции, которые на самом деле помогают предсказать обнаруженное разрешение и частоту кадров. Просто кликните по пикам. Также вам нужно знать частоту, на которой ваш монитор непреднамеренно излучает. Если вы не знаете, можно посмотреть в SDR# на пики помех, которые изменяются в зависимости от того, что отображается на изображении экрана. Например, на изображении ниже мы показываем, как может выглядеть помеха. Подсказка по улучшению изображений: увеличьте параметр “Lpass” и следите за тем, чтобы автоматический поиск FPS не уводил от ожидаемой частоты кадров слишком далеко. Если он уходит слишком далеко, сбросьте его повторным выбором разрешения экрана.

Лучшие результаты получались с использованием Airspy и старого 19” монитора DELL, подключенного через DVI. Новый монитор Philips 1080p, подключённый через HDMI, давал заметно более слабые непреднамеренные сигналы, но изображения всё равно можно было восстановить. Третий монитор AOC 1080p не излучал помех, которые мы могли бы зафиксировать.
Чистые изображения получались с антенной, установленной в той же комнате, что и монитор. В соседней комнате изображения на мониторе DELL всё ещё принимались, но они были слишком размыты, чтобы что-либо разобрать. Возможно, более мощная направленная антенна могла бы улучшить это.

Ниже мы загрузили на YouTube видео, показывающее наши результаты с TempestSDR.
Если вы хотите узнать больше о TEMPEST и TempestSDR, диссертация Мартина Маринова по этому ПО может быть хорошим чтением (pdf).
Источник:
- TempestSDR Мартина Маринова
- загружен форк
- предварительно скомпилированный ZIP-дистрибутив доступен на странице релизов
- нужно установить MingW32
- Windows PATH
- вручную добавить папку ‘Prefs’ в путь Java
- доступно на странице загрузок HDSDR
- на этой странице
- сайт SDRplay
- диссертация по этому ПО может быть хорошим чтением
