Подтвердить что ты не робот

Разрушение CAPTCHA за благородную цель

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

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

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

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

Несколько примечаний:

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

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

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

4b9b3361

Ответ 1

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

  • Узнайте, где находятся интересные части
  • Разделить текст на отдельные буквы
  • Распознавать буквы

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

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

Ответ 2

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

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

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

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

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

  • Очистите изображение.
  • Определите местоположение букв.
  • Для каждой буквы 3a. Определите кривую буквы, проверив левую сторону. 3b. Сделайте наложение всех возможных букв/цифр, чтобы найти ту, которая покрывает ее лучше всего. (Это скорее всего письмо.)
  • Как только вы нашли слово, выполните проверку словаря, чтобы убедиться, что это настоящее слово. (Если CAPTCHA не использует реальные слова.)

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

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


Поставив этот ответ больше, но в ответ на один из комментариев:

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

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

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


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

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

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

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

Ответ 5

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