Inspiration
Spy themed hackathon so encryption and secret messages sounded like a good topic to go for.
What it does
Clients, Athena, can log in or create accounts then they either read or send a message. They connect to the server, Iris, which produces a server thread, Clotho, to handle the single client while the server waits for another client. The client then has the choice to either send or read a message to another user. If they send then they will select an image, recipient and message they want to hide. The image is stored on the server in a directory which describes who the picture is being sent to and who it is from. If they read then they will input who they wish to read a message from and if any message from them are stored on the server, the image is sent to the client and the message hidden within it is decrypted.
How we built it
GUI produced using Swing, networking done using Sockets, steganography works by changing two least significant bits in the RGB values for each pixel to encode ASCII characters, Users database made using SQLite and the sqlite-jdbc connector is used to allow the Java program to interact with it.
Challenges we ran into
Figuring out the correct way of doing steganography, we were originally encoding an ASCII character fully in 1 pixel which led to a very clear difference in the page. Having the network interact with the GUI correctly to ensure that it didn't freeze the user out. Sending an image over a network.
Accomplishments that we're proud of
We managed to perform steganography and sent the images over a network all in one day
What we learned
How steganography works. How to manipulate an image's data using bytes.
What's next for Hermes
Move it to a server and let it work over the internet, fix the threads so that multiple clients can work at once, fix the buttons so that a user can send/read more than one message, clean up GUI, add encryption to message stored in image itself.
Log in or sign up for Devpost to join the conversation.