Problems with Java

The aim for this week was to try and develop some method of encoding information in a video - this was quite an ambitious aim to be achieved over the course of a single week.

Up until this point I had been using a Java library called Xuggler, this is a wrapper for the Ffmpeg C/C++ library. This tool was working well when I was experimenting with some video manipulation tasks (overlaying text, etc.). However, this tool was somewhat limited. I was only able to work with frames as actual Bitmap objects. The underlying raw frame data was not exposed, this needs to be exposed to be able to calculate transforms etc. LSB techniques do not work with lossy compression - my experimentation proved this.

I have therefore changed tactic and will now be working in C/C++ to develop my steganography tools. This will allow me to interface with Ffmpeg directly.

Two options

I have two options for video encoded at the moment - H.264 and MPEG. If possible I would like to work with H.264 as this format popular with encoding HD video. Alternatively I could work with MPEG (Motion JPEG) For H.264 I will need to investigate integer transforms and for MPEG I will need to investigate Discrete Cosine Transform.



Git and "Steganosaurus"

Todays developments have been reasonably practical in nature. I have setup a Git repository and have started work on a "Steganosaurus" which is taking the form of a Swing GUI application.

So far I have just implemented the basic Image and Audio steganography methods which are exposed via the Tools section of this website. I have also added a very basic Steganalysis tool which exames unencryped LSB data for images. The tool allows for the raw extraction of a string of LSB data, and also shows ASCII character frequency.

This experimentation has shown significant differences in ASCII frequency (for characters in the range of 32-126) between normal images and container files. This would suggest that by looking at frequency of characters that make up a natural language it could be possible to automatically detect unencrypted LSB steganography.



Java, Xuggler and Ideas

I have very briefly experimented with Xuggler. Xuggler is a tool which wraps the functionality of FFmpeg, and provided the ability to uncompress, modify, re-compress and transcode video.

I have started to develop a swing application in Java that I will use to how all of the steganography tools and techniques that I develop. The intention is to release this for public use as I develop it.

I have only spent about 10 minutes playing with Xuggler and have been able to produce a small and basic application with is capable of encoding a watermark image in the bottom right corner of the video. It's nothing new, but let's walk before we can run.

This early experimentation with Video encoding has prompted an idea courtesy of Mike, who has suggested the possibility of encoding in real-time for demonstration/poster-session purposes.



Paper Summaries (Part 2)

Detailed below are the remaining summaries of the papers that were mentioned in my Description Stage and Papers blog post.


Shanableh, T. (2012). Matrix encoding for data hiding using multilayer video coding and transcoding solutions.
This paper proposes a technique for hiding data in the MPEG file format. Matrix encoding is used in this method to encode data in the quantization scales and motion vectors of the compressed MPEG video.

The technique described in this paper involves building up the encoding over several layers; the authors explain that they have taken this approach due to some of the limitations of the video format. For instance, the number of quantization scales available in coded video frames is limited.

This paper discusses video steganography approaches that modify the LSB of the DCT (Discrete Cosine Transform) coefficients for the manipulation of JPEG frames. There are also several references to papers that explore steganographic techniques involving DCT.

Liu, B., Lin. F., Lu, B. & Luo, X. (2006). Real-Time Steganography in Compressed Video.
This paper discusses “an adaptive and large capacity steganography method applicable to compressed video”.

It is quickly identified that algorithms that work with video “require complete or at best decompression” to be able to work with the data stream. This paper documents a unique approach which involves working in the VLC (variable length code) domain, without a need for full or partial decompression.

The authors indicate an important aspect of steganography – where inside the container to hide the information. They state that is the requirements of the compressed domain are to be met; data should be encoded in the entropy-coded portion of the video.

Anderson, R. Stretching the Limits of Steganography.
Anderson starts this paper with a brief history of Steganography, he references D Khan (Khan, D. (1967)“The Codebreakers”. Macmillan)  for this section – this could be worth reading.

This paper provides an overview for the concept of public-key steganography, whilst it does not go into great depths it does provide widely cover aspects such as how the technique would stand up to scrutiny under active and passive wardens.

Watkins, J. (2001). Steganography - Messages Hidden in Bits.
This paper provides a good introduction and background to steganography and clearly differentiates between the fields of steganography and cryptography. There are some noteworthy quotes in the Introduction and Background section.

This paper discusses some of the fundamental techniques of steganography such as LSB schemes – no new techniques or concepts are expressed. 

The application of digital watermarking and the field of steganalysis are explained, but again, nothing new is documented. In the Steganalysis section, some case studies are discussed, however the studies in question seemed largely unsuccessful.

Jyothi, V. B., Verma, S. M., Shanker, C. U. (2010). Implementation and Analysis of Email Messages Encryption and Image Steganography Schemes for Image Authentication and Verification.
This paper discussed a slightly unusual concept of using steganography to address integrity and authentication issues regarding e-mail messages. The authors document how they produced a system that encodes authentication details for the message into an image, which is attached to the same e-mail and used to authenticate the message contents.

This paper discusses general image steganography techniques, and also acknowledges the application of linguistic steganography.

Bandyopadhyay, S. K. & Datta, B. (2011). Higher LSB Layer Based Audio Steganography Technique.
This paper is solely focused on audio steganography, the authors discuss how different LSB levels can be used to encode into audio, and how affective each variant is. To generalise, this paper discusses variations on LSB schemes for audio steganography.

Yang, G., Li, J. He, Y. & Kang, Z. (2010). An information hiding algorithm based on intra-prediction modes and matrix coding for H.264/AVC video stream.
This paper discusses the development of an encoding system that is block based, where two bits are encoded in a 4x4 block. This technique has been explored elsewhere, but the steganography capacity of previous works was low, however, this technique does come with the trade-off of being heavily robust. Robustness is essential, especially when working with lossy compression formats.

This paper discusses an “improved” system that modifies the intra-prediction modes for each 4x4 block.

Rabah, K. (2004). Steganography - The Art of Hiding Data.
This paper provides a general over view of the history, techniques and tools currently used in the field of Steganography.

Sherly A. P. & Amritha P. P. A. (2010). Compressed Video Steganography using TPVD.
This paper discusses a technique for encoding data in compressed video. Specifically, the technique involves embedding data in I-frames with maximum scene change and in block frames with maximum magnitude of motion vectors. The novel approach proposed for doing this, is called “tri-way pixel-value differencing”. This method does not require decompression and has shown that has high imperceptibility and capacity.

This technique also explores how pixel information in smooth areas and on edges can be treated differently. The human eyes have a greater tolerance for more substantial colour changes at a boundary/edge, but anything other than a slight variation in a smooth region is significantly noticeable.

Budhia, U. & Kundur, D. (2004). Digital video steganalysis exploiting collusion sensitivity.
This paper is dedicated to different steganalysis techniques only. Provides a good introduction and definition of steganalysis. This paper provides a reasonably high level of detail on how collusion and classification based steganalysis can be applied to video cover objects.

Budhia, U., Kundur, D., Zourntos, T. (2006). Digital Video Steganalysis Exploiting Statistical Visibility in the Temporal Domain.
This is another paper which explains how collusion-based steganalysis can be used on a video cover object. This paper describes an “interframe collusion” technique, that overcomes the suboptimal frame-by-frame approached used in a large number of steganalytical techniques. The mathematics and details behind the technique are detailed in length.





Paper Summaries (Part 1)

Detailed below are summaries of some of the papers that were mentioned in my Description Stage and Papers blog post.

Singh, S. & Agarwal, G. (2010). Hiding image to video: A new approach of LSB replacement.
This paper describes a technique for hiding an image in a video but hiding each row of pixels of the in the first row of pixels of different video frames. This paper is dedicated to explaining the algorithm the authors propose, a very brief explanation of LSB encoding is given. The abstract also claims (without reference or evidence) that hiding data across multiple frames is “very difficult to analyse”.

Prabhakaran, N. & Shanthi, D. (2012). A New Cryptic Steganographic Approach using Video Steganography.
Here the authors describe a method of encoding a message (encrypted with AES), in a video, “embedding in both the horizontal and vertical components of the motion vector”.

In the introduction of this paper the authors acknowledge the necessity for steganography and cryptography for secure communication, and outline what cryptography and steganography involve and how they differ.

This paper claims that Image steganography is the most commonly used type of Steganography, unfortunately they do not provide any references or stats to justify this statement.

Frequency domain and spatial domain techniques for images steganography are also discussed and defined. Prabhakaran and Shanthi define these terms as follows:

  • Spatial domain techniques embed the message directly in the intensity of the pixels.
  • Frequency domain (a.k.a-- “transform domain”) techniques first transform the image before embedding the message.

Some pre-existing techniques for video steganography are discussed and referenced. From this discussion of pre-existing techniques, I have identified that encoding in H.264 is slightly different, as different block sizes are used during the inter prediction stage. This is something which Spyridon K et al have used in their work on steganography with the H.264 format 1.

The authors describe an interesting technique for their stego-module that provides a way of dealing with lossy compression issues that surround JPEG image formats.

Al-Frajat, A. K., Jalab, H. A., Kasirun, Z, M., Zaiden, A. A. & Zaiden, B. B. (2010). Hiding Data in Video File: An Overview.
This paper gives an overview of existing steganographic techniques that are used to hide information in video containers. This paper provides a source to work by Zaidan et al (2009), which identifies that steganography was initially used by military and government organisations, however, steganography is now widely used for many purposes.

A detailed history of Steganography is explained with examples of genuine Linguistic Steganography from the history. Steganographic capacity is discussed; video is identified as having the largest capacity of all digital media (images, audio and video).

This paper discusses in detail, the work of others in the field of video steganography, and explains important aspects of video and image manipulation – such as the YCbCr colour model.

References in this paper are extensive.

Mozo, A. J., Obien, M. E., Rigor, C. J., Rayel, D. F., Chua, K. & Tangonan, G. (2009). Video Steganography using Flash Video (FLV).
According to this paper FLV has a small file size and simple structure. This paper discusses several references that detail techniques for encoding messages in video with 100% lossless extraction, and as such, the authors have achieved a technique of embedding data in a FLV file that has 100% lossless-extraction.

One of the pre-existing techniques that this paper mentions involves using Fourier transforms with the MPEG4 file format. As further reading, it would be worth investigating Fourier transforms.

As FLV is a file format intended to stream, it allows for frequent multiplexing of audio and video data. Multiplexing audio and video regularly is important for video files that are streamed, as this allows audio and video to be played back without having to wait for different file parts to buffer as audio and video multiplexing puts associated audio and video data close together.

The authors discuss how FLV files allow for additive-steganography – the video stream is more tolerant of this than the audio stream. 

Given the research that has been carried out in order to write this paper, it would appear that the FLV file format is extremely robust and can even have audio and video tags removed without corrupting the file.

Zhang, C., Su, Y., Zhang, C. (2008). Video steganalysis based on aliasing detection.
The principle described in this paper is quite mathematically involved and details steganalysis only. The technique proposed in this paper using aliasing to detect modifications caused by the application of steganography. Hidden data is usually high frequency in comparison to the unmodified cover image. The technique proposed by Zhang and Zhang relies on isolating the high-frequency signals in the cover object, to identify the hidden contents.




  1. Kapotas, S.K., Patras Varsaki, E.E., Skodras, A.N. (2007). Data Hiding in H. 264 Encoded Video Sequences.