Wednesday, February 17, 2016

OpenStego moved to Github

OpenStego source repository is now moved to GitHub. SourceForge site is still up, but there won't be any updates in future there. Please use GitHub for issue reporting too.

Saturday, July 4, 2009

OpenStego article/software in Japanese Magazine

I came to Tokyo recently. One day at leisure, I was just searching for sites which had mention of OpenStego, and guess what - I saw one Japanese Magazine "Linux Nikkei (Linux日経)" website mentioning OpenStego in the "Table of Contents" of their July edition.

I went and bought it at the earliest, and was pleasantly surprised to find that they had included OpenStego v0.5.2 in the DVD, and also a great 2 page article on the functionality. The article author has explained it in excellent details, alongwith good diagrams and screenshots. It is better than what I would have written to explain the functions.

The link for magazine article (in Japanese) is at:

Article can be downloaded for ¥158 only.

Great going. :)

After getting inspired by this act, I have translated OpenStego in Japanese. I have not released it yet, but once it is released, if your OS locale is Japanese, then OpenStego UI and command line help will be in Japanese.

Saturday, October 4, 2008

VLE distributed with c't Magazine

Few months back I had received a mail from the German c't tech magazine asking whether they can include my Vapour Liquid Equilibrium for Java (VLE) in their magazine's accompanying CD. I obviously said yes.

I got a surprise last week when I received the free copy of the magazine (issue number 17/2008) home delivered in India. The accompanying CD includes VLE v0.2. It was a bigger surprise to see the review of the software in the magazine along with a nice screenshot!

It is real joy know that people consider such amateur work to be worthy of distribution with magazine. Such things make spending personal time on open source software all the more worthwhile.

Wednesday, October 1, 2008

Added Debian Package for OpenStego for Easy Installation

Debian package for OpenStego v0.5.0 has been added in Sourceforge downloads.

Ubuntu (or any other Debian based distro) users can now just download that file and install by just double-clicking the icon for the downloaded ".deb" file. It can also be easily installed from command-line using:

$ sudo dpkg -i openstego-0.5.0-1.deb

Please let me know in case if anyone faces installation issues using this package.

Sunday, September 28, 2008

Support for Bulk Image Processing in OpenStego

OpenStego v0.5.0 has been released today, and it adds support to process multiple cover files in one go.

The "Cover File" box in the GUI now allows selection of multiple files. It also supports wildcard characters - '*' matches any number of characters and '?' matches exactly one character.

For example, if you want to embed a given message in all PNG files in "C:\test" folder for which the name starts with "image", then you can give Cover File value as:


This feature would be particularly useful when you are using OpenStego as watermarking solution. You can select all you images and embed your signature / copyright message in bulk.

Friday, March 14, 2008

Added RandomLSB algorithm support to OpenStego

Today, I released v0.4.2 of OpenStego. It has now support for one more algorithm - RandomLSB.
This is similar to the regular LSB algorithm except that instead of using Least Significant Bits of image in sequence, it writes in a pseudo-random order.

The random number generator is seeded using password hash. And so the sequence of bits written is dependent on the password.

This should now give a more robust method of embedding data, which will be difficult to detect using statistical analysis. The method is definitely slower compared to regular LSB algorithm, but is more secure.

Monday, February 11, 2008

Addition of Plugin Support in OpenStego

Today, I released OpenStego v0.4.0, with support for external plugins for steganographic algorithms. Most of the source files were restructured / refactored to provide this support.

New plugins can be added by implementing this abstract class from OpenStego:
  • net.sourceforge.openstego.OpenStegoPlugin
It consists of the following abstract methods:
  • getName(): This method should return a short name for the algorithm / plugin
  • getDescription(): This method should return a one line description of the algorithm / plugin
  • embedData(): This method should embed the given message into the given cover data and return back the stego data
  • extractMsgFileName(): This method should return the embedded message file name from the given stego data
  • extractData(): This method should return the embedded message data from the given stego data
  • canHandle(): This method should return true if this plugin can handle the given stego data
  • getReadableFileExtensions(): This method should return the list of file extensions that this plugin can read (where file is the coverfile)
  • getWritableFileExtensions(): This method should return the list of file extensions that this plugin can write (where file is the stegofile)
  • populateStdCmdLineOptions(): This method should populate the new command line options that it is going to handle
  • getUsage(): This method should return the help message to be displayed for this plugin
  • getEmbedOptionsUI(): This method should return an object which implements the net.sourceforge.openstego.ui.PluginEmbedOptionsUI class. This class extends the JPanel class. The object returned by this method is embedded inside the OpenStego GUI, when this plugin is selected
  • createConfig(): Three methods to create instance of OpenStegoConfig object (or its sub-class if this plugin extends the same)
OpenStego supports multiple languages and so, ideally, any new plugin added to OpenStego should also support the same. The following class can be used for handling multilingual labels:
  • net.sourceforge.openstego.util.LabelUtil
A new namespace should be added to LabelUtil class for each new plugin. Same namespace can also be used for exception messages while throwing OpenStegoException.

After implementing the OpenStegoPlugin class, create a new file named "OpenStegoPlugins.external" and put the fully qualified name of the new class in the file. Make sure that this file is put directly under the CLASSPATH while invoking the application.

That's all to adding new plugin for OpenStego.

Please refer to the "net.sourceforge.openstego.plugin.lsb" package sources for sample plugin implementation.