Embeds data into png images
Find a file
2024-08-20 16:04:49 +02:00
doc Update README 2024-08-20 09:23:45 +02:00
examples Added embed entropy 2024-08-20 16:04:49 +02:00
src Added embed entropy 2024-08-20 16:04:49 +02:00
Cargo.lock Added embed entropy 2024-08-20 16:04:49 +02:00
Cargo.toml Added embed entropy 2024-08-20 16:04:49 +02:00
LICENSE.md Readme 2024-08-18 16:02:41 +02:00
README.md Added embed entropy 2024-08-20 16:04:49 +02:00

png_data -- Data as images

png_data -- Data to PNG

TeX Live english documentation

png_data encodes a file into a png image.

Encoding

png_data -l rgb8 -e file.pdf -o output.png -c "(.pdf) documentation" Where:

  • rgb8 is the RGB layout with 8 bits per pixel
  • file.pdf is the file to store in the resulting image
  • output.png the resulting png image

Available layouts

  • rgb[8|16] RGB with 8 or 16 bits per channel
  • rgba[8|16] RGBA with 8 or 16 bits per channel (densest layout)
  • g[1|2|4|8|16] Grayscale with 1-16 bits per channel
  • ga[1|2|4|8|16] Grayscale Alpha with 1-16 bits per channel

Decoding

png_data -d output.png -o original.pdf Where:

  • output.png the encoded png image
  • original.pdf the resulting decoded file

Getting header information

png_data -z output.png

  • output.png a png_data encoded image This will display the header of the encoded file, as well as the comment.

png_embed -- Embed files into mostly innocent PNG

Contains an embed The embed

png_embed encodes a file into an existing png image making it possible to recover that file by passing the image around.

Current algorithm:

  • lo Embeds data in the colors channels lowest bits.

See examples/test.sh for usage.

Encoding an image

png_embed -l lo2 -e embed.tar original.png -o output.png -c "(.tar) archive" Where:

  • lo2 is the Lo algorithm using the 2 lowest bits
  • embed.tar the file to embed into the final image
  • original.png the original PNG file
  • output.png the resulting PNG file
  • "(.tar) archive" an optional comment

Additional Options

  • -s|--seed TXT Sets the random seed for determining the payload blocks. By default the random seed is "WIDTHxHEIGHT" where WIDTH and HEIGHT are the original image's dimensions.
  • -n|--entropy Fills unused payload blocks with random data that tries to match the payload's entropy. This feature is experimental and may not fully protect against entropy based steganography-detection. We highlihy recommend that the payload has maximal entropy, which can be achieved by compressing it.

Decoding an image

png_embed -l lo2 -d image.png -o embed.tar Where:

  • lo2 is the Lo algorithm using the 2 lowest bits
  • image.png the PNG containing an embed
  • embed.tar the extracted embedded file

Additional Options

  • -s|--seed TXT Sets the random seed for determining the payload blocks. By default the random seed is "WIDTHxHEIGHT" where WIDTH and HEIGHT are the original image's dimensions.

Getting header information

png_embed -l lo2 -z output.png

  • lo2 is the Lo algorithm using the 2 lowest bits
  • output.png a png_embed encoded image This will display the header of the encoded file, as well as the comment.

Additional Options

  • -s|--seed TXT Sets the random seed for determining the payload blocks. By default the random seed is "WIDTHxHEIGHT" where WIDTH and HEIGHT are the original image's dimensions.

License

png_data is licensed under the GNU AGPL version 3 or later. See LICENSE.md for more information. License for third-party dependencies can be accessed via cargo license