Skip to content

waleko/PictureCrypt

Repository files navigation

PictureCrypt

An image steganography tool

Build Status undefined Documentation License

// Encryption
QByteArray message("secret");
QImage *image = new QImage("./images/sunset.jpg");
QImage *image_to_send = ModelPC::Encrypt(message, image, "password1");

// Decryption
QByteArray incoming_message = ModelPC::Decrypt(image_to_send, "password1"); // "secret"

What is PictureCrypt

PictureCrypt is a simple educational cross-platform steganography tool that hides data in images. This project is built on Qt Platform using the MVC pattern and features GUI and console interface. Project repository is available on GitHub.

Download

Get stable binary files at latest release page Or download latest potentially unstable files:

Links

Windows:
Linux:

Console use

$ picturecrypt -h
Usage:
  picturecrypt encrypt <image> <input file> <key> <output> [options]
  picturecrypt decrypt <image> <key> <output> [options]
  picturecrypt (-h | --help)
  picturecrypt --version

Options:
  -h --help    Show this screen.
  --version    Show version.
  -m --mode    Mode of cryption.
  -b           Encryption bitsUsed parameter.
$ picturecrypt --version
1.4.1
$ picturecrypt encrypt original.jpg data.txt somekey result.png
$ picturecrypt decrypt result.png somekey output.txt

Available modes of encrypting

  • 0 - Auto-detect, used for decryption, so it auto-detects (invalid at encryption as you must select the encryption type)
  • 1 - v1.3, only available on versions 1.3+
  • 2 - v1.4, advanced (default) encryption mode, available on versions v1.4+

Documentation

Documentation generated by Doxygen

CI/CD

Continuous integration is fulfilled via Travis CI for Linux and AppVeyor for Windows.

i18n

Languages

This project is available in multiple languages thanks to the Qt Linguist Platform.

Available languages:

  • English (default)
  • Russian
  • German

Help translating

If you would like to translate PictureCrypt to your language here are the steps to do so:

  • Install Qt and Qt Linguist with it
  • Clone the project.
  • Go to PictureCrypt/src/app/
  • Add a filename to TRANSLATIONS in src/app/app.pro file. Filename must be 'picturecrypt_{your language}.ts' (e.g. 'picturecrypt_fr.ts')
  • Run lupdate src.pro, it will generate that .ts file. An error may occur: "Maybe you forgot to set your environment?" To solve it go to Project (on the left-hand side) ->(expand) Build environment -> Open terminal and run lupdate src.pro.
  • Go to translations/
  • Run linguist picturecrypt_{your language}.ts. The Qt Linguist will appear, where you can translate given text from English (there are a couple of html entries, just edit its text part).
  • Either go to 'File -> Compile' or run lrelease picturecrypt_{your language}.ts.
  • Add your picturecrypt_{your language}.ts to src/app/translations.qrc resource file.
  • Create a pull request with your work.

Dependencies

Works of other people used in this project

  • QAESEncryption by bricke (provided under unlicense)
  • 'Circle Icons' by Nick Roach provided under GPL v3.0.
  • 'MS Shell Dlg 2' font used and 'Montserrat' font used under the SIL Open Font License.

Contact

Questions and suggestions are welcome! Email me inbox@alexkovrigin.me or telegram me at waleko

License

This software is MIT licensed.

Copyright © 2021 Alexander Kovrigin