What is this?
octaPNG is a tool for encoding any file into a regular PNG image by simply writing the file's binary data as colored pixels, and decoding by reversing this process. I refer to PNG images created by this tool as "oPNGs".
Why use it?
Images in general are easily transferable across the web, and a growing number of websites allow their users to upload PNG images, so why not explore the possibility of PNGs holding different types of data?
Consider the following scenario: you're on an internet forum and want to quickly share a small ZIP file with other users. Normally you'd have to visit an external file hosting website, log into it, upload your ZIP, wait for the upload process to finish, receive a link, return to the forum you were on, post the link and hope it doesn't get caught by spam filters... That is, if the forum allows posting external links to begin with!
With octaPNG you'd only have to encode your ZIP into a PNG then post it directly on the forum, like you would with any other image. That's it.
Is it dangerous?
An oPNG in and of itself is not dangerous, after all it's just a colored image like any other, however it can potentially be dangerous if it's holding malicious data. Think of it like an unmarked package you got in the mail; it may contain a letter bomb but it remains harmless as long as it's not opened... The catch here is that you'll never know what's inside the package until you open it.
Unlike other "data vessels" such as ZIP archives and ISO disc images, oPNGs fly under the radar of antivirus software and are not even reported as suspicious. For example the infamous ZIP bomb 42.zip is successfully detected as malicious by VirusTotal, but after being encoded into an oPNG it is not.
Know the risks before decoding an oPNG.
How much data can you fit?
A single oPNG can hold up to about 4 GB of data, naturally the larger your file is the larger the dimensions of the resulting image. Practically though you'll be storing data that's around 50 MB and under.
Is the data encrypted?
No, oPNGs store data as-is so it can be recovered by anyone with a copy of octaPNG. If you want your data to be encrypted store it in an encrypted archive first then encode that into an oPNG.