Pull to refresh

Comments 34

Интересная технология. Было такое ощущение, что вся эта пикселизация имеет уязвимость. Так и оказалось. Так что только хардкор — только солид колор.
Главное не сохранять в PSD.

Я даже в *.bmp с заливкой отправляю не исходник, а скриншот с него )

Сфотографировать на телефон сразу, чего уж мелочиться?)

После того как мне самому пару раз такое присылали, мне такое совесть не позволит сделать.
Особенно после того как, как раз прислали пароль с запятой в конце, которая на фото разпикселизировалась до незамечаемого состояния.
Школьные учителя присылают детям ссылки в виде фотографии. Упорно их пытаемся к QR приучить хотя-бы раз, нравится картинки слать :)
Главное, при сохранении не забыть перегенерировать thumbnail в EXIF и прочих метаданных.
А вообще зачем там оставлять оригинальный текст? Я бы перед пикселизацией писал бы поверх случайный набор знаков, или вообще злонамеренный, типа ссылки на сайт с эксплоитами. Как в недавней статье, что на сайтах со скриншотами при бруте последовательностей можно найти ссылки на фейковые кошельки с биткоинами.
Номер карты — 16 цифр.
6 — идентификатор банка, 1 — контрольный разряд.
Остается 9 знаков, итого 1 млрд вариантов.
Умножаем на варианты пикселизации.
Довольно дорого получается.
А если вдруг не знаем какой банк, то совсем грустно.

Не. Пикселизация локальна. Достаточно 100-1000 вариантов перебрать, чтобы определить первую цифру. Потом 100-1000 на вторую. В итоге получится не 1 млрд, а 9000. В статье это есть.

Локальна — при совпадении ширины символов и шага пикселизации.
;)
всегда локальна. Если совпадает — достаточно 10 вариантов перебрать. Если шаг закрывает 2-3 символа, то 100-1000 вариантов. Но это не криптохэш, тут нет такого, чтоб на каждую точку результата влияли все цифры номера. Всегда только несколько ближайших цифр влияют.
10 (и их следствие в 100-1000) вариантов — это идеальный случай: два цвета, выверенная геометрия, одинаковая длина и ширина символов.

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

зы
там еще ниже про субпиксели пишут.
на хабре лет десять назад была презентована отечественная программа деблюринга текста на примере номеров машин, не?
Paste a De Bruijn sequence with expected characters in an editor with the same font settings (text size, font, color, hsl).

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

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

Если у нас кроме размытой области есть не размытые — мы можем их использоваться чтобы определить(и ревертировать) искажения.
А потом запускается поиск по картинкам «Яндекса» (более продвинутый, чем Google Images). В данном случае «Яндекс» выполняет «брутфорс» лица на изображении:
О, да. Яндекс это последний поисковик, который так умеет. Гугль уже несоклько лет как намеренно испортили, Бинг тоже стал хуже. Яндекс постепенно тоже ухудшает этот поиск, но пока еще терпимо

К тому времени как Яндекс испортят, у нас будет время создать что то похожее :)

Не знаю как у вас, а у меня нет ресурсов поддерживать поисковик по изображениям.
Гхм. Я из изображений лишнюю информацию тупо удаляю — вот прямо в пейнте «выделить»-«вырезать».
Где статья на хабре, как умный интеллект там у меня пароли восстановит?
Главное — делать в пеинте.
А то был опыт — видел «отредактированные» psd…
Чуть не цитата какого-то мохнатого года на баше про подобный опыт:)

Проблема только в том, что далеко не все движки рендерящие шрифты выдают одинаковую пикселезацию. Просто потому, что позиционирование глифов может быть субпиксельным.
Например тот же Chromium рендерит буквы субпиксельно (по карйней мере на винде). Для того чтобы это проверить, достаточно написать строчку типа iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii, и посмотреть, сколько будет вариаций, между парами соседних букв.

А вот тот же виндовый GDI позиционирует буквы округляя их координаты, и там оно скорее всего сработает. В общем не так всё просто, к сожалению, ну или к счастью.
Тут вот можно более подробно почитать про хороший, качественный субпиксельный рендеринг надписей.
https://web.archive.org/web/20180921225907/http://antigrain.com/research/font_rasterization/index.html

Когда-то делал для клиента распознавание надписей с субпиксельным рендерингом — мне хватило три набора символов, сдвинутых относительно друг друга на 1/3 пикселя. Сравнивал я их в оттенках серого.
Сделал self-hosted Telegram бота для быстрого и более удобного использования описанного в статье инструмента. Бот не рассчитан на массовое использование пользователями, но идеально подходит для личного.

Исходный код: github.com/MarshalX/DepixToolBot
Для удобства библиотеку опубликовал на PyPi: pypi.org/project/depix

Чтобы использовать из терминала:
pip3 install depix
depix [-h] -p PIXELIMAGE -s SEARCHIMAGE [-o [OUTPUTIMAGE]]
Такими темпами скоро будут и файлы из хэша восстанавливать!
Я уже какое-то время назад задумывался, нельзя ли создать, например, инструменты для восстановления исходных текстов программ на основе имеющихся бинарников и использования технологий ИИ и эвристических алгоритмов, с тем чтобы раз за разом генерировались такие исходники, которые, будучи последовательно скомпилированными, всё более приближались к исходному бинарному виду — вплоть до полной их идентичности? Это же могло бы произвести революцию в реверс-инжиниринге!
Осталось узнать, каким компилятором компилировали исходники и дообучать сетку на конкретную версию.

Что ж, пойду удалять запикселенные фото, хотя вряд ли это поможет :)

Простой тест — взять часть текста debruinseq_notepad_Windows10_closeAndSpaced.png, запикселить его (онлайн pixelate-effect-image, хотя бы с коэффициентом 2) и попробовать восстановить.


У меня результат совершенно не такой хороший, как с подготовленными тестами из примеров на GitHub.

Only those users with full accounts are able to leave comments. Log in, please.