Virtual Steganographic Laboratory for Digital Images (VSL)
Free tool for steganography and steganalysis

Virtual Steganographic Laboratory (VSL) is a graphical block diagramming tool that allows complex using, testing and adjusting of methods both for image steganography and steganalysis. VSL provides simple GUI along with modular, plug-in architecture. It is written and maintained by Michał Węgrzyn.

Steganography and steganalysis

Steganography is the art and science of writing hidden messages within cover object. Digital image steganography uses digital images as cover objects, so data is hidden in images. Main goal of steganalysis is detecting those hidden messages.

VSL application

Goal of the application is hiding data in digital images, detecting its presence and testing its robustness using any number of different adjustable techniques.

VSL versus other steganographic applications

A lot of applications dedicated to steganography are simply command line tools, which limits their usage. Also, most of them implement only one technique - commonly some LSB technique variation. Similar situation goes for steganalysis applications.

On the other hand, VSL provide easy to use, yet powerfull framework to use multiple methods at the same time. Since VSL is a graphical block diagramming tool, it allows complex processing that can be performed in both batch and parallel form (see screenshots). Also, it can be operated even by relatively inexperienced users as it provides legible graphical user interface (conforming with drag-and-drop technology).

Besides its GUI, application provides several ready-to-use steganographic and steganalytic techniques. Data can be hidden with basic Least Significant Bit (LSB) method, with more advanced Karhunen-Loeve Transform (KLT) technique or by F5 algorithm, which uses DCT transformation in JPEG files. For steganalysis two advanced techniques can be used. First, RS-Analysis: efficient steganalysis for LSB methods - and the second one - Binary Similarity Measures (BSM) method with Support Vector Machines (SVMs) classifier: blind steganalysis (universal) technique, which can be used to detect any kind of steganography.

VSL contains also many other modules - several distortion techniques, which can be used to test resistance of steganographic technique. Program has build-in modules, which helps with research, reports, file handling, image analysis etc.

Free and open source software

Application is licensed under GNU GPLv3 license, which is attached within distribution package. Anyone is free to use, adopt and share this software free of charge, as long as the license is not violated.

Platform independent

Virtual Steganographic Laboratory is written in Java, so it is cross-platform software and it can be executed on any operating system, which has Java (1.5 or later version is required).

Plugin architecture - customisation and extendability

Thanks to the applied architecture, application can be easily customised and extended. New modules can be created and added to the system. List of current modules:

Module nameDescription
vsl-module-distortion-croppingCropping of an image
vsl-module-distortion-gammaGamma correction
vsl-module-distortion-gaussian-blurGaussian bluring
vsl-module-distortion-gaussian-noiseNoise with gaussian distribution
vsl-module-distortion-jpegJPEG compression
vsl-module-distortion-medianMedian filtering
vsl-module-distortion-resizeImage resizing
vsl-module-distortion-salt-pepper-noiseSalt (white) and Pepper (black) noise
vsl-module-distortion-sharpenImage sharpening
vsl-module-steganalysis-bsmBinary Similarity Measures SVM steganalysis
vsl-module-steganalysis-lsbLSB-RS steganalysis
vsl-module-steganography-f5F5 steganography
vsl-module-steganography-kltKarhunen-Loeve Transform (KLT) steganography
vsl-module-steganography-lsbLeast Significant Bit (LSB) steganography

Every module can be executed independently and used regardless of the application.


Sample experiment in VSL - screeshot shows simple experiment in VSL. Application reads an image, transfers it to the first Display module (which stores it). Then image is passed to the LSB encoder, which hiddes message (which can be any type of file, because raw bytes are used) within image. At the end image is stored in the second display module. When experiment is done, Display modules can be checked to evaluate difference between first image (which does not have any hidden message) and the second one (with secret content).

Processing multiple images - Flow represents example of experiment attack on LSB method, which is executed for every image from input list.

Example of loop - examining LSB resistance on Salt and Pepper noise. Flow is executed for every image seven times with seven different set of parameters. On the right side Display module, which is used to store images from particular moment of the flow.

Parallel processing - example flow of parallel message embedding with two methods. In this way steganography can be applied with two different techniques (or same techniques, but with different parameter values) at the same time.


Platform independent (Java)
VSL: SHA 256: dbc4b75211a1d7a79efd6772545bbc797d8252248847286a31987efa41585b26
VSL sources: SHA 256: 44dc00bb73c7bf53bdc94a3032316ab9f75af15809607af65e2907dd39283016

Code and development

Project uses Git as a version control system. Code can be browsed online or checked out with following command:

git clone git://


There are two publications about the Virtual Steganographic Laboratory. One of them can be used to cite VSL:

Support and feedback

Get VSL at Fast, secure and Free Open Source software downloads (last modified: 2011-02-07)