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 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.
Goal of the application is hiding data in digital images, detecting its presence and testing its robustness using any number of different adjustable techniques.
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.
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.
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).
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 name | Description |
---|---|
vsl-module-distortion-cropping | Cropping of an image |
vsl-module-distortion-gamma | Gamma correction |
vsl-module-distortion-gaussian-blur | Gaussian bluring |
vsl-module-distortion-gaussian-noise | Noise with gaussian distribution |
vsl-module-distortion-jpeg | JPEG compression |
vsl-module-distortion-median | Median filtering |
vsl-module-distortion-resize | Image resizing |
vsl-module-distortion-salt-pepper-noise | Salt (white) and Pepper (black) noise |
vsl-module-distortion-sharpen | Image sharpening |
vsl-module-steganalysis-bsm | Binary Similarity Measures SVM steganalysis |
vsl-module-steganalysis-lsb | LSB-RS steganalysis |
vsl-module-steganography-f5 | F5 steganography |
vsl-module-steganography-klt | Karhunen-Loeve Transform (KLT) steganography |
vsl-module-steganography-lsb | Least 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: | vsl-1.1.zip | SHA 256: dbc4b75211a1d7a79efd6772545bbc797d8252248847286a31987efa41585b26 |
VSL sources: | vsl-src-1.1.zip | SHA 256: 44dc00bb73c7bf53bdc94a3032316ab9f75af15809607af65e2907dd39283016 |
Project uses Git as a version control system. Code can be browsed online or checked out with following command:
git clone git://vsl.git.sourceforge.net/gitroot/vsl/vsl
There are two publications about the Virtual Steganographic Laboratory. One of them can be used to cite VSL: