A downloadable project for Windows

Command line utility that allows for data to be embedded and extracted from PNG image files.  It should be noted that any lossless image format can be used for this basic process, but only PNGs are supported for this test project.

PNG reading and writing is currently performed using the single header [STB library](https://github.com/nothings/stb).  In the near future all reads and writes will be personally implemented, thus removing the need for the use of STB.  This is in hopes of better understanding the PNG image format and associated compression techniques, as well as, general personal progression of knowledge. 

It should also be noted that STB makes no claims/guarantees about optimal export sizes for any supported image types.  This should be considered if image output size is a concern for your use case.  

Minor details:

  • 64-bit Windows and Linux are supported for the general test case.  
  • Any lossless image format can be supported, but only PNGs are supported for this project.  
  • Only 8-bit color channels are currently supported.  Additional color depths will be supported after replacing the STB library.
  • In order to preserve the original source image, all embedded output will be saved in the current directory as "emb_out.png"  

Flags/Options:

-o, --embed   : set to embed mode

  • Requires a valid source image and data stream to embed.  
  • In order to preserve the original image, the output will be saved to the current directory as "emb_out.png".

-r, --extract : set to extract mode 

  • Requires a valid source image.  
  • If no data stream is indicated, the data will be displayed on the terminal by default.  

-i, --image : indicates the source image location  

-d, --data  : indicates the source data when embedding  

  • Must be a valid file path.  

Example Usages:

The usage can be fickle, so here are some example of expected operations in the test application.  This is suboptimal, but good enough for now.

embed data with source image:  
$ ./simple_stego.exe --embed --image <source_image_location> --data <source_data_location>
$ ./simple_stego.exe -o -i <source_image_location> -d <source_data_location>
  
extract data from image source:  
$ ./simple_stego.exe --extract --image <source_image_location>
$ ./simple_stego.exe -r -i <source_image_location>

extract data from image source and save output to file:
$ ./simple_stego.exe --extract --image <source_image_location> --data <data_ouptut_location>
$ ./simple_stego.exe -r -i <source_image_location> -d <data_output_location>

Download

Download
png_stego.exe 1 MB