Разработчик создал инструмент 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 и посмотреть в работе.
Как защитить изображения
Меллема рекомендует полностью удалять конфиденциальную информацию из изображений, а не пользоваться графическими редакторами для размытия или пикселизации.
Алгоритмы восстановления хотя бы частично, но могут распознать текст, и в будущем методы будут только совершенствоваться.
Комментарий недоступен
«Ты пид*ор»? Ну блин
А как же... просвет чёрной плашки через контрастность?
Если вы про замазывание данных через встроенный редактор iPhone — там есть хитрость. Стандартно прозрачность всех инструментов меньше 100%, поэтому можно покопаться в фотошопе и отрегулировать параметры так, чтобы прочитать замазанное.
Комментарий недоступен
Комментарий недоступен
Кто вообще так замазывает? Обычно просто одним цветом закрашивают