A linguistic steganography tool built for the end-user. It is designed to encrypt messages into intelligible text, that could passably be produced by a human. Unlike traditional linguistic steganographic methods, which encode messages into existing text by word substitution, it uses a local large language model to generate text that contains the encoded and compressed stego (hidden message).
Requirements: Python 3.9+
-
Clone the repository
git clone https://github.com/LeosPrograms/Subtext cd Subtext -
Install dependencies
pip install torch transformers numpy
-
Download the model weights
python download_model.py
This downloads GPT-2 into
model/gpt2/for offline use. -
Run the app
python app.py
Subtext is an implementation of the arithmetic coding steganography algorithm given in Zachary Ziegler, Yuntian Deng, and Alexander Rush's "Neural Linguistic Steganography" (2019).
-
A project that implements all three steganography methods from Zachary Ziegler, Yuntian Deng, and Alexander Rush's 2019 paper.
Differences: It is not open-source, and does not provide a graphical user interface.
-
An implementation of a distinct steganography method using LLM's, based on Matt Timmerman's Bijective Arithmetic Coding algorithm.
Differences: It supports authentication and encryption of the inputs, but provides inferior data efficiency. It lacks a graphical user interface.
-
A llm-based steganography tool that uses minimum-entropy coupling.
Differences: It requires Nvidia CUDA, and is designed for high-end machines. It does not provide a graphical user interface.
-
An implementation of Falcon Z. Dai and Zheng Cai's Towards Near-imperceptible Steganographic Text (2019).
Differences: It is less efficient, and provides an inferior theoretical security guarantee, but may provide a more passable output. It does not provide a graphical user interface.