
ソフトウェア無線プラットフォームを用いた遠隔ビデオ盗聴
このプロジェクトは、ソフトウェア無線(SDR)受信機を使用してビデオモニターを遠隔から盗聴するためのソフトウェアツールキットです。ビデオ信号を伝えるケーブルから発生する漏洩電磁波を利用します。
ラスター映像は通常、ピクセルの1ラインずつ、変化する電流としてエンコードされて送信されます。これにより電磁波が発生し、SDR受信機で受信できます。ソフトウェアは、受信したピクセルの電界強度をリアルタイムでグレースケールの階調にマッピングします。これにより、元のビデオ信号の疑似カラー(フォールスカラー)推定画像が生成されます。
このツールキットは、未改造の既製ハードウェアを使用するため、既存のソリューションと比較してコストが低く、機動性が向上します。さらに、追加の後処理が可能で、信号対雑音比(SNR)を改善できます。攻撃者は、対象のビデオディスプレイについて事前の知識を持っている必要はありません。解像度やリフレッシュレートなどのすべてのパラメーターは、ソフトウェアの支援により推定されます。
このソフトウェアは、Cで書かれたライブラリ、さまざまなソフトウェア無線(SDR)フロントエンド用のプラグイン群、およびJavaベースのグラフィカルユーザーインターフェース(GUI)で構成されています。マルチプラットフォームアプリケーションであり、すべてのネイティブライブラリはプリコンパイルされ、単一のJava jarファイルにパッケージされています。
JTempestSDR.jarファイルをダブルクリックして起動します。起動に失敗した場合は、プロジェクトを再コンパイルする必要があります。
これはJavaラッパーとGUIです。Java GUI自体を含む、すべてのプロジェクトとサポート対象のプラグインをビルドします。JavaGUIフォルダーに移動して、次のように入力します。
make all
「jni.h」が見つからない場合は、次のいずれかのコマンドを実行してください。
make all JAVA_HOME=path_to_jdk_installation
Windows 8 x64の場合、次のようになります。
make all JAVA_HOME=C:/PROGRA~2/Java/jdk1.7.0_45
X64またはX32のコンパイルを強制するには(コンパイラーがサポートしている場合)、次のようにします。
make all JAVA_HOME=C:/PROGRA~2/Java/jdk1.7.0_45 ARCHNAME=X64
Ubuntuでopenjdkを使用する場合、次のようになります。
make all JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
Mac OSXでは、コマンドは次のようになります。
make all JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
注:これにより、プラグインもコンパイルされます。一部のプラグインには追加のライブラリが必要です!JavaSDR内のMakefileを編集することで、プラグインのコンパイルを無効にできます。
MinGWがインストールされている必要があります。
Windowsでは、これによりSDRplay RSPプラグインもビルドされます。まず、http://www.sdrplay.com/ からSDRドライバーをインストールする必要があります。
x64 Windows向けのコンパイル例
export PATH=$PATH:"/cygdrive/C/Program Files/Java/jdk<put_your_version_here>/bin"
make all JAVA_HOME=C:/PROGRA~1/Java/jdk<put_your_version_here> CC=x86_64-w64-mingw32-gcc ARCHNAME=X64
そして、<put_your_version_here> を自分のJDKバージョンに置き換えてください。
SDRplayプラグインを実行する場合は、mir_sdr_api.dllとsdrplay_api.dllがライブラリパスに存在することを確認してください(または実行ファイルと同じディレクトリに置いてください)。
このdllは、アーキテクチャに応じて C:/Program Files/SDRplay/API/x86 または C:/Program Files/SDRplay/API/x64 にあります。
RSPドングルを使用する予定がない場合は、JavaGUIディレクトリにあるMakefileを編集してこの手順をスキップできます。89行目から TSDRPlugin_SDRPlay を削除し、次のように変更します。
PLUGINS += TSDRPlugin_SDRPlay TSDRPlugin_ExtIO
を
PLUGINS += TSDRPlugin_ExtIO
LinuxおよびOS Xでは、GUIのコンパイル時にUHDドライバーもコンパイルされます。そのため、UHDと対応するBoostライブラリがインストールされている必要があります(UHDが自動的にインストールします)。UHDドライバーが不要な場合は、JavaGUIディレクトリのMakefileから、Linuxの場合は91行目、OS Xの場合は93行目を削除することで、それらのコンパイルをスキップできます。
すべてのプロジェクトは、Eclipseとmakeの両方でもビルドできます。
フォルダーに移動して、次のように入力します。
make all
これによりライブラリが生成され、binサブディレクトリにあります。このライブラリとインターフェースするために必要なヘッダーは src/include にあります。
プラグインディレクトリに移動して、次のように入力します。
make all
プラグイン固有の要件がない限り、これで動作するはずです。その場合はREADMEを確認してください。
各フォルダーには、それぞれ異なるサブプロジェクトが含まれています。TempestSDRフォルダーにはメインのCライブラリが含まれています。このプロジェクトは、さまざまなフォルダーにあるSDRフロントエンドのプラグインをサポートするクロスプラットフォームであることを目指しています。
このプロジェクトは、CDTプラグインを備えたEclipseでビルドされます(ただし必須ではありません)。現在、Windows、Linux、OS Xをサポートしています。一部のフロントエンドプラグインはクロスプラットフォームではない場合があります。また、Java Development Kit(JDK)のインストールも必要です。
MinGWがインストールされている必要があり、gccとmakeコマンドがPATHに含まれている必要があります。また、javacとjavahもPATHに含まれている必要があります。
libuhd-dev