This python script allows user to hide secret text file on media files such as image, audio, and video. It also allows Steganalysis of frames to identify Steganography-ed frames.
- Spliting Video into Audio and Frames
- Combining Audio and Frames into Video
- Hiding and Retrieving Data from Frames (Image Steganography)
- Hiding and Retrieving Data from Audio (Audio Steganography)
- Steganalysis of Frames
Note 1: This tool only works with video file that has audio within them
Note 2: If you wish to view the changes in LSB Bits for Frames Steganography, uncomment line 1 and line 47 to 55 of analysis.py. Do remember to install matplotlib for the code to work
The program requires the following dependencies to run. In the terminal tab:
pip install pillow
pip install tkinter
pip install opencv-python
pip install moviepy
pip install matplotlib
python file RunStartHere.py
- The initial screen upon boot up
- User can select the function to run by keying in the number
- Key in '1' and press enter
- Select the 4th radio button
- Key in the path to the video file on the first textbox (e.g. C://path/filename.mp4)
- Click 'Run'
- Extracted frames will be stored in /output/filename_frames folder (e.g. C://path/output/filename_frames/)
- Select the 2nd radio button
- Key in the path to the video file on the first textbox (e.g. C://path/filename.mp4)
- Click 'Run'
- Extracted audio will be stored in /output folder as filename_audio.wav (e.g. C://path/output/filename_audio.wav)
- Key in '1' and press enter
- Select the 3rd radio button
- Key in the path to the video frames on the first textbox (e.g. C://path/output/filename_frames)
- Key in the path to the audio file on the second textbox (e.g. C://path/output/filename_audio.wav)
- Key in the path to the original video file on the first textbox (e.g. C://path/filename.mp4)
- Click 'Run'
- Combined video will be stored in /output folder as combined_video_audio.mkv (e.g. C://path/output/combined_video_audio.mkv)
- Key in '2' and press enter
- Key in the path of the text file to be hidden (e.g. C://path/filename.txt)
- Key in the path of the audio file (e.g. C://path/output/filename_audio.wav)
- Key in the LSB Bits to hide data at (e.g. 3)
Note: Value should be between 1 to 8
- System will inform of how many bytes are used to store the data
Note: The entered LSB Bits and shown Bytes will be used for retrieval of data
- New audio file with the hidden data will be stored at /output folder as steg_audio.wav (e.g. C://path/output/steg_audio.wav)
- Key in '3' and press enter
- Key in the path of the audio file to recover from (e.g. C://path/output/steg_audio.wav)
- Key in the LSB Bits (e.g. 3)
Note 1: Value should be between 1 to 8
Note 2: Value should be the same as the one entered during hiding
- Key in the number of bytes used to store the data (e.g. 380)
Note: Value can be obtained from the system output during hiding
- Retrieved data will be stored at /output folder as decoded_audio.txt (e.g. C://path/output/decoded_audio.txt)
Note 1: Incorrect LSB Bits entered leads to random data retrieved
Note 2: Lower bytes value entered leads to partial data retrieved
Note 3: Higher bytes value entered leads to full data retrieved with random data
- Key in '4' and press enter
- Key in the initial frame to hide the data (e.g. 3)
- Key in the last frame to hide the data (e.g. 6)
Note 1: User can store the data within any range of the frame as long as the size of the frame can hold the data
Note 2: If the data stored is significantly small and a wide range of frames have been selected, this may lead to random data to be retrieved during recovery process
Note 3: Hiding a data over frames that has hidden data previously, may results in corruption of data
- Key in the path to the frames folder (e.g. C://path/output/filename_frames)
- Key in the path to the text file to hide (e.g. C://path/filename.txt)
- System informs that the data has been hidden
- Key in '5' and press enter
- Key in the initial frame to where data is hidden (e.g. 3)
- Key in the last frame to where data data (e.g. 6)
Note 1: The initial and last frame refers to a range of frames (e.g. initial = 3 | last = 8 | range = frame 3 to frame 8)
Note 2: If the data stored is significantly small and a wide range of frames have been selected, this may lead to random data to be retrieved during recovery process
- Key in the path to the frames folder (e.g. C://path/output/filename_frames)
- Retrieved data will be stored in /output folder as decoded_frames.txt (e.g. C://path/output/decoded_frames.txt)
Detection of Frames with Hidden Data
- Key in '6' and press enter
- Key in the path to the frames folder (e.g. C://path/output/filename_frames)
- Key in the number of frames to perform Steganalysis on (e.g. 30)
- Key in the file extension (e.g. png)
- System outputs the frames where Steganography has been detected
Note 1: False-positive may occur if small amount of hidden data exists within the frame
Note 2: Despite missing some frames, the detection for image steganography are detected as accurate as possible
This folder will be created upon launching the tool. The image above shows where the output folder will be located.
Within the folder, these are all the files that have been created using this tool. The filename used for this example is 'test'.
TEAM AEGIS
- Tan Kae Chuan | @itxKAE
- Mirza Haziq Bin Mohammed Yusoff @m1rzyq
- Muhammad Syaifulnizar Bin Izam | @syaifulnizarrr
- Christopher Gwee Soon Chai | @ManOCoolture
- Ong Xing Hao | @XinhaoSITICT