Утилита Depix для восстановления паролей с размытых скриншотов

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

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

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


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

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


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

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

Как воспользоваться 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

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

Вложения

  • Depix-main_14.01.21.zip
    579,7 КБ · Просмотры: 0

Amney

Администратор
Регистрация
27.05.2019
Сообщения
187
Реакции
60
Возраст
29
Штука конечно полезная и подлая одновременно=)
 

mexan

Администратор
Регистрация
28.10.2017
Сообщения
878
Решения
1
Реакции
153
Верх