├── Embedder ├── random.in ├── filenames.txt ├── tempstuff.sh ├── run_spidey.sh ├── run_godzilla.sh ├── embed_to_zero.txt ├── runner.sh ├── Embedder_0.py ├── Embedder_1.py ├── embed_1.cl └── embed_0.cl ├── steganography_ui ├── modules │ ├── joiner │ │ ├── instructions.sh │ │ ├── config.cfg │ │ ├── tempstuff │ │ ├── runner.sh │ │ └── joiner.py │ ├── embedder │ │ ├── README │ │ ├── gpu_embedder │ │ │ ├── tempstuff.sh │ │ │ ├── run_spidey.sh │ │ │ ├── run_godzilla.sh │ │ │ ├── runner.sh │ │ │ ├── Embedder_0.py │ │ │ ├── Embedder_1.py │ │ │ ├── embed_1.cl │ │ │ └── embed_0.cl │ │ └── cpu_embedder_slow │ │ │ └── newest_embedder.py │ ├── decoder │ │ ├── stuff │ │ │ ├── godzilla_package.tar │ │ │ └── godzilla_package │ │ │ │ └── godzilla_decoder.py │ │ ├── decoder_preprocessing.py │ │ └── decoder.py │ ├── calc_luminance │ │ ├── plotter.py │ │ ├── gpu_code │ │ │ ├── calc_luma.cl │ │ │ └── gpu_calc_luma.py │ │ └── cpu_code │ │ │ └── calc_luminance.py │ ├── README │ └── splitter │ │ ├── temp_runner.sh │ │ ├── splitter_with_dest.sh │ │ └── splitter.sh ├── web │ ├── slides │ │ ├── slide_1.html │ │ ├── slide_2.html │ │ └── slide_0.html │ ├── references.html │ ├── video_processing.html │ ├── index.html │ ├── overview.html │ ├── old_files │ │ ├── bold.html │ │ ├── base.html │ │ ├── file_upload.html │ │ └── sample_file.html │ ├── select_operations.html │ ├── transformed_rows.html │ ├── uploads.html │ ├── joiner.html │ ├── compare.html │ ├── video_upload.html │ ├── archives.html │ ├── detector.html │ ├── overview_slide.html │ ├── preprocessed_overview.html │ ├── compare_page.html │ ├── embedder.html │ ├── splitter.html │ ├── overview_slide_.html │ └── bootstrap_base.html ├── images │ ├── Picture1.jpg │ ├── Picture2.jpg │ ├── capture_1.jpg │ ├── capture_2.jpg │ ├── not_found.jpg │ ├── splitter_1.jpg │ ├── splitter_2.jpg │ ├── splitter_3.jpg │ ├── splitter_4.jpg │ ├── cam_rec_1_luma.png │ ├── cam_rec_2_luma.png │ ├── original_image.bmp │ ├── original_luma.png │ ├── carousel_background.jpg │ ├── decreased_luma_image.bmp │ └── increased_luma_image.bmp ├── tornado_handlers │ ├── decoder.pyc │ ├── plotter.pyc │ ├── __init__.pyc │ ├── new_img1.bmp │ ├── custom_utils.pyc │ ├── joiner_handler.pyc │ ├── archive_handler.pyc │ ├── compare_handler.pyc │ ├── detector_handler.pyc │ ├── embedder_handler.pyc │ ├── overview_handler.pyc │ ├── splitter_handler.pyc │ ├── transformations.pyc │ ├── uploads_handler.pyc │ ├── compare_files_handler.pyc │ ├── transformation_handler.pyc │ ├── video_processing_handler.pyc │ ├── joiner_handler.py │ ├── embedder_handler.py │ ├── splitter_handler.py │ ├── video_processing_handler.py │ ├── overview_handler.py │ ├── __init__.py │ ├── uploads_handler.py │ ├── compare_handler.py │ ├── decoder_preprocessing.py │ ├── archive_handler.py │ ├── plotter.py │ ├── custom_utils.py │ ├── detector_handler.py │ ├── transformations.py │ ├── transformation_handler.py │ ├── compare_files_handler.py │ └── decoder.py ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.ttf │ └── glyphicons-halflings-regular.woff ├── reset.sh ├── backup.sh ├── js │ ├── video_processing_handlers.js │ ├── old_handlers.js │ ├── my_handlers.js │ ├── jquery.iframe-transport.js │ └── docs.min.js ├── css │ ├── dashboard.css │ ├── bootstrap-select.min.css │ ├── bootstrap-select.css │ ├── bootstrap-theme.min.css │ └── bootstrap-theme.css └── server.py └── README.md /Embedder/random.in: -------------------------------------------------------------------------------- 1 | 0 2 | -------------------------------------------------------------------------------- /Embedder/filenames.txt: -------------------------------------------------------------------------------- 1 | test_image.bmp 2 | -------------------------------------------------------------------------------- /steganography_ui/modules/joiner/instructions.sh: -------------------------------------------------------------------------------- 1 | Insufficient frames 2 | -------------------------------------------------------------------------------- /steganography_ui/web/slides/slide_1.html: -------------------------------------------------------------------------------- 1 |
Joiner is responsible for joining stego frames in a fashion determined by the input string (Transaction ID)
6 |A two minute video in frames is around 20 GB. Joiner needs 4 folders 7 |
Joiner needs enough space for all of this, and an external HD mounts differently each time
16 |Run from shell to be sure , web based query might be faulty
17 || {{ document['name'] }} | 13 | {% end %} 14 |15 | Transformations 16 | | 17 |
|---|
| 5 | 6 | | 7 |8 | 12 | | 13 |
14 |
15 |
18 |
19 | |
20 |
| Name | 8 |Size (bytes) | 9 |Last Modified | 10 |
|---|---|---|
| {{ document['name'] }} | 15 |{{ document['size'] }} | 16 |{{ document['last-modified'] }} | 17 |
6 |
10 | The result is : {{ bitstring }}
17 | {% end %} 18 | 19 |Given two files containing the luminance values , as well as the configuration file, it will return the detected code
21 | 22 | 37 | 38 |It takes all the frames from a folder of a video, and produces three folders - Normal, Zero and One Folder
5 |This is a preprocessing step before joiner creates the stego video.
6 |Unfortunately, this server does not have a GPU to support creating the zero one and normal folder, as it takes 34 seconds per Frame
7 |A two minute video as 3000 frames !
8 | 9 | 10 |Folder layout
13 |
14 | embed 1 frames
18 |
19 | embed 0 frames
23 |
24 |
37 | Original Image
50 |
51 | Increased Luma
55 |
56 | Decreased Luma
60 |
61 | Given a video, it will split it into frames. A frame rate can optionally be given
5 | 6 |Original Video Split
10 |
11 | Here is the code
18 | 19 |
20 | #!/usr/bin/env bash
21 | filename=$(basename "$1");
22 | extension="${filename##*.}";
23 | filename="${filename%.*}";
24 | pretty_separator="-----------------------------------------------------------------------";
25 |
26 |
27 | if [[ -z "$1" ]]; then
28 | echo "Usage: ./anto_script.sh video_file [framerate=25]"
29 | exit;
30 | fi
31 | if [[ -z "$2" ]]; then
32 | frame_rate=25;
33 | else
34 | frame_rate=$2;
35 | fi
36 |
37 | echo $pretty_separator;
38 | image_dir="images_$filename";
39 | if [ -d "$image_dir" ]; then
40 | echo "Directory $image_dir already exists";
41 | read -p "Delete directory and continue Y/n? " -n 1 -r
42 | echo # (optional) move to a new line
43 | if [[ $REPLY =~ ^[Yy]$ ]]
44 | then
45 | # do dangerous stuff
46 | rm -rf $image_dir;
47 | else
48 | echo "remove and run this again ";
49 | exit;
50 | fi
51 | fi
52 | echo "creating $image_dir";
53 | mkdir $image_dir;
54 |
55 | echo "running ffmpeg on $filename storing images in $image_dir, modify script to change framerate, default $frame_rate";
56 | echo $pretty_separator;
57 |
58 | ffmpeg -i $1 -r $frame_rate -f image2 $image_dir/image_%08d.bmp;
59 |
60 | echo $pretty_separator;
61 |
62 | ls -d -1 $PWD/$image_dir/*.bmp > $image_dir/filenames.txt;
63 | echo "calling calc_luminance.py on the images, saved at $image_dir/luminance_values";
64 | python calc_luminance.py $image_dir/filenames.txt > $image_dir/luminance_values.repr ;
65 |
66 | echo $pretty_separator;
67 |
68 | echo "Creating graph and saving in $image_dir/luminance_values.repr.bmp";
69 | python plotter.py $image_dir/luminance_values.repr ;
70 | # eog $image_dir/luminance_values.repr.bmp;
71 | echo "done";
72 |
73 |
74 |