[ANN] TempestSDR: A Julia Package for Real-Time Screen Eavesdropping!

:loudspeaker: Introducing TempestSDR: A Julia Package for Real-Time Screen Eavesdropping! :desktop_computer::satellite:

We are excited to announce the release of TempestSDR, a Julia package that enables real-time screen eavesdropping using Software Defined Radio (SDR). TempestSDR provides a Graphical User Interface (GUI) for effortless configuration and screen leakage detection.

:globe_with_meridians: Package Description
TempestSDR is built on the Makie library and takes inspiration from the renowned TempestSDR project by Marinov. Its primary objective is to identify and extract screen leakage and remote screen configurations through the analysis of electromagnetic emissions unintentionally generated by electronic devices.

:microscope: How Does It Work?
TempestSDR leverages SDR devices supported by AbstractSDRs to capture and sample electromagnetic signals emitted by devices like computers, monitors, and keyboards. The GUI, powered by Makie, offers an interface to configure the SDR, analyze metrics, and render grayscale images associated with the captured signals. When a potential side channel leakage is detected, the GUI displays an image of the screen, allowing passive eavesdropping without physical proximity to the target device.

:tv: Key Features:

  • Automatic SDR configuration using AbstractSDRs
  • Real-time metrics for screen configuration detection
  • Grayscale image rendering of captured signals
  • Support for both real-time SDR input and post-processing of pre-recorded signal data

:rocket: Getting Started:
To install TempestSDR, simply use the Julia package manager:

julia> using Pkg
julia> Pkg.add("TempestSDR")

Once installed, launch the GUI using the following command:

julia> using TempestSDR
julia> TempestSDR.gui(; sdr=:radiosim, carrierFreq=764e6, samplingRate=20e6, gain=20)

Customize the SDR type, carrier frequency, sampling rate, and gain to fit your requirements. The GUI panels provide a user-friendly interface for configuring the SDR, analyzing correlations, and fine-tuning the screen resolution.

:lock: Use Cases and Security Considerations:
TempestSDR facilitates passive eavesdropping by capturing and analyzing unintentional electromagnetic emissions. It serves as a valuable tool for security researchers, enabling the detection and exploration of potential side channel vulnerabilities. However, it’s essential to respect privacy and legal boundaries. Ensure you have proper authorization and adhere to legal and ethical guidelines when using TempestSDR.

:open_book: Documentation and Contributions:
For more details on installation, usage, and advanced features, please refer to the TempestSDR documentation. Contributions, bug reports, and feedback are highly appreciated. You can find the project’s source code on GitHub in the JuliaTelecom organisation.

:star2: Why TempestSDR in pure Julia?
TempestSDR showcases the power of the Julia language by providing a single-language implementation for both the GUI and the processing components. This eliminates the common “two-language problem” found in other implementations and allows for efficient prototyping, development, and research in side channel analysis.
And it was a fun journey :sweat_smile:. Circular buffers for SDR processing, new frame synchronization algorithm, first GUI done in Makie. Lot of stuff learned in this side-project.

Any comment, feedback and PR are welcome :+1: