Skip to content

Latest commit

 

History

History
78 lines (54 loc) · 2.41 KB

README.md

File metadata and controls

78 lines (54 loc) · 2.41 KB

Morpheus (莫菲斯)

License
Code Climate

Morpheus is a library to encrypt and decrypt data in colors of a picture. Process also known as steganography.

The project works regardless with imageMagick, GD library, or the well written intervention library.

Installing via Composer

The recommended way to install Morpheus is through Composer.

composer require pyrou/morpheus

After installing, you need to require Composer's autoloader:

require 'vendor/autoload.php';

How to use it

With GD library

# write data in image
$im = imagecreatefrompng("source.png");
Morpheus\Data::write("Helloworld", $im);
imagepng($im, "output.png");

# read data from image
$im = imagecreatefrompng("output.png");
assert("Helloworld" === Morpheus\Data::read($im));

With Image Magick

# write data in image
$im = new Imagick("source.png");
Morpheus\Data::write("Helloworld", $im);
$im->writeImage("output.png");

# read data from image
$im = new Imagick("output.png");
assert("Helloworld" === Morpheus\Data::read($im));

How does it work ?

Let's explain how it works with an example. Consider this beautiful octocat.

input

require 'vendor/autoload.php';
$im = imagecreatefrompng("source.png");
$data = base64_encode(
    "L'homme est un homme tant qu'il s'évertue ".
    "à s'élever au dessus de la nature, et cette ".
    "nature est à la fois intérieure et extérieure.");
Morpheus\Data::write($data, $im);
imagepng($im, "output.png");

Bellow is how humans and computers (or perspicuous humans) can see the output.png file.

source.png output.png --debug*
input output.png What library sees

In fact, the library has slightly changed the coloration of each pixels in upper-half of the file. So slightly that human eyes are NOT able to detect it.

*For understand what Morpheus did, and what he sees now.