Coder Social home page Coder Social logo

javdomgom / videostego Goto Github PK

View Code? Open in Web Editor NEW
16.0 1.0 4.0 4.22 MB

Steganography (LSB) on MPEG-4 Part 14 format video files.

License: GNU General Public License v3.0

Makefile 8.66% C 91.34%
c gcc valgrind security security-tools steganography stego steganography-algorithms steganalysis steganography-library

videostego's Introduction

Status

License: GPL v3 GitHub code size in bytes Build Status Contributions welcome

Basic overview

Videostego is a tool that you can use to write and read hidden messages in MP4 files using Steganography techniques like LSB.

Dependencies

Check has the following dependencies:

  • GCC (required)
  • GNU Make (optional, can be compiled manually)
  • Check (optional, for testing)
  • Gcovr (optional, to generate code coverage reports)
  • Valgrind (optional, to detect many memory-related errors)

Building or install on GNU/Linux

On a GNU/Linux system you can build and install videostego with the usual sudo make install procedure.

~$ sudo make install

This way you will have the binary available in /usr/local/bin/videostego to run it from any directory on your computer.

To uninstall:

~$ sudo make uninstall

If you just want to compile the code and get a binary in the current directory you must run make build without sudo.

~$ make build

The resulting videostego binary file can then be placed and run anywhere on your computer of your choice.

How to run

~$ ./videostego -h
USAGE
        VideoStego [-f filename] [-w [-m message] | -r | -i] [-h] [-v]

DESCRIPTION

        Tool to apply steganography in video files.

OPTIONS

        -f, --file      Input video file.
        -m, --message   Message to hide. It has to be specified only if the mode is -w, --write.
        -w, --write     Write mode. Hide a secret message in video file.
        -r, --read      Read mode. Read a secret message in video file.
        -i, --info      Info mode. Print general structure and containers of video file.
        -v, --version   Print the program version.
        -h, --help      Print this help.

LICENSE

        License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
        This is free software: you are free to change and redistribute it.
        There is NO WARRANTY, to the extent permitted by law.

To write

~$ ./videostego -f some_file.mp4 -w -m "Hello world!"

To read

~$ ./videostego -f some_file.mp4 -r
"Hello world!"

To print file architecture

~$ ./videostego -f some_file.mp4 -i
[ftyp] (0x00000000)      28 bytes: File type and compatibility.
[mdat] (0x0000001c)       8 bytes: Media data container.
[mdat] (0x00000024)  303739 bytes: Media data container.
[moov] (0x0004a29f)    6202 bytes: Container for all the meta-data.
│
├───[mvhd] (0x0004a2a7)     108 bytes: Movie header, overall declarations.
├───[drm ] (0x0004a313)      18 bytes: DRM container.
├───[trak] (0x0004a325)    2536 bytes: Container for an individual track or stream.
│   │
│   ├───[tkhd] (0x0004a32d)      92 bytes: Track header, overall information about the track.
│   ├───[edts] (0x0004a389)      36 bytes: Edit list container.
│   └───[mdia] (0x0004a3ad)    2400 bytes: Container for the media information in a track.
│       │
│       ├───[mdhd] (0x0004a3b5)      32 bytes: Media header, overall information about the media.
│       ├───[hdlr] (0x0004a3d5)      53 bytes: Handler, declares the media (handler) type.
│       └───[minf] (0x0004a40a)    2307 bytes: Media information container.
│           │
│           ├───[smhd] (0x0004a412)      16 bytes: Sound media header, overall information (sound track only).
│           ├───[dinf] (0x0004a422)      36 bytes: Data information box, container.
│           └───[stbl] (0x0004a446)    2247 bytes: Sample table box, container for the time/space map.
│               │
│               ├───[stsd] (0x0004a44e)     103 bytes: Sample descriptions (codec types, initialization etc.).
│               ├───[stts] (0x0004a4b5)      24 bytes: (Decoding) time-to-sample.
│               ├───[stsc] (0x0004a4cd)     100 bytes: Sample-to-chunk, partial data-offset information.
│               ├───[stsz] (0x0004a531)    1016 bytes: Sample sizes (framing).
│               └───[stco] (0x0004a929)     996 bytes: Chunk offset, partial data-offset information.
└───[trak] (0x0004ad0d)    3532 bytes: Container for an individual track or stream.
    │
    ├───[tkhd] (0x0004ad15)      92 bytes: Track header, overall information about the track.
    ├───[edts] (0x0004ad71)      36 bytes: Edit list container.
    └───[mdia] (0x0004ad95)    3396 bytes: Container for the media information in a track.
        │
        ├───[mdhd] (0x0004ad9d)      32 bytes: Media header, overall information about the media.
        ├───[hdlr] (0x0004adbd)      53 bytes: Handler, declares the media (handler) type.
        └───[minf] (0x0004adf2)    3303 bytes: Media information container.
            │
            ├───[vmhd] (0x0004adfa)      20 bytes: Video media header, overall information (video track only).
            ├───[dinf] (0x0004ae0e)      36 bytes: Data information box, container.
            └───[stbl] (0x0004ae32)    3239 bytes: Sample table box, container for the time/space map.
                │
                ├───[stsd] (0x0004ae3a)     171 bytes: Sample descriptions (codec types, initialization etc.).
                ├───[stts] (0x0004aee5)     152 bytes: (Decoding) time-to-sample.
                ├───[stss] (0x0004af7d)     112 bytes: Sync sample table (random access points).
                ├───[stsc] (0x0004afed)     736 bytes: Sample-to-chunk, partial data-offset information.
                ├───[stsz] (0x0004b2cd)    1788 bytes: Sample sizes (framing).
                └───[stco] (0x0004b9c9)     272 bytes: Chunk offset, partial data-offset information.

Memory check

The Valgrind tool suite provides a number of debugging and profiling tools that help you make your programs faster and more correct. The most popular of these tools is called Memcheck. It can detect many memory-related errors that are common in C and C++ programs and that can lead to crashes and unpredictable behaviour. To install it:

~$ sudo apt-get update
~$ sudo apt-get install valgrind

To start memory check:

~$ make valgrind FILE=some_file.mp4 MSG="Hello"

If everything is ok the output is:

...
==3676794== All heap blocks were freed -- no leaks are possible
==3676794== 
==3676794== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Questions

If you have questions, please email inquiries to [email protected].

If you don't understand the documentation, please tell us, so we can explain it better. The general idea is: if you need to ask for help, then something needs to be fixed so you (and others) don't need to ask for help. Asking questions helps us to know what needs to be documented, described, and/or fixed.

videostego's People

Contributors

javdomgom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

videostego's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.