Как сделать свой QR Code (спрятать сообщение в картинке)
Недавно довелось мне практиковаться в создании сложной и многоуровневой загадки, где надо было использовать коды, шифрование, секретные послание и прочую ерунду. Как шифровать в Linux помощью OpenSSL, с помощью TrueCrypt и с помощью GnuPG я уже писал. А вот как сделать свой QR Code я ещё не писал. А ведь это просто. Так же, бьюсь об заклад, что в 90-х Вы не раз видели фильмы про хакеров, где супер мощные ребята прятали текстовые сообщения в картинке, в обычном изображении. Так вот, это до абсурда просто. Напоследок, в GNOME есть быстрый и удобный способ пользоваться шифрованием, с помощью утилиты Cryptkeeper. О QR Code’ах, картинках с сообщениями и Cryptkeeper’е под катом.
Как сделать QR Code
О том, что такое QR Code и где эта штуковина используется, Вы сможете прочитать более подробно на страницах Wikipedia, я только отмечу, что текстовое сообщение упакованное в QR Code не может превышать 4,296 символов, если это будут только цифры, то можно запихнуть 7,089 символов. Я это к тому, что Войну и Мир в QR Code вам засунуть не удастся, но короткое сообщение пожалуйста. Кстати для телефонов iPhone и Android есть масса приложений, которые могут не напрягаясь читать QR Code.
Для создания QR Code в Linux нужна утилита qrencode:
sudo apt-get install qrencode
Далее, что-бы создать стандартную картинку с QR Code:
qrencode -o kartinka.png 'Super Secret Message'
Задать размер можно опцией -s:
qrencode -o hello_big.png -s 10 'Super Secret Message'
Картинка с кодом появится в вашей текущей директории.
Как спрятать сообщение в картинке
Методы описанные ниже, работают как часы, но вряд ли, текстовое сообщение в картинке или фотографии, хорошая идея, во первых это старо как мир, вот вторых, после «инъекции» текста в картинку, она «полнее» и «набирает вес», а MD5-сумма тут же меняется.
Давайте возьмём вот эту картинку:
user@linux:~/Desktop$ md5sum Leda.png
e8f3fecaa6d11b07e1cc0b51908e11e9 Leda.png
user@linux:~/Desktop$ ls -la Leda.png
-rw-r--r-- 1 user user 879328 2011-04-18 20:13 Leda.png
Обратите внимание на MD5-сумму и размер. А теперь давайте сделаем инъекцию в виде текстового сообщения в эту картинку.
cat Leda.png -> Leda_Secret.png
где:
- Leda.png — текущая картинка
- Leda_Secret.png — имя для картинки с текстом внутри
После выполнения команды переведенной ниже, Вы увидите только мерцающий курсор, начинайте набор сообщения, Enter — пропуск строки и Ctrl+D выход, сообщение зашивается автоматически.
А вот параметры картинки:
user@linux:~/Desktop$ md5sum Leda_Secret.png
41491b7ec6156f5cd72df110ef6e4e01 Leda_Secret.png
user@userlinux:~/Desktop$ ls -la Leda_Secret.png
-rw-r--r-- 1 user user 879402 2011-04-18 20:14 Leda_Secret.png
Сравните MD5-сумму и «вес» картинки, вторая тяжелее первой на 74 байта. Прочитать текст в картинке можно с помощью tail:
tail Leda_Secret.png
В самом конце Вы увидите Ваш текст
Если ваше сообщение хранится в текстовом файле, то можно «слить» текст с файла в картинку «на прямую»:
cat Leda.png message.txt > secret.png
Помимо уже изученного нами кустарного метода, существует метод нормальный и куда более серьезный, но об этом отдельной статье.
Зашифрованный каталог с помощью Cryptkeeper
Это простой и не навязчивый метод зашифровать каталог в Ubuntu Linux. Ставим Cryptkeeper в систему:
sudo apt-get install cryptkeeper
Добавляем вашего юзера в группу fuse:
sudo addgroup userid fuse
Делаем Log Out -> Log On в систему. Далее идем в меню Приложения -> Системные утилиты -> Cryptkeeper (Applications -> System Tools -> Cryptkeeper) в трее у вас появится значок. Клацнете по нему левой кнопкой мыши, выберите «Новая зашифрованная папка», в открывшемся окне нажмите создать папку, дайте ей имя и нажмите «Вперед». Далее введите пароль, После чего папка примонтируется и Вы сможете сложить в нее файлы.
Для того, что-бы отмонтировать каталог, кликните левой кнопкой мыши по значку Cryptkeeper в трее и снимите галочку с каталога