CAPTCHA был создан, чтобы избежать обнаружения машин. Он предназначен для чтения только людьми. Сделать его более читаемым для слепых/глухих людей добавляет риск того, что машины смогут понять их снова, тем самым сводя на нет их эффект.
Спамеры нашли очень эффективный способ разбить более популярный CAPTCHA. Они просто нанимают дешевых рабочих, чтобы читать их, в обмен на несколько центов за рабочий счет.В результате существует небольшая индустрия, которая нарушает работу CAPTCHA для создания миллионов учетных записей, которые затем могут использоваться для отправки большего количества спама. По сравнению с суммой, полученной спамерами, издержки практически отсутствуют. Аналогичное решение может быть использовано слепыми/глухими людьми, которые отправили бы изображение CAPTCHA некоторым дешевым рабочим в Китае или где бы они ни находились, где они ответят правильными словами, и слепой/глухой человек сможет продолжить. К сожалению, слепым людям нужна эта услуга только несколько раз, в то время как спамерам необходим непрерывный поток, поэтому эти рабочие предпочитают работать вместо спамеров. (Плата лучше.) Тем не менее, лучшим решением было бы отправить CAPTCHA другому другу, позволить им читать и/или расшифровывать его и возвращать ответ.
Стиль ReCAPTCHA также считывает слова. Простое приложение распознавания речи может распознавать все сказанное, хотя распознавание речи по-прежнему требует больших оптимизаций. Тем не менее, вы можете захотеть работать под этим углом, заставляя приложение слушать звуковой байт вместо этого.
Когда можно сломать CAPTCHA, они просто подумают о лучших методах, подобных CAPTCHA. Методы OCR все еще улучшаются, поэтому будет больше работать, чтобы сделать CAPTCHA более сложным. То есть, пока OCR не станет таким же хорошим, как человеческий глаз при распознавании слов ...
Алгоритм может быть создан, хотя и медленным. С 26 строчными и 26 прописными буквами и 10 цифрами, не должно быть слишком сложно придумать алгоритм. С шрифтами Serif и Sans-serif количество комбинаций должно быть удвоено. Тем не менее, если вы попытаетесь выровнять все буквы так же, как письмо в CAPTCHA, вы сможете обнаружить письмо, которое больше всего покрывается буквой CAPTCHA. И это был бы самый вероятный кандидат. Вам все еще нужно очистить линии, грязь и другие артефакты от изображения, которое человеческий глаз имеет меньше проблем, чем компьютер. Вам понадобятся следующие шаги:
- Очистить изображение.
- Определите места расположения букв.
- За каждое письмо 3a. Определите кривую буквы, проверив левую сторону. 3b. Сделайте наложение всех возможных букв/цифр, чтобы найти ту, которая покрывает ее лучше всего. (Это, скорее всего, письмо.)
- Как только вы нашли слово, выполните проверку словаря, чтобы убедиться, что это настоящее слово. (Если капча не использует реальные слова.)
Несмотря на то, что они могут крутить буквы в капча, это должно быть возможно обнаружить вращение твист, которую они использовали, просто посмотрев на левой стороне каждой а затем попытаться применить одну и ту же кривую к каждой букве. (52 комбинации, плюс 10 цифр, если используются цифры). В принципе, вы попытаетесь поместить коробку вокруг каждой буквы, а затем проверьте, какая буква будет содержать наименьшее количество пробелов. Это наиболее вероятное письмо.
Основная причина, по которой это не часто используется для OCR, - это в основном потребность в скорости. Шаг 3a/b имеет тенденцию быть медленным, особенно если вам нужно учитывать стиль шрифта.
Ответ получен, но для ответа на любой комментарий:
Существует несколько способов очистки изображения. Вам понадобится некоторая цветовая фильтрация, шумоподавление и алгоритм, способный распознавать шумные линии через изображение. Слайд-шоу DEFCON, на которое вы указали, показывает несколько простых приемов, позволяющих отфильтровать некоторые из шумов. Он показывает, что основной инструмент обработки изображений уже может сделать изображение намного более четким для машины для чтения. Простое размытие очистит случайные точки и тонкие линии, в то время как цветовые фильтры отфильтровывают шумные цвета.Следующим шагом было бы попытаться поместить ящик вокруг каждой буквы в CAPTCHA, надеясь, что система сможет распознать их местоположения. Я не знаю никаких практических алгоритмов для этого, но должны быть способы их распознавания. Там есть программное обеспечение, которое может создавать векторные изображения из растровых изображений, поэтому должно быть программное обеспечение, способное вычислять поле вокруг буквы. Скорее всего, у этого прямоугольника не будет прямоугольных углов, поэтому вам придется исказить все 52 буквы, чтобы они совпадали с одним и тем же полем. Курсивный или смелый не должен иметь большого значения, поскольку эти стили являются лишь дополнительными искажениями. Тем не менее, Serif или Sans-serif действительно имеют значение. У шрифтов Serif, как правило, есть еще несколько шипов и украшений. К счастью, есть алгоритмы, которые могут преобразовывать коробку в любую другую фигуру с четырьмя углами.
Обычные приложения для распознавания текста предполагают, что буквы в основном прямые и будут просто проверять несколько горячих точек, чтобы найти совпадение. Таким образом, они иногда ошибаются из-за шума. Чтобы взломать CAPTCHA, вам понадобится более чувствительное совпадение, предпочтительно «XOR-ing» изображение буквы CAPTCHA с изображением одной из 52 букв, а затем подсчет количества черно-белых точек для вычисления отношения. Предполагая, что белый = 1 и черный = 0, результат XOR должен быть почти черным для лучшего соответствия.
Я думаю, что несколько спамеров уже нашли полезные алгоритмы для взлома CAPTCHA, но для них, сохраняя эти алгоритмы в секрете, просто удерживая их в бизнесе.
Другой комментарий, больше текста. :-)
Сегментация была бы проблемой, но решить ее невозможно. Это очень сложно. Но когда вы очистили изображение, должно быть возможно рассчитать две строки. Одна строка, которая касается нижней части каждой буквы и второй строки, которая касается верхней части. Тем не менее, хорошие CAPTCHA не будут помещать буквы в одни и те же строки, но те, кто не очень хорош, могут быть потресканы, просто следуя строкам. (Guess? ReCAPTCHA помещает буквы между двумя строками!) С двумя строками вы знаете, что первая буква начнется слева, поэтому вы можете попробовать наложить все 52 возможности там, пока не найдете совпадение. Когда вы его нашли, перейдите вправо для второго. И далее, пока вы не прочтете все письма. С двумя линиями, которые помогут вам, вам не нужна полная коробка.
Письма имеют тенденцию использовать постоянное соотношение между шириной и высотой. С двумя строками вы можете рассчитать высоту полной буквы и, таким образом, получить хорошую оценку соответствующей ширины.
По-прежнему, разработка правильного алгоритма для расчета этого всего немного для моих плохих математических навыков. Вам понадобится эксперт-математик, чтобы взломать этот алгоритм.
Это на самом деле не отвечает на ваш вопрос, но вы можете быть заинтересованы в некоторых других системах ограничения скорости, которые могут быть полезны для поддержания доступности при блокировании спама большого объема, таких как HashCash. – Patonza
Спасибо, Patonza. К сожалению, пока сайты не начнут использовать альтернативы, люди с ослабленным зрением должны будут выяснить, как обойти CAPTCHA (или оставаться исключенными из части Интернета). –
некоторые спамеры теперь просто платят реального человека в случайной чужой стране, чтобы сидеть там и фактически выполнять операции CAPTCHA, то есть идентифицировать буквы/котята/ориентацию изображения/и т. Д. как вы это предотвращаете? – Jason