Взлом капчи для благородной цели

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

Существует несколько решений, которые используют людей для решения CAPTCHA от имени пользователя, таких как WebVisium и Solona, но они зависят от наличия операторов-добровольцев (например, у Solona, ​​очевидно, есть только один добровольец, так что вы должны надеяться, что он просыпается, когда вы хотите помочь).

Мне приходит в голову, что объем решений CAPTCHA, необходимых слепым людям, очень низок - я бы предположил менее нескольких сотен в день в такой густонаселенной стране, как Великобритания. Это означает, что в отличие от плохих людей, которые хотят выполнить действие много раз за короткий период, служба помощи CAPTCHA для слепых может позволить себе выделять значительные вычислительные ресурсы - например, облако компьютеров в Amazon EC2 - для идентификации представленного текст.

Мой вопрос заключается в следующем: если вы не очень заботитесь о скорости, и у вас есть много доступных компьютеров, существуют ли алгоритмы, которые позволяют вам решать CAPTCHA с искажением текста, которые распространены сегодня, например, используемые reCaptcha? Или эти проблемы действительно неразрешимы даже при большом количестве ресурсов и времени?

Несколько заметок:

  1. На данный момент мой вопрос носит чисто теоретический характер, но, очевидно, что любой такой службе придется тщательно контролировать доступ, чтобы не допустить спамеров. Возможно, только зарегистрированным слепым людям будет разрешено использовать его.

  2. Мне известно, что старый Yahoo CAPTCHA был сломан несколько лет назад с использованием алгоритма, который запускается за считанные секунды на одном компьютере. Я спрашиваю, можно ли сломать современные капчи, возможно, медленнее и с большим объемом ресурсов.

  3. Мне известно, что появляются некоторые новые типы CAPTCHA, которые просят пользователей идентифицировать котят или ориентировать изображение. Они еще не получили широкого распространения, поэтому сейчас я просто спрашиваю об искажении текста.

5 ответов

Решение

В основном решение искажения текста CAPTCHA состоит из трех отдельных этапов:

  1. Узнайте, где интересные части
  2. Разбить текст на отдельные буквы
  3. Распознать буквы

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

Интересным сайтом для изучения того, как CAPTCHA ломаются, является исследовательский отдел OCR.

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

Спаммеры действительно нашли очень эффективный способ сломать более популярную капчу. Они просто нанимают дешевых рабочих, чтобы прочитать их, в обмен на несколько центов за рабочий счет. В результате возникла небольшая индустрия, разбивающая CAPTCHA для создания миллионов учетных записей, которые затем можно будет использовать для рассылки спама. По сравнению с суммой, которую получают спамеры, затраты практически отсутствуют. Аналогичное решение может быть использовано слепыми / глухими людьми, которые отправят изображение CAPTCHA какому-нибудь дешевому рабочему в Китае или где-либо еще, где они ответят правильными словами, и слепой / глухой человек сможет продолжить. К сожалению, слепые люди нуждаются в этой услуге только несколько раз, в то время как спаммеры нуждаются в непрерывном потоке, поэтому эти рабочие предпочтут вместо этого работать на спамеров. (Оплата лучше.) Тем не менее, лучшим решением было бы отправить CAPTCHA какому-либо другу, позволить ему прочитать и / или расшифровать его и вернуть ответ.

Стиль Re CAPTCHA также считывает слова. Простое приложение для распознавания речи может распознавать все, что говорится, хотя распознавание речи все еще нуждается в большей оптимизации. Тем не менее, вы можете захотеть работать с этой точки зрения, заставляя приложение прослушивать звуковой байт.

Когда можно сломать капчу, они просто подумают о лучших методах, подобных капче. Методы оптического распознавания текста все еще совершенствуются, поэтому будет сделано больше работы, чтобы сделать CAPTCHA сложнее. То есть до тех пор, пока распознавание слов не станет так хорошо, как человеческий глаз...

Алгоритм может быть создан, хотя и медленно. С 26 строчными и 26 прописными буквами и 10 цифрами не должно быть слишком сложно придумать алгоритм. Однако при использовании шрифтов с засечками и без засечек количество комбинаций необходимо удвоить. Тем не менее, если вы попытаетесь изогнуть все буквы так же, как буквы в CAPTCHA, вы сможете обнаружить букву, которая больше всего покрывается буквой CAPTCHA. И это был бы наиболее вероятный кандидат. Вам по-прежнему нужно очищать линии, грязь и другие артефакты с изображения, которое человеческому глазу легче распознать, чем компьютеру. Вам понадобятся следующие шаги:

  1. Очистить изображение.
  2. Определите местоположение букв.
  3. За каждую букву 3а. Определите кривую буквы, проверив левую сторону. 3b. Сделайте наложение каждой возможной буквы / цифры, чтобы найти ту, которая покрывает ее лучше всего. (Это наиболее вероятное письмо.)
  4. Найдя слово, проверьте словарь, чтобы убедиться, что это настоящее слово. (Если капча не использует настоящие слова.)

Даже несмотря на то, что они могут скручивать буквы в CAPTCHA, должна быть возможность обнаружить вращение скручивания, которое они использовали, просто посмотрев на левую сторону каждой буквы, а затем попытавшись применить одну и ту же кривую к каждой букве. (52 комбинации, плюс 10 цифр, если также используются цифры.) По сути, вы пытаетесь поставить рамку вокруг каждой буквы, а затем проверить, какая буква будет содержать наименьшее количество пробелов. Это наиболее вероятное письмо.

Основной причиной, по которой это не часто используется для распознавания текста, является в основном необходимость в скорости. Шаг 3a / b имеет тенденцию быть медленным, особенно если вы должны принять во внимание стиль шрифта.


Увеличение этого ответа, но в ответ на один из комментариев:

Есть несколько способов очистки изображения. Вам потребуется некоторая цветовая фильтрация, шумоподавление и алгоритм, способный распознавать шумные линии на изображении. Слайд-шоу DEFCON, на которое вы указали, демонстрирует несколько простых методов, чтобы отфильтровать часть шума. Это показывает, что базовый инструмент для обработки изображений уже может сделать изображение намного более четким для машинного чтения. Простое размытие убирает случайные точки и тонкие линии, в то время как цветные фильтры отфильтровывают зашумленные цвета. Следующим шагом будет попытка поставить рамку вокруг каждой буквы в CAPTCHA, надеясь, что система сможет распознать их местоположение. Я не знаю никаких практических алгоритмов для этого, но должны быть способы их распознать. Есть программное обеспечение, которое может создавать векторные изображения из растровых изображений, поэтому должно быть программное обеспечение, способное вычислять квадрат вокруг буквы. Вполне вероятно, что этот прямоугольник не будет иметь прямоугольных углов, поэтому вам придется исказить все 52 буквы, чтобы соответствовать одному и тому же прямоугольнику. Курсив или полужирный не должны иметь большого значения, так как эти стили являются лишь дополнительными искажениями. Однако, с засечками или без засечек все же имеет значение. Шрифты с засечками, как правило, имеют несколько шипов и украшений. К счастью, существуют алгоритмы, которые могут преобразовать прямоугольник в любую другую фигуру с четырьмя углами.

Обычные приложения OCR будут предполагать, что буквы в основном прямые, и просто проверят несколько горячих точек, чтобы найти совпадение. Таким образом, они иногда ошибаются из-за шума. Чтобы взломать CAPTCHA, вам понадобится более чувствительное совпадение, предпочтительно "XOR-ing" для изображения буквы CAPTCHA с изображением одной из 52 букв, а затем подсчет количества черных и белых пятен для вычисления соотношения. Предполагая, что white = 1 и black = 0, результат XOR должен быть почти черным для лучшего соответствия.

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


Еще один комментарий, больше текста.:-)

Сегментация была бы проблемой, но это не невозможно решить. Это просто чрезвычайно сложно. Но когда вы очистите изображение, должно быть возможно рассчитать две строки. Одна строка, которая касается нижней части каждой буквы, и вторая строка, которая касается верхней части. Тем не менее, хорошие CAPTCHA больше не будут помещать буквы в одни и те же строки, но те не очень хорошие могут быть взломаны, просто следуя этим строкам. (Угадайте? Re CAPTCHA помещает буквы между двумя строками!) С двумя строками вы знаете, что первая буква будет начинаться слева, поэтому вы можете попробовать наложить все 52 варианта там, пока не найдете совпадение. Когда вы найдете один, перейдите вправо для второго. И дальше, пока вы не прочитаете все письма. С двумя линиями, чтобы вести вас, вам не нужна полная коробка.

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

Тем не менее, разработка правильного алгоритма для вычисления всего этого - это слишком много для моих плохих математических навыков. Вам понадобится математик-эксперт, чтобы взломать этот алгоритм.

Мой ответ на ваш вопрос "действительно ли эти проблемы неразрешимы даже при большом количестве ресурсов и времени?" стоит отметить, что это и есть причина, по которой работают капчи.

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

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

Введение CAPTCHA, безусловно, сделало Интернет менее доступным для слабовидящих, и я согласен с вами, назвав это серьезной проблемой, которая заслуживает большего внимания и беспокойства. Однако, хотя CAPTCHA можно и было непоследовательно обойдено на популярных веб-сайтах, я не думаю, что это жизнеспособное долгосрочное решение для тех, кто в ней нуждается. Действительно, день, когда варианты CAPTCHA, представленные в настоящее время на таких сайтах, как Facebook, Google, MySpace и т. Д., Могут быть надежно и последовательно нарушены, - это день, когда они устареют и будут заброшены либо для более сильных вариантов того же самого, либо для совершенно нового решения (как вы Подразумевается, что отличительной чертой кошек от собак является популярная альтернативная тенденция).

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

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

Что касается технического аспекта вашего вопроса, я не думаю, что наличие дополнительной вычислительной мощности само по себе позволит вам надежно и последовательно сломать CAPTCHA. Спама очень много, и вы можете быть уверены, что сомнительные SEO-компании и спаммеры имеют в своем распоряжении огромное количество серверов. Как отметил Йоханнес Рессел, если вы хотите узнать больше о том, как это делается и в чем заключается техническая трудность, изучите Оптическое распознавание символов (OCR) и посмотрите на широкое разнообразие искажений цифр / букв, которые встречаются на сайтах с высоким трафиком.

В этом связанном вопросе SO есть несколько хороших идей, в том числе выступление DEFCON, в котором утверждается, что использование нескольких OCR и голосования нарушают многие простые CAPTCHA. Это предполагает метод решения проблемы: распределите проблему по нескольким серверам, на каждом из которых параллельно запускается один или несколько инструментов OCR, соберите результаты и получите самый популярный ответ. Комментарии приветствуются.

Другие вопросы по тегам