Skip to main content

Steganography in floating point data with NaN payloads

Project description

steganan

License

Steganography in floating point data with NaN payloads

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
>>> from skimage.data import astronaut
>>> import numpy as np
>>> from steganan 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)

decoded.png

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)

encoded.png

>>> message = steganan.retrieve_string_from_payloads(a)
>>> print(message)
I have a secret!

Notebook example

See lightning talk slides.


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

steganan-0.1.0.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

steganan-0.1.0-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file steganan-0.1.0.tar.gz.

File metadata

  • Download URL: steganan-0.1.0.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.14

File hashes

Hashes for steganan-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8d48fc0c2590a65e982e5e272081c78b5d46e10776bdcfd667762efda8f47b94
MD5 5203d814d119a98dbf2d377850ecda67
BLAKE2b-256 7ec69b4fa8dab2064de75626cbb592fdf2a95fd59e4b9bdca7d2f19260c89057

See more details on using hashes here.

File details

Details for the file steganan-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: steganan-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.14

File hashes

Hashes for steganan-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 96271e2b9d367c2e7286ac5413609fa442c92524c0e740554c72d4f404612aba
MD5 7222ba3e3ceb6d483b1b8e54a4d317ea
BLAKE2b-256 f04add23c6b96eb5f166c4270cc4859a701c8b870ea07b44ef70909e4de4edd1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page