Привет, Хабр! Устройтесь поудобнее и заварите себе чаю, потому что пишу немного растянуто и через правое ухо.
Итак, вы готовы? Отлично, тогда приступим.
ВНИМАНИЕ! Информация, описанная ниже, написана исключительно в исследовательских целях и не предназначена для использования в личных целях! Я начну с некоторой предыстории.
А именно, с разработкой сетевого накопителя, сектора которого расположены в облаке.
Суть этой технологии позволяла превратить несколько аккаунтов (ну около 100 или 1к аккаунтов) одного и того же Яндекс.
Диска по 10 Гб каждый (может меняться в момент чтения) в один большой диск, скажем 10 Тб.
Здесь.
Итак, пару лет назад я начал разработку этой программы (программу я написал, но об этом в другой статье) и встал вопрос — как ввести YaCaptcha. Вот некоторые примеры:
Оказывается я посмотрел на эту капчу, немного погуглил и думаю — надо использовать TensorFlow, а потом перенести в FANN. Я, конечно, немного расстроилась, но делать было нечего.
Давай, думаю, скачаю пока несколько картинок (~100к), чтобы потом нейронки потренировать, но пока скачиваю, запомню U-net сегментацию.
Ну я набросал пару строчек кода в Delphi + Synapase, запустил и пошёл в гугл по поводу нейрона.
За время поиска, надо сказать, скачалось до.
многого, в общем.
И вот здесь начинается веселье.
Зашёл в папку с картинками и увидел - одни повторы! Да-да, было много повторяющихся картинок.
Ну, думаю, так не получится, и я скачал первую попавшуюся программу для удаления одинаковых файлов (вроде бы, если память не изменяет, клон-шпион ).
Я завел его и упал на плиту спать.
Сегодня утром посмотрел статистику и задумался: из 100к изображений удалено 76к дублей, и они не просто похожи - они идентичны на 100%! Что это значит, спросите вы? Я сейчас объясню.
Если взять нейрон, то где-то можно получить ~18% распознавания, как пишет наш друг (ну мне кажется при желании можно и до 45-50% выжать).
Но даже если и так, не будем забывать, сколько возни с такими методами (базы данных нужно создавать, нужно вводить вручную.
много капчи, после этого еще нужно все систематизировать и ждать, пока все придет вместе) и сколько места это займет, и времени на реализацию, также я не могу сказать, насколько замечательной будет программа.
Можно ли как-то пойти другим путем? - ты спрашиваешь.
И тут я предлагаю посчитать - у нас 100к изображений, из них 76к повторы, т.е.
если мы заполним базу данных этих изображений (например, возьмем хэш суммы), то получим процент распознавания аж 76 %, что выше, чем у нейрона, а вес базы данных примерно такой же (если не меньше), как у таблицы весов для TensorFlow. При этом этот метод будет работать везде и не требует кучи библиотек.
Мы понимаем, что Яндекс сильно облажался, создав так мало вариантов капчи.
И благодаря этому можно написать ту программу, о которой я писал выше.
Разве это не явная уязвимость системы? Или вы думаете, что более 100 ТБ места на жестком диске — это дешево? Спасибо за просмотр! Использованная информация:
- Статья о YaCaptcha
- Статья в U-net (рус.
)
- Статья на U-net (англ)
- Распознавание некоторых современных CAPTCHA Особая благодарность авторам этих статей за их труд!
-
Как Выбрать Следующий Сотовый Телефон
19 Oct, 24 -
Один Человек, Два Блога: Почему Бы И Нет?
19 Oct, 24 -
Проекту Нужна Пирамида Или Проектирование
19 Oct, 24 -
Доклады О Zend Framework На Phpconf 2009
19 Oct, 24