Записи по тегу: алгоритмы

Распознавание KCaptсha

13 комментариев

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

Когда то давным-давно (наверное полгода-год назад) я обещал опубликовать эту статью. И вот наконец — свершилось! Я ее публикую :)

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

Так kcaptcha — довольно известная реализация капчи на PHP, гуглится на первой странице по запросу «капча», и выглядит следующим образом:

2

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

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

Содержание

Введение
1) Приведение к черно белому виду
2) Выделение фрагмента с кодом
3) Предварительная обработка
4) Разбиение картинки на фрагменты
5) Поиск ключевых узлов
6) Сравнение с базой масок
Заключение

Итак, поехали… (далее очень много букаф и картинок)

Читать далее →

Проектирование… А нужно ли?

2 комментария

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

Ладно. От слов к делу. На днях пришлось (ну или не совсем пришлось, скорее захотелось) писать программу десктопную для диагностики автомобилей через интерфейс OBD-2, вообщем это тонкости, и к делу отношения не имеет. Довольно сложные алгоритмы, да и учитывая то что прикладные программы я последний раз разрабатывал лет пять-семь назад, то это вообщем то было довольно таки сложно. Читать далее →

Интеллектуальное распознавание капчей

13 комментариев

Сегодня мне в голову пришла замечательная и в тоже время простая идея, как можно сделать систему которая сможет самообучатся и распознавать капчи со стопроцентным результатом. Но для начала картинка в тему:

Так что имейте ввиду, я не врал когда говорил что любую капчу можно обойти :D

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

База мобильных операторов всего мира

14 комментариев

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

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

Конечно формат немного не тот что нужен, да и для прямого скачивания ее нигде нет. Пришлось написать парсер и спарсить все данные с html страниц напрямую. Под катом архив с базой, примером и описанием того как определять оператора по номеру.
Читать далее →

Сортировка многомерных массивов по ключу на PHP

35 комментариев

Практически перед каждым PHP-программистом становится задача отсортировать многомерный массив. К примеру вот такой вот:

$data=array(
	array('text'=>'str1', 'year'=>'2010', 'author'=>10),
	array('text'=>'str2', 'year'=>'2011', 'author'=>10),
	array('text'=>'str3', 'year'=>'2009', 'author'=>20),
	array('text'=>'str4', 'year'=>'2010', 'author'=>30),
	array('text'=>'str5', 'year'=>'2010', 'author'=>20),
	array('text'=>'str6', 'year'=>'2011', 'author'=>10),
	array('text'=>'str7', 'year'=>'2011', 'author'=>20),
	array('text'=>'str8', 'year'=>'2009', 'author'=>20),
);

По, допустим, ключу year, как же сделать это грамотно?

Читать далее →

Автоматическое распознавание KeyCaptcha

64 комментария

Вот мое видео демонстрирующее процесс автоматического распознавания капчи KeyCaptcha

http://www.youtube.com/watch?v=3BCJkLph34s

Как видите у меня получилось взломать KeyCAPTCHA. Как же это реализовано? Читать далее →

Оперируем капчу на примере

66 комментариев

Здравствуйте!

В этой статье, пойдет речь, о еще нескольких приемах распознавания captcha защиты. Эти приемы я буду демонстрировать на подопытной капче. В качестве подопытной я выбрал капчу некоего Rafontes на которую я набрел когда искал материалы для предыдущей статьи Анализ алгоритмов генерации CAPTCHA.

Пример сгенерированной капчи:

Фон мне пришлось использовать другой, так как автор не выложил оригинальный (или я не нашел), но это не повлияет на результат.
Читать далее →

Анализ алгоритмов генерации CAPTCHA

20 комментариев

Введение

Эта статья выходит как продолжение статьи Какой должна быть капча?

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

Естественно вы должны давать себе отчет в том для чего вы разрабатываете защиту от спам ботов на своем сайте. То есть конкретно от чего вы хотите защитится? Вариантов два:

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

2) От целенаправленного взлома капчи. Это когда кто то садится писать программу-анализатор целенаправленно под вашу защиту, учитывая все особенности генерации вашей капчи.

Защищаясь от случайных спам ботов достаточно будет реализовать какую нибудь простенькую защиту на JS без картинки. Или если вы таки решились на CAPTCHA то достаточно будет очень простой капчи.

А вот от целенаправленного взлома вас не спасет ни один алгоритм. Тут скорее вопрос в том сколько ресурсов готов потратить взломщик на вашу защиту. Если ему понадобится для этого нанять десяток программистов, а также арендовать пару десятков серверов, то я думаю он откажется от этой затеи.
Читать далее →

Какой должна быть капча?

13 комментариев

Сейчас можно заметить что капчу используют везде, где надо и где не надо. Да и, к сожалению, не всегда капчу делают «правильной». Для начала что такое капча. CAPTCHA — разновидность теста Тьюринга.

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

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

Вообщем как выглядит обычная капча думаю знают все. Но вот есть одна беда. Очень часто разработчики задумываются только об одной проблеме — «как защитить свой сайт от спама». Но ввод этой защиты на своем сайте добавляет и другую проблему. В данной статье я расскажу вам о золотом правиле капчи, которое я вывел. А также о том какой должна быть captcha. Читать далее →

Множественные формы слов (PHP Класс)

5 комментариев

Все наверное замечали как на многих сайтах встречаются нелепые предложения в которых указывается число неких вещей. А нелепые потому что в них обычно не согласуется форма слова с их количеством. Пример:

  • В вашей корзине 2 заказов. На сумму 121 рублей.
  • Запись имеет 3 комментариев
  • На сайте 32 человек

Вообщем «Кто стучится в дверь моя, видишь дома нет никто, приходи ко мне вчера, будем съели пирожки». Что же делать и как это исправить?

На самом деле ничего сложного нету, и можно научить наш сайт говорить на вполне русском языке.
Читать далее →