Форум в топку f0gg0t (f0gg0t@gmail.ru) Хакер, номер #088, стр. 088-108-3 5)сравнить в процентном отношении похожесть цифры на эталон Определить границы – это значит обрезать все лишние места, но из-за того, что наши цифры всегда стоят на одних и тех же местах, то для нас это скорее не вынужденная необходимость, а один шаг к удобству. Для того чтобы определить процент похожести, нужно сравнивать цвета эталона и цифры. Либо они равны, либо нет, другого не дано, поэтому эталоны и уже готовый к анализу рисунок должны состоять из двух цветов, обычно черного и белого, но мне вдруг захотелось, чтобы он был а-ля мороженое с томатным соком, и я сделал их красными. Определять нужные нам для распознавания пиксели, без фона и помех нужно по диапазону RGB. Пиксель с самыми максимальными цветовыми показателями был RGB(44,44,44), поэтому за точку отсчета я принял именно его. Далее нужно было проверить каждый пиксель на «близость к черному» - и вот перед нами красно-белый вариант. Активные зоны есть не что иное, как положение потенциальных цифр на картинке, нам не придется рыскать по картинке в их поиске, так как цифры на IPB'шных пикчах не меняют своего местоположения во время генерации. Мы знаем размер и координаты начала, значит, можно исследовать конкретные зоны. 4 момент – собственно, самое определение цифр. Начинаем с первой активной зоны и двойным циклом сравниваем каждую цифру с эталоном. Получается 4 цикла: 1)смена активных зон 2)смена эталонов 3)анализируем строку 4)анализируем пиксель Записываем в массив количество совпавших пикселей, сравниваем. наибольший элемент массива и есть наша искомая цифра. Далее передаем серверу данные о картинке вместе с зашифрованным числом. Готово. Миссия выполнена. Если кто-то решит взяться за альтернативные картинки, использующиеся в IPB, то забудьте про метод, о котором поведал вам я. Там все намного проще и без явно выраженных болезней заднего прохода. Эталонами будут служить не картинки, а результат какой-нибудь хэш-функции, вроде md5 или ord(str[1])+ord(str[2]). Дальше нужно просто скачать картинки и сравнить их хэши с эталонными - это, на мой взгляд, самый простой способ разгадывания статичных картинок. [enjoy] Подобные программы делать совсем несложно. Однажды, написав основу для брута/флудера/реггера, можно использовать ее для любых подобного рода приложений. Главное здесь - изучить работу данного сервиса: за что отвечают его параметры, какие из них переменные, какие константы. Лично я для анализа использую MiniBrowser, он позволяет смотреть хидеры http-запросов, поля веб-форм в момент отправки, а также посылать get- и post-запросы - все в одном окне. На диске вместе с сорцами ищи последнюю его версию. Весь кодинг софта, эксплуатирующего веб-приложения, сводится к изучению сервиса - посылке/получению данных и парсингу ответа. Если грамотно пользоваться такими вещами, то можно многое натворить: при массовой регистрации или создании топиков форумы нередко уходят в даун из-за обильного количества подключений к sql-базе. Флудер, описанный в этой статье, будет работать только лишь для IPB 2* и более. Добавить поддержку первой версии проще простого. Единственным отличием первой версии от второй является количество ключей: post_key в первой версии нет, а реггер будет работать для второй версии и с определенными картинками, что при наличии прямых рук легко компенсируется. |