Разработчик создал инструмент Depix, который восстанавливает «пиксельный» текст в документах и скриншотах Статьи редакции

Алгоритм подбирает похожие блоки пикселей по алфавиту и воссоздает по ним исходное изображение. Поэтому лучше удалять личные данные на скриншотах или прятать под несколькими черными плашками.

Иногда требуется отправить скриншот, на котором есть личные данные: пароли или данные банковской карты. Чтобы скрыть лишнюю информацию, компании и пользователи размывают или пикселизируют информацию, а не закрашивают её.

Теперь это может быть небезопасно. Специалист по информационной безопасности Сипке Меллема разработал инструмент на базе Python, позволяющий восстановить пикселизованный текст на изображении и опубликовал его на Github.

Сверху вниз: пикселизированный текст, восстановленный и оригинальный

Что делает Depix

Обычно изображение пикселизируют с помощью блочного фильтра. Он делит изображение на прямоугольники и усредняет цвет пикселей.

Фильтр разбивает картинку на области и перезаписывает данные о пикселях в каждой

Два расположенных рядом символа будут одинаково пикселизироваться на разных изображениях, а значит, их можно расшифровать. Чтобы восстановить номер банковской карты, нужно сгенерировать все возможные номера банковских карт, пикселизировать их и затем сравнить результат с нужной картой.

На входе Depix получает пикселизированное изображение (то, на которое нужно расшифровать) и алфавит, набранный похожим шрифтом. Затем алгоритм пикселизирует алфавит и ищет совпадающие блоки пикселей.

В качестве алфавита Depix использует последовательность де Брёйна: в ней уникальна любая комбинация символов.

Так выглядит последовательность де Брёйна

Сначала алгоритм находит один совпадающий блок, а затем подбирает похожие соседние блоки, которые находятся на том же расстоянии, что и на исходном изображении.

Каждый совпадающий блок помечается как «правильный». Подбор идет до тех пор, пока у «правильных» блоков не будет новых геометрических совпадений. После выводится результат.

Для блоков с несколькими совпадениями алгоритм выведет средние значения.

Как воспользоваться Depix

  • Установить Python.
  • Скачать Depix (Code → Download .zip).
  • Вырезать прямоугольный пикселизированный кусок из нужного изображения.
  • Сгенерировать последовательность де Брёйна с предполагаемыми символами и создать файл с теми же настройками шрифта, что и в пикселизованном фрагменте (размер, цвет, шрифт, цветовая модель HSL).
  • Сделать скриншот последовательности де Брёйна, по возможности — тем же инструментом, которым создавался пикселизованный текст.
  • Запустить в Python код python depix.py -p [название пикселизированного куска изображения] -s [образец алфавита] -o output.png
  • Готовый результат будет в изображении output.png

Чтобы было проще разобраться в работе алгоритма, автор приводит готовый пример строки. Его можно запустить сразу после скачивания Depix и посмотреть в работе.

python depix.py -p images/testimages/testimage3_pixels.png -s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png -o output.png

Как защитить изображения

Меллема рекомендует полностью удалять конфиденциальную информацию из изображений, а не пользоваться графическими редакторами для размытия или пикселизации.

Алгоритмы восстановления хотя бы частично, но могут распознать текст, и в будущем методы будут только совершенствоваться.

0
13 комментариев
Написать комментарий...
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Юрий Б.

«Ты пид*ор»? Ну блин

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Bulat Ziganshin

great minds think alike

Ответить
Развернуть ветку
Юрий Б.

Гостевые недели Лепры на виси)

Ответить
Развернуть ветку
Андрей Антонов

А как же... просвет чёрной плашки через контрастность?

Ответить
Развернуть ветку
Евгений Делюкин
Автор

Если вы про замазывание данных через встроенный редактор iPhone — там есть хитрость. Стандартно прозрачность всех инструментов меньше 100%, поэтому можно покопаться в фотошопе и отрегулировать параметры так, чтобы прочитать замазанное. 

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Роман Турьев

Кто вообще так замазывает? Обычно просто одним цветом закрашивают 

Ответить
Развернуть ветку
Alex K.

В первую очередь надо облегчить выделение нужного участка текста, чтобы лишнее не замазать и было ровно. А замазывать большинство готово любым паттерном. То, что тут выдаётся за достижение - изврат и не более

Ответить
Развернуть ветку
Роберт Арни

Я маркером на мониторе замазываю, ничего не видно и никакая программа не распознает это

Ответить
Развернуть ветку
10 комментариев
Раскрывать всегда