
소프트웨어 정의 무선 플랫폼을 이용한 원격 영상 도청
이 프로젝트는 소프트웨어 정의 무선(SDR) 수신기를 사용하여 영상 모니터를 원격으로 도청하기 위한 소프트웨어 툴킷입니다. 영상 신호를 전달하는 케이블에서 발생하는 누설 전자파를 이용합니다.
래스터 영상은 일반적으로 픽셀 한 줄씩 전송되며, 가변 전류로 인코딩됩니다. 이로 인해 SDR 수신기로 포착할 수 있는 전자기파가 발생합니다. 소프트웨어는 수신된 픽셀의 전계 강도를 실시간으로 그레이스케일 음영에 매핑합니다. 이를 통해 원본 영상 신호의 의사 색상 추정값이 만들어집니다.
이 툴킷은 개조되지 않은 기성 하드웨어를 사용하므로 기존 솔루션에 비해 비용이 낮아지고 이동성이 높아집니다. 또한 신호 대 잡음비를 개선하는 추가 후처리를 지원합니다. 공격자는 대상 영상 디스플레이에 대한 사전 지식을 가질 필요가 없습니다. 해상도와 주사율과 같은 모든 매개변수는 소프트웨어의 도움으로 추정됩니다.
이 소프트웨어는 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