Steganography in floating point data with NaN payloads
Project description
steganan
Steganography in floating point data with NaN payloads
- Github repository: https://github.com/kjordahl/steganan/
Do you have not-a-number values in your floating point data that you're not making full use of? Have you ever pondered what to do with all of those wasted bits? Steganan may be for you! Encode whatever data you like into those spare bits! Most programs won't even notice the difference. Save them out to a file if you like. As long as your file format preserves the full floating point values, you can get your hidden data back!
Want to add compression and/or encryption of your data? That is certainly possible, but is left as an exercise for the user.
Examples
Storing image data in an array of NaN values
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> from skimage.data import astronaut
>>> import steganan
>>> img = astronaut()
>>> print(img.shape)
(512, 512, 3)
>>> a = steganan.encode_array(img, stack=True, dtype=np.float64)
>>> print(a)
[[nan nan nan ... nan nan nan]
[nan nan nan ... nan nan nan]
[nan nan nan ... nan nan nan]
...
[nan nan nan ... nan nan nan]
[nan nan nan ... nan nan nan]
[nan nan nan ... nan nan nan]]
>>> decoded = steganan.decode_array(a, stack=True, depth=3)
>>> plt.figure(figsize=(4, 4))
>>> plt.imshow(decoded)
Hiding data in an existing floating point array
>>> import rasterio as rio
>>> src = rio.open("data/modis_aod_06_2025.tif")
>>> a = src.read(1)
>>> steganan.write_str_to_nans(a, "I have a secret!")
>>> plt.imshow(a, cmap='inferno_r', vmin=0, vmax=1.0)
>>> message = steganan.retrieve_string_from_payloads(a)
>>> print(message)
I have a secret!
Notebook example
Repository initiated with fpgmaas/cookiecutter-uv.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file steganan-0.2.2.tar.gz.
File metadata
- Download URL: steganan-0.2.2.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec46eae6189b247448b8bd6f3cef03c211c41db5b67388ea1535bef4d18131e9
|
|
| MD5 |
3aea02521edd1fc8cef2239f30d326ec
|
|
| BLAKE2b-256 |
a2b42815dcf14012cfe2ec51599c89b8eeed2b85717d702bedd15f7c6c9314d9
|
File details
Details for the file steganan-0.2.2-py3-none-any.whl.
File metadata
- Download URL: steganan-0.2.2-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c1f8b7d5e6e7a7f909c709a01a73d6067245bb7a9c75fc8effa516ae4d69f3c
|
|
| MD5 |
995f4a0ad3bee4d9c896afa3c88b2c20
|
|
| BLAKE2b-256 |
bd4048e7d117b4afef5cba6f9824cbbf479bc1ff3a6242df1c257ced23910439
|