1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors_trending-Depix

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Depix

Depix — это PoC-решение для восстановления открытого текста из пикселизированных скриншотов.

Эта реализация работает с пикселизированными изображениями, которые были созданы с помощью линейного бокс-фильтра. В этой статье я рассказываю о пикселизации и подобных исследованиях.

Пример

image

Обновления

  • 27 ноября 23 года: переработан код и удалены все вещи, связанные с pip. Мне нравятся скрипты, которые можно просто запустить. Если пакет не найден, просто установите его. Также добавлен tool_show_boxes.py, чтобы показать, насколько плох детектор блоков (вам нужно точно вырезать пиксели). Создано задание для создания версии, которая просто вырезает блоки статического размера.

Установка

  • Установите зависимости.
  • Запустите Depix:
python3 depix.py \
    -p /path/to/your/input/image.png \
    -s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png \
    -o /path/to/your/output.png

Использование

  • Депикселизация примера изображения, созданного в Notepad и пикселизированного с помощью Greenshot. Greenshot усредняет значения гаммы от 0 до 255, что является режимом по умолчанию для Depix.
python3 depix.py \
    -p images/testimages/testimage3_pixels.png \
    -s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png

Результат: image

  • Депикселизация примера изображения, созданного в Sublime и пикселизированного с Gimp, где усреднение выполняется в линейном sRGB. Опция backgroundcolor фильтрует фоновый цвет редактора.
python3 depix.py \
    -p images/testimages/sublime_screenshot_pixels_gimp.png \
    -s images/searchimages/debruin_sublime_Linux_small.png \
    --backgroundcolor 40,41,35 \
    --averagetype linear

Результат: image

  • (Необязательно) Вы можете посмотреть, находит ли детектор блоков ваши пиксели, с помощью tool_show_boxes.py. Рассмотрите меньшую группу пикселей, если это выглядит запутанным. Пример хорошо выглядящих блоков:
python3 tool_show_boxes.py \ 
    -p images/testimages/testimage3_pixels.png \
    -s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png
  • (Необязательно) Вы можете создать пикселизированное изображение с помощью tool_gen_pixelated.py.
python3 tool_gen_pixelated.py -i /path/to/image.png -o pixed_output.png

Для подробного объяснения попробуйте запустить $ python3 depix.py -h и tool_gen_pixelated.py.

О

Создание поискового изображения

  • Вырежьте пиксельные блоки из скриншота в виде единого прямоугольника.
  • Вставьте последовательность де Брёйна с ожидаемыми символами в редактор с теми же настройками шрифта, что и у вашего входного изображения (тот же размер текста, похожий шрифт, те же цвета).
  • Сделайте скриншот последовательности.
  • Поместите этот скриншот в папку типа images/searchimages/.
  • Запустите Depix с флагом -s, установленным на местоположение этого скриншота.

Создание пикселизированного изображения

  • Точно вырежьте пикселизированные блоки. См. testimages для примеров.
  • Он пытается обнаружить блоки, но не делает это идеально. Поиграйте со скриптом tool_show_boxes.py и различными вырезками, если ваши блоки не обнаруживаются должным образом.

Алгоритм

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

Для некоторых пикселизированных изображений Depix удаётся найти результаты с одним совпадением. Предполагается, что они правильные. Затем совпадения окружающих многоэлементных блоков сравниваются, чтобы быть геометрически на том же расстоянии, что и в пикселизированном изображении. Совпадения также считаются правильными. Этот процесс повторяется несколько раз.

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

Известные ограничения

  • Алгоритм сопоставляет целые границы блоков. В результате он предполагает, что для всех отображаемых символов (как в последовательности де Брёйна, так и в пикселизированном изображении) текст... Позиционирование происходит на уровне пикселей. Однако некоторые современные растеризаторы текста позиционируют текст с точностью до субпикселей (http://agg.sourceforge.net/antigrain.com/research/font_rasterization/).

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

  • Этот подход не работает, если выполняется дополнительное сжатие изображения, потому что оно искажает цвета блока.

Будущее развитие

  • Реализовать больше функций фильтрации. Создать больше усредняющих фильтров, которые работают так же, как некоторые популярные редакторы.

  • Создать новый инструмент, использующий HMM. После создания этой программы кто-то указал мне на исследовательский документ от 2016 года, где группе исследователей удалось создать аналогичный инструмент. Их инструмент имеет лучшую точность и работает со многими различными шрифтами. Хотя их исходный код не является общедоступным, существует реализация с открытым исходным кодом в DepixHMM (https://github.com/JonasSchatz/DepixHMM).

Редактировать 16 февраля 22: Дэн Петро (https://bishopfox.com/authors/dan-petro) создал инструмент UnRedacter (описание (https://bishopfox.com/blog/unredacter-tool-never-pixelation), источник (https://github.com/BishopFox/unredacter)), чтобы решить задачу (https://labs.jumpsec.com/can-depix-deobfuscate-your-data/), которая была создана в ответ на Depix!

Тем не менее, всем, кто увлечён таким типом депикселизации, предлагается реализовать свою собственную версию на основе HMM и поделиться ею.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Python
CC-BY-4.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors_trending-Depix.git
git@api.gitlife.ru:oschina-mirror/mirrors_trending-Depix.git
oschina-mirror
mirrors_trending-Depix
mirrors_trending-Depix
main