audiocat
Audiocat is a command-line utility that reads and writes encrypted data across peer-to-peer audio connections, using minimodem and gpg.
It is a powerful tool that can be combined with any audio infrastructure (like PSTN, cellular network, internet, radio) to provide a secure audio tunnel.
The audio interfaces behave like data-diodes, each allowing unidirectional data transmission only, thus preventing data-leaks and malware-injection.
This enables an "enhanced"-end-to-end encryption (E-E2EE) which notably increases security and privacy, especially when the end devices are completely offline (air-gapped-system).
See also https://www.codeproject.com/Articles/5295970/Audio-Chat-for-Quite-Good-Privacy-AC4QGP
Installation
git clone https://github.com/ClarkFieseln/audiocat.git
(not yet supported: pip install audiocat)
sudo apt update
sudo apt install minimodem
sudo apt install gpg
How to use it?
###Chat/Messenger:
./audiocat -c
a new terminal is opened for the transmitter,
enter and confirm password,
then enter and confirm the password also for the receiver
(all passwords are the same).
On the other device a chat or even a reverse shell can be started.
###Reverse Shell:
./audiocat -s
then enter and confirm password.
###File Transfer:
./audiocat -f
a new terminal is opened for the transmitter,
enter and confirm password,
then enter and confirm the password also for the receiver
(all passwords are the same).
On the other device a file transfer shall be started.
###Probe:
(to check connectivity and adjust volumes if required)
./audiocat -p
a new terminal is opened for the transmitter.
Configuration settings can be adapted in folder cfg.
For a detailed documentation check the Article in Code Project (the link will be provided soon).
##Features:
on top of the audio modem provided by minimodem and encryption provided by GPG, audiocat offers a reliable transport layer and many other features:
-
modes: chat, reverse-shell, file transfer (future: sniffer)
-
full-duplex communication
-
retransmit messages automatically after communication errors
-
split big messages into smaller data chunks in order to increase the probability of reception, thus reducing retransmissions
-
[keepalive] messages
this feature was extremely important in my set up in order to prevent "binary data / noise" after pauses
when minimodem is not used for longer than some seconds the amount of initial noise/problems in the transmission increases
-
redundant transmission of "data-messages" to increase probability of successfull reception
all redundant messages received "after" a successfull reception are just ignored for processing but acknowledged,
the total transmission time (including all redundant messages) shall be below the roundtrip-delay,
an excessive number of redundant transmissions will increase delays and may block messages sent by the other side)
-
composition of piped commands hidden to the user
-
tmp folder located in a configurable path beneath $HOME, independent of the current path.
-
probe, to check volume on receiver and adjust manually if needed,
very high and very low volumes may produce signal distortions
-
"braodcast" transmissions also possible, e.g. when ACKs are dactivated
use-case: walkie-talkie, Radio station, ...
-
several configuration options, preamble, trailer, delays, cipher algorithm, confidence, log to file, verbose, etc.
##Possible Abuses:
please don't do the following if you are not allowed (it might be illegal!):
-
exfiltrate data over the air to a nearby or remote computer
-
remote control over the air from a nearby or remote computer
-
exfiltrate data from a computer evading classical auditing
(be aware that if you do this on your employer's computer you might be infringing the law!)
-
"side-channel" for covert communication (e.g. to spread or inject malware),
even worse when combined with steganography (e.g. low volumes, data hidden in noise)
PyPi Project
https://pypi.org/project/audiocat/
Article in Code Project
(the link will be provided soon)
Article in GitHub
https://github.com/ClarkFieseln/audiocat
License
(c) 2024 Clark Fieseln
This repository is licensed under the MIT license. See LICENSE for details.