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

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

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

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

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

Что делает Depix

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

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

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

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

В качестве алфавита 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

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

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

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

6262
13 комментариев

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

8
Ответить

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

10
Ответить

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

Ответить

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

7
Ответить

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

2
Ответить

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

Ответить

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

Ответить