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.
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';
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));
Let's explain how it works with an example. Consider this beautiful octocat.
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 * |
---|---|---|
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.