
Red Team tool for covert file exfiltration via Bluetooth audio transmission, encoding binary data into FLAC signals to bypass EDR, XDR, and DLP security systems.
Data Leak Prevention via Bluetooth Speaker
DLPwn is a Red Team tool designed for file exfiltration to bypass security systems such as EDR (Endpoint Detection and Response), XDR (Extended Detection and Response), DLP (Data Loss Prevention), and more broadly any air-gapped information systems. It uses Bluetooth audio transmission to encode arbitrary files into FLAC audio signals, transmit them, and decode them on the other end, exploiting the fact that audio security controls are often less strict than those on networks or files.
DLPwn operates in three main steps:
This approach allows exfiltration of sensitive data without triggering alerts from security systems that monitor network connections, disk writes, or suspicious processes.
DLPwn uses an audio transmission protocol based on:
Each file is fragmented into frames of up to 212 bytes, with a metadata frame containing the filename.
DLPwn includes a QoS metrics system to evaluate transmission quality:
This allows optimization of transmission parameters (baud rate, number of tones) based on audio conditions.
pip install -r requirements.txt
python main.py encode myfile.bin --output transmission.flac
Play the FLAC on a Bluetooth speaker, then capture on another machine:
python main.py bluetooth --filename capture.flac
Note: Bluetooth Configuration (Linux only)
The bluetooth command only works on Linux systems using PulseAudio or PipeWire for Bluetooth audio capture. For the PC to be recognized as a Bluetooth headset by the source device:
Install bluetoothctl if necessary:
sudo apt install bluez-tools
Launch bluetoothctl and configure the ClassID to mimic an audio headset:
bluetoothctl
> power on
> discoverable on
> pairable on
> class 0x240404 # Class for stereo audio headset
> quit
This allows the source device (phone, PC) to connect to the PC as a Bluetooth headset, enabling audio capture via PulseAudio.
Or for live capture:
python main.py decode --loopback --duration 35 --output recovered.bin
python main.py decode --input capture.flac --output recovered.bin
To play, capture, and decode in one command:
python main.py stream transmission.flac --output recovered.bin
--baud: Symbol rate (default 1500).--m: Number of FSK tones (2, 4, or 8).--rs-nsym: RS parity bytes (default 32).--f0, --f1: Base frequencies.To analyze a transmission file:
python diagnose.py transmission.flac
In a Red Team scenario, DLPwn allows:
Warning: Use only in authorized environments. Audio transmission can be detected by surrounding cameras or microphones.