{"id":17382956,"url":"https://github.com/clarkfieseln/audiocat","last_synced_at":"2025-04-15T09:40:06.880Z","repository":{"id":252401669,"uuid":"840303866","full_name":"ClarkFieseln/audiocat","owner":"ClarkFieseln","description":"Command-line utility that reads and writes encrypted data across peer-to-peer audio connections, using minimodem and gpg","archived":false,"fork":false,"pushed_at":"2025-02-17T09:30:42.000Z","size":31254,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T10:29:47.818Z","etag":null,"topics":["audio","client-side-scan","data-diode","e2ee-encryption","encryption","encryption-decryption","gnupg","gpg","linux","linux-shell","mass-surveillance","minimodem","modem","python","python3","real-time","remote-control","reverse-shell","shell-script"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ClarkFieseln.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-09T12:06:08.000Z","updated_at":"2025-02-17T09:30:46.000Z","dependencies_parsed_at":"2024-09-15T01:36:27.696Z","dependency_job_id":"0e48725f-f74b-4fd1-b287-272012658c6b","html_url":"https://github.com/ClarkFieseln/audiocat","commit_stats":null,"previous_names":["clarkfieseln/audiocat"],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClarkFieseln%2Faudiocat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClarkFieseln%2Faudiocat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClarkFieseln%2Faudiocat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClarkFieseln%2Faudiocat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ClarkFieseln","download_url":"https://codeload.github.com/ClarkFieseln/audiocat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241007410,"owners_count":19893004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","client-side-scan","data-diode","e2ee-encryption","encryption","encryption-decryption","gnupg","gpg","linux","linux-shell","mass-surveillance","minimodem","modem","python","python3","real-time","remote-control","reverse-shell","shell-script"],"created_at":"2024-10-16T07:39:59.821Z","updated_at":"2025-02-27T11:31:09.720Z","avatar_url":"https://github.com/ClarkFieseln.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- # ![plot](./audiocat_clark/audiocat.png) --\u003e\n![plot](https://raw.githubusercontent.com/ClarkFieseln/audiocat/refs/heads/main/audiocat_clark/audiocat.png)\n\n# audiocat\nAudiocat is a command-line utility for Linux that reads and writes encrypted data across peer-to-peer or broadcast audio connections, using [minimodem](https://github.com/kamalmostafa/minimodem \"minimodem\") and [gpg](https://github.com/gpg/gnupg \"gpg\").\n\nIt is a powerful tool that can be combined with any audio infrastructure (like PSTN, cellular network, internet, radio, walkie-talkies) to provide a secure communication channel through an audio tunnel.\n\nThe audio interfaces behave like data-diodes, each allowing unidirectional data transmission only, thus preventing data-leaks and malware-injection.\n\nThis 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), thus providing an effective barrier against \"legal or illegal\" client-side-scanning!\n\nSee also \u003chttps://www.codeproject.com/Articles/5295970/Audio-Chat-for-Quite-Good-Privacy-AC4QGP\u003e\n\n\n## Installation\n```\n  pip install audiocat-clark\n```\n\n   or with git:\n\n```\n  git clone https://github.com/ClarkFieseln/audiocat.git\n\n  cd audiocat_clark\n\n  chmod +x audiocat\n\n  chmod +x *.sh\n```\n   \n  during first execution you will be asked to install dependencies: minimodem, gpg, bc\n  \n  but you can also install them yourself with:\n```\n  sudo apt install minimodem\n  sudo apt install gpg\n  sudo apt install bc\n```\n  The package gnome-terminal is assumed to be already installed, install otherwise or change cfg/terminal.\n\n## How to use (pip installation)\n### Chat/Messenger\n\n```\n  audiocat -c\n```\nenter and confirm password\n\nOn the other device a chat or a remote shell can be started.\n\n### Remote Shell\n\n```\n  audiocat -s\n```\nthen enter and confirm password\n\nOn the other device a chat shall be started to command the remote shell.\n\nNote that this is technically a \"reverse shell\" which gives access to your system!\n\n### File Transfer\n\n```\n  audiocat -f\n```\nenter and confirm password\n\nOn the other device a file transfer shall be started.\n\n### Probe\nTo check connectivity and adjust volumes if required.\n\n```\n  audiocat -p\n```\n\nIn addition, a separate terminal will be opened to read unencrypted probe messages being sent by the other side.\n\n## Configuration\nAdapt the configuration as required using the 'terminal GUI' with:\n\n```\n  audiocat -g\n```\n\u003c!-- # ![plot](./img/terminal_gui.jpg) --\u003e\n![plot](https://raw.githubusercontent.com/ClarkFieseln/audiocat/refs/heads/main/img/terminal_gui.jpg)\n\nAlternatively, you may change the configuration by editing the files in the cfg folder directly. The 'Location' can be found with:\n\n```\n  audiocat -d\n```\n\nThe most important settings are:\n\n* baud\n* keepalive_time_sec\n* retransmission_timeout_sec\n* split_tx_lines\n* volume_microphone\n* volume_speaker_left\n* volume_speaker_right\n\n## How to use (git installation)\nWhen installed with git, audiocat may be called with: \n\n```\n  python3 audiocat.py -c\n  # or\n  ./audiocat -c\n```\nThis is an example to start a chat, but this is the same for any other option.\n\nFor more information check the [documentation](https://github.com/ClarkFieseln/audiocat/blob/main/doc/documentation.md).\n\n## Features\non top of the audio modem provided by minimodem and encryption provided by GPG, audiocat offers a reliable transport layer and many other features:\n\n- modes: chat, remote-shell, file transfer (future: sniffer)\n\n- full-duplex communication\n\n- retransmit messages automatically after communication errors\n\n- split big messages into smaller data chunks in order to increase the probability of reception, thus reducing retransmissions\n\n- [keepalive] messages\n  \n- redundant transmission of \"data-messages\"\n   \n- composition of piped commands hidden to the user\n\n- tmp folder located in a configurable path beneath $HOME, independent of the current path.\n\n- probe, to check volume on receiver and adjust manually if needed\n\n  (very high and very low volumes may produce signal distortions)\n  \n- \"braodcast\" transmissions also possible, e.g. when ACKs are deactivated\n\n   use-case: walkie-talkie, Radio station, ...\n   \n- several configuration options: preamble, trailer, delays, cipher algorithm, confidence, log to file, verbose, etc.\n\n## Possible Abuses\nplease don't do the following if you are not allowed (it might be illegal!):\n\n- exfiltrate data over the air or cable to a nearby or remote computer\n\n- remote control over the air or cable from a nearby or remote computer\n\n- exfiltrate data from a computer evading classical auditing\n\n  (be aware that if you do this on your employer's computer you might be infringing the law!)\n  \n- use the tool as a \"side-channel\" for covert communication e.g. to spread or inject malware,\n\n  even worse when combined with steganography (e.g. low volumes, data hidden in noise)\n  \n## Typical Configuration\n\n\u003c!-- # ![plot](./img/figure2.jpg) --\u003e\n![plot](https://raw.githubusercontent.com/ClarkFieseln/audiocat/refs/heads/main/img/figure2.jpg)\nA: audiocat in offline PC (Alice)\n\nD: audiocat in offline PC (Bob)\n\nB, C: smartphone with call session (mobile, messenger app, etc.)\n\ndiodes: audio connections (sink/speaker -\u003e source/microphone)\n\n## Communication in Linux over Linphone\n\n\u003c!-- # ![plot](./screenshots/20250128_153603.jpg) --\u003e\n![plot](https://raw.githubusercontent.com/ClarkFieseln/audiocat/refs/heads/main/screenshots/20250128_153603.jpg)\n\nA: audiocat in offline PC (Alice)\n\nD: audiocat in offline PC (Bob)\n\nB, C: smartphone with [Linphone](https://www.linphone.org) call session\n\n## Communication in Termux over qTox\n\n\u003c!-- # ![plot](./screenshots/20250114_121116.jpg) --\u003e\n![plot](https://raw.githubusercontent.com/ClarkFieseln/audiocat/refs/heads/main/screenshots/20250114_121116.jpg)\n\nA: audiocat in offline smartphone with Termux (Alice)\n\nD: audiocat in offline smartphone with Termux (Bob)\n\nB, C: PC with qTox call session\n\n## Communication in Linux over Walkie Talkies\n\n\u003c!-- # ![plot](./screenshots/20241231_140418.jpg) --\u003e\n![plot](https://raw.githubusercontent.com/ClarkFieseln/audiocat/refs/heads/main/screenshots/20241231_140418.jpg)\n\n## Split Configuration\n\n\u003c!-- # ![plot](./img/figure3.jpg) --\u003e\n![plot](https://raw.githubusercontent.com/ClarkFieseln/audiocat/refs/heads/main/img/figure3.jpg)\n\nA: audiocat in offline PC (Alice)\n\nD: audiocat in offline PC (Bob)\n\nB1, B2, C1, C2: waklie-talkie\n\n## Limitations\nThe data transfer is usually done at low rates, typical of audio systems. Therefore, this tool is not adequate to transmit big files which may take a long time to complete.\n\n## Hints\nAvoid using tools like PulseEffects, they may produce glitches!\n\nIn PuseEffects you may check the 'Add to Block List' option for minimodem and qtox.\n\n## PyPi Project\n\nhttps://pypi.org/project/audiocat-clark\n\n## GitHub Project\n\nhttps://github.com/ClarkFieseln/audiocat\n\n## Documentation\n\nhttps://github.com/ClarkFieseln/audiocat/blob/main/doc/documentation.md\n\n## Screenshots\n\nhttps://github.com/ClarkFieseln/audiocat/tree/main/screenshots\n\n## Videos\n\nhttps://www.youtube.com/playlist?list=PLX24fhcibpHUx7ej_Tp4neobJUqOkqliN\n\n## License\n\n(c) 2025 Clark Fieseln\n\nThis repository is licensed under the MIT license. See LICENSE for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclarkfieseln%2Faudiocat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclarkfieseln%2Faudiocat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclarkfieseln%2Faudiocat/lists"}