This provides a library and cli for hiding messages or other files in images.
For loading the images the library stb_image is used. The cli is generated by with cligen.
All image types supported by stb_image can be used as starting image.
Currently only png is supported for storing but all loseless encodings supported by stb_image could easily be added.
>> nimble install nimagehide
import nimagehide
let img = loadImage("baseImage.png") # loading the image
let secret = "Hello World".toBytes() # prepare the secret data as a byte sequence
img.hideData(data) # hide the data
img.storeImagePng("imageWithSecret.png") # store the image with the secret
hideAndStore("baseImage.png", "imageWithSecret.png", "Hello World") # can be done with one function
import nimagehide
let img = loadImage("imageWithSecret.png") # loading the image
let secret = img.discoverData # extract the data
echo secret # echo outputs 'Hello World'
discoverAndStore("imageWithSecret.png", "secret.txt") # discovers te data and stores it in 'secret.txt'
>> nimagehide hide -i 'image.png' -o 'imageSecret.png' -s 'Hello World !!' #hiding a string
>> nimagehide hide -i 'image.png' -o 'imageSecret.png' -f 'secret.txt' #hiding a file
-i
source image
-o
output image with secret
-s
secret string to hide
-f
secret file to hide
Use either -f
or -s
. Both at the same time does not work.
>> nimagehide discover 'imageSecret.png'
>> Hello World !!
Multiple files can be specified and all the hidden strings will be shown.