After a long time without using Wolfram, I wanted to try something different and as I love cryptography, I have choose this project.
What it does
It hides data(in string format) inside a photo
How we built it
What is this?
This project aims to show the readers, how easy it could be to hide messages inside photos with the help of Wolfram.
The program has been divided in 5 parts, 3 individual functions and 2 CloudDeploys.
The conditional: To see if we will send the image by email or via web
InsertSecretMessage: To insert a string into a photo
ExtractSecretMessage: To get back the previously given string
The CloudDeploys: Aimed to help to generate a wonderful UI the functions and his parameters
How This Thing Works?
Steganography is a technique for hiding information in images. The hidden information is so subtle that for all practical purposes, it leaves the appearance of the image unchanged.
Convert the carrier image data into bytes and set the least significant bit of each to zero.
Convert the secret message into a list of bits corresponding to the ASCII serialization of the symbolic object representing the message.
Encode the length of the secret message into 48 bits and join this to the message. Then reshape the bit stream to match the shape of the image data. One bit per color channel per pixel.
Add the secret data to the carrier data and turn it back into an image. The image will look the same, but contain the secret message, and can be shared, in plain sight, with your recipient.
To decode the message, start by extracting the image data and discarding all but the least significant bit of each value.
The first 48 bits tell us how much secret data was encoded.
Excluding those 48 bits, turn the bit stream into 8-bit blocks.
For each block of bits, up to the end of the message, turn into a byte, then into an ASCII character. Finally de-serialize the character stream to a Wolfram Language expression representing the message payload.
Challenges we ran into
Add the ability to send the image by mail directly instead of having to download it from the page
Accomplishments that we're proud of
All of them, due to a last time issue our team only had the half time to start again. So, basically we're proud that this hack has worked and that we could developed it with a fast time
What we learned
WolframCloud API and Wolfram lenguage are intuitive and easy to learn, maybe they are not complete by now but there is only one more step
What's next for Steganography a la Wolfram
Add the support to PGP message inclusion and API for scripting tools