[Способ]Распознавание простой капчи

  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

VladikSk

Пользователь

VladikSk

Пользователь
1 Июл 2016
121
76
Копался в своих файлах и обнаружил старый проект, созданный на волне популярности статей про разгадывание капчи на хабре. А конкретно вот
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
статьей. Чем мне понравился алгоритм, так это тем, что не надо никаких нейросетей, которые не гарантируют 100% результат. А с этим алгоритмом распознавание получалось 100%.

Для теста был выбран один популярный закрытый бложик друзей и его тогдашняя капча (сейчас там стандартная гуглокапча). Первым делом нужно было очистить капчу от мусора и перевести в черно-белый вид

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

Я не стал использовать алгоритм с разделением по гистограмме из хабростатьи т.к. буквы капчи плавают по высоте и случайным поворачиваются. Как настоящий лентяй я взял пакет OpenCV и поручил ему определять контуры букв:


Код:
  gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
    gray = cv2.GaussianBlur(gray,(5,5),0)
    contours,hierarchy = cv2.findContours(gray,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
    letters = []
    for cnt in contours:
        if cv2.contourArea(cnt)>50:
           [x,y,w,h] = cv2.boundingRect(cnt)
           if h>15:
              letters.append((x,y,x+w,y+h))
Насохранял вырезанных букв (примерно по сотне каждой буквы), раскидал их по папкам.



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

От лайка не откажусь ))
 

AnGel

Администратор
Команда форума

AnGel

Администратор
Команда форума
27 Авг 2015
3,411
2,025
turissssst, на хабре посмотри еще. Вроде оттуда статья
 
  • Лайк
Reactions: turissssst

О нас

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

    Dark-Time 2015 - 2022

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя