Hello Planet!

Today I want to present the very first beta of my small steganography tool for KDE. I call it stegano.kde.

First of all an introduction

My name is Sven and I use KDE desktop since version 2 somewhere around 2002. I work as a freelancer to develop business applications mainly with web-technologies and languages like PHP, Python, Java and a while ago c#.

I started the steganographic tool somewhere around 2006, first written in c#. I published it [1] and got a lot of nice feedback. Also some people were asking for a linux version of it. After a while I decided to engage my c++ skills from the university, and thought about a GUI framework, because i only use KDE, the decision was very easy: I used gtk+ - only kidding - of course I use Qt with a tight KDE integration.

Currently the application is pre-beta for testing, not far enough for an official release. Also it is not fully compatible to the Windows version (only for encrypted messages). The code isn't very well structured, also no patterns and no tests are yet there. This is leading me now,  to a bigger refactoring of the source.

Now I think it is time for getting some feedback from the community, especially about the frontend. Therefore I want to present you the current frontend and some thoughts about the future that I already had drawed.

Short background

Steganography is a technique of hiding information in a media. For example, you can write a letter and each 5th letter connected to a sentence can have a secret meaning. Presenting that in current media this means, you can use media like images, audio and movie files to put secret data in it without changing the obvious presentation of the media. This tool only supports images (PNG) at the moment. Therefore a method called Last Significant Bit (LSB) is used to manipulate the image without changing the visible picture.

For a better understanding how this is possible: Each image has pixel as you know. Each pixel has 3 byte of color data and sometimes 1 byte for transparency. Let's focus on the color for now. Imagine you have red-green-blue bytes, you could take the last bit from each of those bytes and modify the last bit only. Then the last bit stores your information and the color doesn't change significant. In the end, nobody will see it. Only a histogram will give you the information that something is strange with the image.

How the tool looks

image0 image1

Please do not wonder. I have activated a KDE dark color schematic. This is the reason why it is dark, it is not explicit styled like this.

The top field is a file selector, where you can select images. PNG if you want, you restore a message and JPEG is supported to be a input media. On save this gets converted in PNG. So do not wonder.

On the next block, you can enter a password for encryption and enable or disable encryption.

The left bottom block shows a preview of the image. So you can see that you cannot see any change on the image. The right bottom block is the text message widget, where you can enter a text. There is also a tab for documents, because documents are also only data that can be included. But this feature is not supported until now.

Currently the GUI is not in English at the moment. But a lot of refactorings will include this cleanup as well. For now, I'm sorry about that.

Short feature summary

  • open media files
  • restore messages from PNG media
  • write own messages
  • save new media that includes your message
  • protect the message with a password

Planned features are

  • support for include files as like text to the media
  • improved GUI (progress, cancelable arrangement etc)
  • compatibility to the encrypted files from the windows version
  • internationalisation default to English and add some translations
  • other media sources like movies and music
  • other save media formats than PNG


You can find the sources on my scratch repository [2] or on github [3]

There is also a package deb file [4] that was tested on Kubuntu 12.10 and 13.04 (only amd64 architecture) that you can easily install and test it with launching stegano on the runner or konsole.

Some sample files

If you were able to run it, you can test the 2 images that was used on that post to get some impression. Or find them in reference [5] and [6].

Looking forward

My plans are to finish the mentioned refactorings. This will include some GUI changes as well. When I reach a state that is presentable my next post will show this GUI and then you can give me the feedback.

Please have a try and give me some feedback how do you like this first draft.

UPDATE: Build note: please use the tag v0.1.1 that is on github.


[1]stegano tool .net version for windows.
[4]deb-package for pre-beta of stegano for amd64 architectur
[5]sample file 1
[6]sample file 2