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

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

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

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

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

несколько замечаний:

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

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

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

5 ответов


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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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


Еще комментарий, еще текст. :-)

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

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

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


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

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

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


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

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

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

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


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