
소프트웨어 정의 무선 플랫폼을 이용한 원격 영상 도청
이 프로젝트는 소프트웨어 정의 라디오(SDR) 수신기를 사용하여 비디오 모니터를 원격으로 도청하기 위한 소프트웨어 툴킷입니다. 이는 비디오 신호를 전달하는 케이블에서 발생하는 전자기 누설(compromising emanations)을 이용합니다.
래스터 비디오는 일반적으로 픽셀 라인 단위로 전송되며, 가변 전류로 인코딩됩니다. 이는 SDR 수신기로 포착할 수 있는 전자기파를 생성합니다. 이 소프트웨어는 수신된 픽셀의 전계 강도를 실시간으로 회색조(gray-scale) 음영에 매핑합니다. 이를 통해 원본 비디오 신호의 의사 컬러(false colour) 추정치가 형성됩니다.
이 툴킷은 수정되지 않은 기성 하드웨어를 사용하므로 기존 솔루션에 비해 비용이 낮아지고 이동성이 높아집니다. 또한 신호 대 잡음비를 개선하는 추가 후처리를 지원합니다. 공격자는 대상 비디오 디스플레이에 대한 사전 지식이 필요하지 않습니다. 해상도 및 재생 빈도와 같은 모든 매개변수는 소프트웨어의 도움으로 추정됩니다.
이 소프트웨어는 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
openjdk를 사용하는 Ubuntu에서는 다음과 같을 수 있습니다.
make all JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
참고: 이렇게 하면 플러그인도 컴파일됩니다. 일부 플러그인은 추가 라이브러리가 필요합니다! JavaSDR의 Makefile을 편집하여 플러그인 컴파일을 비활성화할 수 있습니다.
MinGW가 설치되어 있어야 합니다.
Windows에서는 FlexiTV™ MSi3101 SDR USB 동글용 Mirics SDR 플러그인도 빌드됩니다. 먼저 http://www.mirics.com/ 에서 SDR 드라이버를 설치해야 합니다.
플러그인을 컴파일하려면 플러그인 폴더로 이동하여 다음을 입력합니다.
make all MIRICS_HOME=path_to_mirics_installation
Windows 8 x64에서는 다음과 같을 수 있습니다.
make all MIRICS_HOME=C:/PROGRA~1/MiricsSDR
Mirics 플러그인을 실행하는 경우 mir_sdr_api.dll이 라이브러리 경로(또는 실행 파일과 같은 디렉터리)에 있는지 확인하세요. dll은 아키텍처에 따라 C:/Program Files/MiricsSDR/API/x86 또는 C:/Program Files/MiricsSDR/API/x64에서 찾을 수 있습니다.
Mirics 동글을 사용하지 않으려면 JavaGUI 디렉터리의 Makefile을 편집하여 이 단계를 건너뛸 수 있습니다. 89번째 줄에서 TSDRPlugin_Mirics 를 제거하고 다음에서
PLUGINS += TSDRPlugin_Mirics TSDRPlugin_ExtIO
로 변경합니다.
PLUGINS += TSDRPlugin_ExtIO
Linux 및 OS X에서 GUI를 컴파일하면 UHD 드라이버도 함께 컴파일되므로 UHD와 해당 boost 라이브러리가 설치되어 있어야 합니다(UHD가 자동으로 설치합니다). UHD 드라이버가 필요 없는 경우 JavaGUI 디렉터리의 Makefile에서 Linux의 경우 91번째 줄, OS X의 경우 93번째 줄을 제거하여 컴파일을 건너뛸 수 있습니다. 기본적으로 해당 줄은 다음과 같습니다:
PLUGINS += TSDRPlugin_UHD
모든 프로젝트는 Eclipse와 make로도 빌드할 수 있습니다.
폴더로 이동하여 다음을 입력합니다.
make all
그러면 bin 하위 디렉터리에서 찾을 수 있는 라이브러리가 생성됩니다. 이 라이브러리와 인터페이스하는 데 필요한 헤더는 src/include에 있습니다.
플러그인 디렉터리로 이동하여 다음을 입력합니다.
make all
플러그인 자체에 특별한 요구 사항이 없는 한 작동해야 합니다. 이 경우 README를 찾아보세요.
서로 다른 폴더에는 서로 다른 하위 프로젝트가 포함되어 있습니다. TempestSDR 폴더에는 기본 C 라이브러리가 포함되어 있습니다. 이 프로젝트는 여러 폴더에 있는 SDR 프런트엔드에 대한 플러그인 지원을 통해 크로스플랫폼을 지향합니다.
이 프로젝트는 CDT 플러그인이 포함된 Eclipse로 빌드됩니다(필수는 아님). 현재 Windows, Linux 및 OS X를 지원합니다. 일부 프런트엔드 플러그인은 크로스플랫폼이 아닐 수 있습니다. 또한 JDK(Java Development Kit)가 설치되어 있어야 합니다.
MinGW가 설치되어 있어야 하며 gcc 및 make 명령이 PATH에 있어야 합니다. 또한 javac와 javah도 PATH에 있어야 합니다.
곧 발표될 예정입니다.