LVDOWin (pronounced as ludou) is a video steganography implementation by StarBrilliant using DCT coefficients.
This is a Windows fork of that original repository. Feel free to visit it's Github repository for more information.
You can convert a file into video and upload it to YouTube or many other video sites. The receiver downloads the video and is able to extract the file using the same parameter you encode it.
This is a possible combination of parameters:
# Compile it
git clone https://github.com/m13253/lvdo.git
cd lvdo/src
make
# Encode
type hello.txt | lvdoenc -s 640x480 -q 6 --qmin 1 --qmax 4 | x264 --input-res 640x480 --fps 1 --profile high --level 5.1 --tune stillimage --crf 22 --colormatrix bt709 --me dia --merange 0 -o public.mkv -
# Decode
ffmpeg -i public.mkv -r 1 -f rawvideo - | lvdodec -s 640x480 -q 6 --qmin 1 --qmax 4 > message.txt
Ensure you have all dependencies. This uses a Python GUI requiring PySide. Python 3 recommended.
pip install PySide
Simply press convert binary file to video. Your video will be saved as output.mkv in the top level directory.
Simply press convert video to binary file. Your file will be saved at file specified under "Decoded Output File."
During the port to Windows, arguement parsing broke. For now, I just have it hard coded. Until this is fixed, no parameters may be changed for the encoding or decoding process.
Some parameter combination causes undecodable file.
Due to rounding errors, input file and output file is not precisely the same. You should add some mechanism to keep file integrity. Join the discussion on this issue.
Note that LVDO is not cryptographic secure! Anyone can decode the data with the same parameters. If you have secret data, encrypt it with a password or a key before feeding it into LVDO.
This program is licensed under GNU General Public License version 3 or later, the author does not provide any warranties. Users should be responsible for any potential damage caused by this software.
Head to the file LICENSE in the code repository for the license text.
I hope you will not abuse this program to do something evil.
-
Why is it called LVDO?
You will find some secrets when you spell it out in Japanesu Engurishu.
-
How do I adjust those complicated parameters?
Do not use the maximum. Do not use the minimum either. Try to decode your self before publishing.
-
Why the video downloaded from YouTube can not be decoded?
Play around with those parameters please. If you could not get it work, feel free to contact me for help. Also, YouTube forces the use of BT.709 colormatrix, make sure you are using the correct x264 setting.
-
What is
clipping xxx to xxx
?It means the decoded file is corrupted. If it happens a lot during decoding, make sure you are using appropriate parameters. If it happens a lot during encoding, please submit an issue to me alongside with your parameters.
-
Any other questions?
See if there are any issues on your question. If not, submit one.
-
A friendlier GUI
-
A streaming decoder in HTML5
-
Transmission Control Layer built on top of Bitstream Transport Layer
-
Error tolerance control, see issue #4
-
Watermark bypassing mechanism
-
Carrier picture support, that is what the encoded picture looks like, see issue #3
-
Co-operation with some parasitic video sites
See LVDO in action.