xz it to a container file (jpg, mpg, mov ...)
the regular file will work as normal
to get the hidden file just zcat container > original
This was my original intention:
inspired by steganography and the exe icons in windows / ROX-App icons in puppy, here is a package format that looks nice too.
This is how it works (have only tested manually, script to follow)
take a screenshot image (as jpeg)
make your package format is optional at this point (tar.xz is my preference)
get the size of your package:
PKGSIZE=`stat -c %s package`
add the package to the jpg:
cat package >> screenshot.jpg
we will need to know how much data to get later:
printf $PKGSIZE >> screenshot.jpg
crap now we need to now how many bytes that was
printf ${#PKGSIZE} >> screenshot.jpg
That is it for creating it, you should still be able to open it with an image viewer.
But how to get the data?
how many bytes was our info string
BYTESINFO=`tail -c 1 screenshot.jpg`
now we get the string:
STRSIZE=`tail -c $(($BYTESINFO+1)) screenshot.jpg`
but we still have that extra byte
SIZE=${STRSIZE:0:BYTESINFO}
tail -c $(($SIZE+${#STRSIZE})) screenshot.jpg |head -c $SIZE >package
Edit: other things to consider - filename, checksum, default operation
use the good ol' puppy standard separator ...
size|file_name|chcksum|chcksumtype|defaultmode|strlen
edit2: I wrote an sfs linker in jwm_tools that will mount link and autorun an sfs file ... new squash has xz support, so perhaps this would be a better way to go. Click on screenshot, get corresponding screen in ~0.2s (similar to magicermine which is currently proprietary)