Pull to refresh

Comments 59

Надо ли говорить, что ломается это намного проще, чем обычные каптчи с шумами и прочим?
О надёжности, говорит тот скрипт, что идёт в дополнение к статье. Как показал опыт эту капчу нельзя использовать для серьёзных ресурсов. Эта статья опубликована более в образовательных целях, возможно кто возьмёться доработать это скрипт.
>>Эта статья опубликована более в образовательных целях, возможно кто возьмёться доработать это скрипт.

Ну-ну. Решили на волне отхавать рейтинга
Скриншот средней паршивости + OCR?
Я думаю это будет лишним, намного проще сломать алгоритмически, как и поступил nagato.
Если вдруг кого-то заинтересует, ASCII-капча является частью модуля CAPTCHA Pack для CMS Drupal и включает в себя множество разных шрифтов.



Использую её в течение полугода на ряде сайтов — обычные роботы, включая Хрумер, не пробивают вообще.
Так же есть Zend_Captcha_Figlet из Zend Framework
Извиняюсь, только что заметил битую ссылку.
Правильный адрес модуля — CAPTCHA Pack.
Бесполезная капча, элементарно и со сто процентной правильностью (даже с шумами и неполнотой) решается с помощью нейронной сети, если лень ваять свой перцептрон и реализовывать алгоритм обучения, можно воспользоваться матлабом например, дискретизация образа тоже происходит элементарно.
UFO just landed and posted this here
Вопрос достойный дискуссии за чаркой пива, если я правильно понимаю значение мат. капчи, что это решение какого либо выражения, то тут все зависит от сложности генерации этого уравнения и способа его представления пользователю, например, если пользователю будет дано задание 1 + 1 = ?, то довольно просто «распарсить» и решить подобное уравнение с помощью той же нейронной сети, но если мы добавим к этому элементарную операцию деления в прописном представлении, скобки, и применим какой либо фильтр для конечного изображения, то такую капчу практически невозможно будет решить.
А если добавить ещё возведение в степень, и логарифм, то тогда ещё труднее будет её ломануть… да вот только не факт, что всем реальным людям под силу пройти такую проверку. А если использовать такую капчу на коммерческих ресурсах, то сколько дохода потеряет компания из-за того, что клиентов будет отпугивать такая защита?
Да и фильтры усложняют ввод больше для настоящих людей, чем для ботов.
Вы сейчас говорите примерно в таком плане, а что если 5 символов в капче сделать 100.
s3.amazonaws.com/twitpic/photos/full/322443637.png?AWSAccessKeyId=AKIAJF3XCCKACR3QDMOA&Expires=1308160052&Signature=AYCWUTInMlfW4O78VGK%2BItr3QAw%3D
простейшая капча, простейшие действия, а попробуйте придумать рациональный способ нахождения решения7
_http://habrahabr.ru/blogs/net/121032/ Такой способ подойдёт?
Подойдет как ответ, на то что не подойдет?

Слабые стороны:
Черные символы на белом фоне.
Отсутствие шумов и других артефактов (например линий).
Символы никогда не пересекаются.
Всегда одинаковый шрифт.

То что я представил лишь пример. С динамическими фильтрами искажений, вы 100% не решите эту задачу
А к примеру добавив в любое место изображение ложное значение, например неподалеку от самого выражения зачеркнутые цифры, возможность взлома сводится к нулю
И как реальный человек определит, это линии от шума или зачёркнутые символы?
Уже не раз обсуждалось как убирать шум и различные искажения, как разнимать слипшиеся символы, вот к примеру:
_http://habrahabr.ru/blogs/image_processing/116222/

Вторая ссылка, которую я кинул, показывает — как очистить изображение от мусора, первая показывает — как обойти мат капчу.

Из всего выше сказанного можно сделать вывод о том, что все ваши манипуляции с изображением усложняют читабельность только реальному человеку, но ни как не боту.
Определить где регулярный шум, а где зачеркнутый символ, а где то что нужно пользователю для расчета для пользователя вполне реально. Я не отрицаю, что все это усложняет понимание картины для пользователя, но компромисс вполне возможно достичь.
Кстати, по приведенной вами статье, вы заметили, что в каждой из этих каптч 2 основных недостатка, которые приводят к возможности их распознавания:
1 Шум слишком контрастен по отношению к информации.
2 Искажения либо незначительны, либо статические, либо их легко выровнять определив направление искажения.
В общем я думаю об этом можно спорить бесконечно, но вывод один, мат капчи намного сложнее распознать по сравнению с обычными, хотя бы потому, что к ним нужно строить синтаксический парсер.
> мат капчи намного сложнее распознать… потому, что к
> ним нужно строить синтаксический парсер.
flex + bison и любой парсер готов за 5 минут.

Без тех «недостатков», которые названы, капча была бы вообще не читаемая.

Соглашусь только в одном, спор пора заканчивать)
математическая капча лучше защищает сайт от пользователей, чем от ботов. Любые математические вычисления реализуются на компьютере элементарно, хоть интегралы, хоть дифуры, уже не говоря про примеры типа '2+2'.
UFO just landed and posted this here
Адов бред. На медицинском форуме вводить медицинскую капчу (укажите название изображенной на картинке кости человека), чтобы вы никогда в жизни не смогли задать интересующий вас вопрос по здоровью, например?
Ну, если форум предназначен исключительно для специалистов, то почему бы и нет?
Для медиков — капча паранойя :)
Вообще наверно надо заканчивать с параноидальными наклонностями.
За 4 у.е. в день (8 часов) индиец сломает 4800 капч, достаточно любому спамеру, не говоря уже об окупаемости. Кому надо тот всегда сломает.
Наоборот надо «изобрести» капчу, которую вводить как можно удобнее и быстрее пользователю, но не роботу. Мне например нравятся капчи с виртуальной клавиатурой из символов на картинке (достаточно длиной в 5-6 символов, чтобы робот уже сошел с ума (пусть попробует с первой попытки угадать порядок из 720 вариантов, напомню с первой попытки), даже когда капча «тяжелая для человека, с кучей шумов и т.п.», ведь тогда важен порядок вводимых символов!, а имея посказку — человеку очень просто ввести именно порядок), не надо переключаться на клаву. Клик-клик клик :)
Инвайты (секретный код) закрывают путь ботам на 99%. В Случае если ресурс специализированный, сама идея кто то эти коды должен раздавать.
можно ещё полностью заполнить все поле картинки точками. при этом буквы могут быть одного цвета а фон противоположного (например, белого и черного). Если при этом сделать плавную рандомную смену цветов, чтоб в каждый момент времени часть букв были белыми на черном и наоборот, то роботу будет непонятно какие именно точки следует обрабатывать. Хотя конечно в любом случае никто не мешает боту сделать скриншот, но и на нем придется разбираться с очертаниями букв, которые попали в данный момент в оба цвета одновременно.
Так оно так и есть. Изображение состоит из 7*7*6 точек, некоторые белые, некоторые чёрные. Только главная уязвимость не в этом, а в том что в js поступает массив координат точек, поэтому проще ломать через алгоритмические вычисления.
Хм, а можно сделать несколько изображений с разными z-index, где каждое содержит только часть капчи.
посмотрите мой следующий коммент.
сперва делается скришот, потом картинка делается высококонтрастной и чернобелой, дальше распознается без проблем.
Это не вариация ASCII-капчи, не путайте.
Что такое ASCII-капча?
Понятия не имею зачем такая разветвлённая терминология. То и другое обычная figlet-капча, придуманная сто лет назад.
C шумом да, частенько ошибался, например еще S и 9
Может быть оффтопик, но… не понимаю, почему до сих пор большинство каптч ориентируется на «пользователь, давай я сейчас что-нибудь сгенерю прямо здесь, а ты скажи, что тут написано». Лучше подсовывать пользователю естественный текст. Потому что для анализа такого текста требуются достаточно сильные технологии NLP.
Как вариант — не отдавать каптчу в открытый доступ. Мы можем создать сервис на хорошем сервере, и сделать рерулярно изменяемые типы каптч. Сегодня это обычная распозновалка текстов, но просят ввести цифры в обратном порядке. Завтра название div-a с картинкой внутри каптчи сменилось. Разработчики ботов тихо ругаются матом. Послезавтра показывается одна из первых картинок в гугл-поиске по запросу «улыбка»/«мяч»/«птица» а пользователю предлагается выбрать что именно нарисовано на картинке пару раз к ряду. У разработчика антикаптчи — бессонная ночь. А на следующей неделе мы подключаем сообщество и люди генерят вопросы к текстам с правильными ответами, которые желательно модерируются. Разработчик бота вешается. Чем не стартап? Если менять принципы построения с некоторой регулярностью, подключить живых людей к составлению вопросов и делать все через централизованый сервер — хрен кто что расшифрует.
Использование естественного языка приведёт к тому, что на сайт путь заказан людям, не говорящим на языке разработчиков сайта.
Для примера — попробуйте зарегистрироваться на renren.com. Вы элементарно даже капчу не сможете вбить, поскольку она в виде иероглифов. А представьте, что вам вопрос задали на китайском. Или на английском. Или на португальском.
Так можно позволить выбрать язык, или даже его автоматически определить — и брать текст уже из локальной базы (если делать международный сервис для каптчи). А с другой стороны — мне renren.com нафиг не нужен хотя-бы потому, что он весь не на моем языке.
А миллиард китайцев и не парятся, что renren не на твоём языке. Миллиард!
Пост читать невозможно. Автор, похоже, не знаком с русским языком.
Эта капча легкая даже с Вашими шумами, и ломаться будет так же с шаблонами, просто сравнивается не в лоб, а делается или, и тогда смотрим погрешность если, допустим 90% совпадают, то все ок, буква угадана.
Именно так и работает скрипт от nagato ссылка на который в конце статьи. Пробив у него ~70%.
по-моему, куда рациональнее вместо обычной капчи использовать какие-нибудь вопросы, на которые сможет ответить только человек. например, «в каком напитке больше градусов: в соке или в пиве?» и сделать так несколько вопросов, и выводить их рандомно.
Несколько? Вариантов должно быть около 10 тыс. + случайные опечатки и все равно это не будет панацеей, т.к. достаточно собрать 50% вопросов и бот с гарантией 95% будет региться.
Иными словами, любая система с конечным кол-вом вопросов взламывается на раз-два.
Думаю можно усилить каптчу, поворачивая каждую буквы по градусам
Присоединюсь ко мнению, что ближайшее будущее все же за капчами с максимальным разнообразием заданий. Чем больше видовых вариаций капчи, тем сложнее сделать универсальный алгоритм ее взлома, либо конечное количество специализированных алгоритмов. Для сервисов по типу упомянутого antigate задачу можно создавать чисто технические сложности, основываясь на том, что они ориентированы на распознавание катринок. Кроме того, это все равно выходит спамерам дороже, и, следовательно, менее привлекательно.

Основная проблема такого подхода — если сделать алгоритмическую генерацию разных видов капчи, то можно и алгоритмически варьировать методы взлома.
Кстати, вот подумалось: нам уже привычно, что при взломе капчи спамеры активно используют методы искуственного интеллекта. Так почему бы не использовать аналогичный подход при генерации капчи?

Чтобы не быть голословным: можно разработать определенный набор вариантов антиспам-задания, а так же набор метрик, оценивающих эффективность, после чего применить к ним генетический алгоритм. В качестве метрики можно использовать процент прорвавшихся спамовых сообщений, которые позже были удалены модератором. И чтобы задания не становились совсем уж несусветными, можно оценивать количество ложных срабатываний (нажатия на «не вижу картинку» или просто среднее количество попыток для успешного прохождения).

Прошу простить, если я допустил терминологическую путаницу. Не будучи специалистом в этой области, я запросто мог сказать что-нибудь математически некорректное, но, надеюсь, идею все же смог донести.
>>Прошу простить, если я допустил терминологическую путаницу. Не будучи специалистом в этой
>>области, я запросто мог сказать что-нибудь математически некорректное, но, надеюсь, идею все же
>>смог донести.

...«Боязнь потери к тёмной стороне лишним буквам тёмной стороне привести может.
Отпустить ты должен всё карму, что так потерять боишься»… ©

Мне одному тошно от кучи лишних букв и топиков про капчу? Ничего личного к Volmontovich, просто яркий типичный пример.

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

У вас в примерах CSRF уязвимость. Можно в окошко вставлять HTML теги или кавычки… Например
<script>alert('hack');</script>

или
'><script>alert('hack');</script><b att='
почитал — и пришла мысль.
1. выкладывать буквы из маленьких гифов.
2. количество гифов больше количества цветов.
3. гифами занято больше клеток, чем занято буквами.
4. заранее не известно, какие гифы — какого цвета.

то есть, например, используем 10 гифок. 5 — белые, 5 — черные.
в информации, что пришла с сервера, указаны координаты какого-то количества клеток — и какие в каждой гифки. но при этом, у нас не захардкожено — первые 5 гифок — белые, вторые 5 — черные.
нет.
гифки — динамические, генерируемые в зависимости от хеша.
то есть, на клиент приходят:
1. координаты клеточек
2. в какой клеточке какая гифка
3. хэш, по которому (хэш + номер гифки) генерится содержимое клеточки.
скрипт на клиенте получает все гифки с сервера и раскопировав их — выкладывает слово.

эм… я понятно описал идею?
Так я могу отправлять скрипту несколько, например 10, различных номеров цвета… изображения(«гифки») здесь будут лишними. Да вот только это не сильно поможет. Просто бот будет перебирать на совместимость с шаблонами не только чёрные(как сейчас), а все цвета и там где распознает 6 символов, тот и будет нужный цвет.
так тут фишка в том, что есть несколько гифок одного цвета — и заранее не известно (на клиенте) какие гифки — одинакового цвета.
то есть для программы (клиента, бота) какие-то клеточки — разные, а для глаза пользователя — одинаковые.
Да, это усложнит расшифровку на js. Но с помощью других инструментов определить цвет изображения — не проблема.
Sign up to leave a comment.

Articles