https://github.com/dridk/steganodf
Hiding a message in a data table such as a CSV or parquet file
https://github.com/dridk/steganodf
csv python steganography-tools
Last synced: 4 months ago
JSON representation
Hiding a message in a data table such as a CSV or parquet file
- Host: GitHub
- URL: https://github.com/dridk/steganodf
- Owner: dridk
- License: mit
- Created: 2023-05-29T22:46:27.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-06-03T00:20:57.000Z (6 months ago)
- Last Synced: 2025-06-03T12:51:16.238Z (6 months ago)
- Topics: csv, python, steganography-tools
- Language: Jupyter Notebook
- Homepage: https://dridk.github.io/steganodf/
- Size: 14.9 MB
- Stars: 10
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Steganodf
[](https://pypi.python.org/pypi/steganodf/)
[](https://pypi.python.org/pypi/steganodf/)
A steganography tool for hiding a message in a dataset, such as csv or parquet files.
This tool hides a payload by permuting the rows of the dataset. The is tolerant
to modification thanks to a [Reed-Solomon code](https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction) and a [Luby-s LT fontain code](https://en.wikipedia.org/wiki/Luby_transform_code).
# Demo
You can experiment with the Python API using this [Google Colab notebook](https://colab.research.google.com/drive/1cp0WaIOO7Xj3ObwR9vr4Nae5KSwyW61e?usp=sharing).
# Installation
```
pip install steganodf
```
# Usage
## From command line
```bash
# Encoding
steganodf encode -m hello host.csv stegano.csv
steganodf encode -m hello host.parquet stegano.parquet
steganodf encode -m hello -p password host.parquet stegano.parquet
# Decoding
steganodf decode stegano.csv
steganodf decode stegano.csv -p password
```
## From Python
```python
import steganodf
import polars as pl
df = pl.read_csv("https://gist.githubusercontent.com/netj/8836201/raw/6f9306ad21398ea43cba4f7d537619d0e07d5ae3/iris.csv")
new_df = steganodf.encode(df, "made by steganodf", password="secret")
# Extract your message
message = steganodf.decode(df, password="secret")
```
## Citation
Sacha Schutz, Meganne Souprayen. Watermark tabular datasets with rows permutations and fountain code. TechRxiv. April 28, 2025.
DOI: 10.36227/techrxiv.174585796.61215338/v1
[Watermark tabular datasets with rows permutations and fountain code
computing and processing](https://www.techrxiv.org/doi/full/10.36227/techrxiv.174585796.61215338/v1)