破解密码时可能遇到的几种情况
① 已知密码字符,破排序
② 已知密码位数,破字符
③ 已知密码类型,破字位
④ 已知部分密码,破未知
⑤ 啥都不知道,盲破,玩完
⑥ 已知位数、字符、类型、部分密码中的几个,已知越多破解越易
① 已知密码字符,破排序
python破解字母已知但大小写未知密码
python穷举已知字符串中某个或多个字符为大写的所有情况,并把生成的所有结果写入result.txt
def generate_uppercase_combinations(s, index=0, current='', output_file='result.txt'):
if index == len(s):
with open(output_file, 'a') as file:
file.write(current + '\n')
return
generate_uppercase_combinations(s, index + 1, current + s[index], output_file)
if s[index].isalpha() and s[index].islower():
generate_uppercase_combinations(s, index + 1, current + s[index].upper(), output_file)
# 测试代码
s = "abc"
with open('result.txt', 'w') as file:
file.write('')
generate_uppercase_combinations(s)
- - - -
后续 python密码筛查和选择
④ 已知部分密码
用于排除,减少可能的密码
在函数中添加一个条件来检查当前字符串是否以’C’结尾,如果是,则不将其写入到文件中。
# 跳过末尾为'C'的情况
def generate_uppercase_combinations(s, index=0, current='', output_file='result.txt'):
if index == len(s):
if current[-1] != 'C': # 检查末尾是否为'C'
with open(output_file, 'a') as file:
file.write(current + '\n')
return
generate_uppercase_combinations(s, index + 1, current + s[index], output_file)
if s[index].isalpha() and s[index].islower():
generate_uppercase_combinations(s, index + 1, current + s[index].upper(), output_file)
# 测试代码
s = "abc"
with open('result.txt', 'w') as file:
file.write('')
generate_uppercase_combinations(s)
s="abcdefgh"已知第3-5位为cde,排除非cde的情况;已知第1-4位不是abdC,排除是abcd的情况;已知第第7-8位是gH,排除非gH的情况。
def generate_uppercase_combinations(s, index=0, current='', output_file='result.txt'):
if index == len(s):
if current[2:5] == 'cde' and current[0:4] != 'abcd' and current[6:8] == 'gH': # 添加条件限制
with open(output_file, 'a') as file:
file.write(current + '\n')
return
generate_uppercase_combinations(s, index + 1, current + s[index], output_file)
if s[index].isalpha() and s[index].islower():
generate_uppercase_combinations(s, index + 1, current + s[index].upper(), output_file)
# 测试代码
s = "abcdefgh"
with open('result.txt', 'w') as file:
file.write('')
generate_uppercase_combinations(s)
在Python中,字符串的索引是从0开始的,current[-1]
表示字符串current
的末尾位。
因此,在上面代码中:
current[-1]
表示current
的末尾位。current[7]
表示current
的第8位的子字符串。current[2:5]
表示索引2-4,即current
的第3位到第5位的子字符串。current[0:4]
表示索引0-3,即current
的第1位到第4位的子字符串。current[6:8]
表示索引6-7,即current
的第7位到第8位的子字符串。
第n位加入特殊符号
. + whitespace etc.
某位有一特殊字符,直接在上述代码的基础上在字符串s相应位置加特殊字符就好了,例如:
def generate_uppercase_combinations(s, index=0, current='', output_file='result.txt'):
if index == len(s):
with open(output_file, 'a') as file:
file.write(current + '\n')
return
generate_uppercase_combinations(s, index + 1, current + s[index], output_file)
if s[index].isalpha() and s[index].islower():
generate_uppercase_combinations(s, index + 1, current + s[index].upper(), output_file)
# 测试代码
s = "a b.c"
with open('result.txt', 'w') as file:
file.write('')
generate_uppercase_combinations(s)
将全部行的某几位替换为另几位,同特殊字符。
② 已知密码位数,破字符
python穷举已知位数n=3,每位密码位0-9数字或者字母a,b,c的所有情况,并把生成的所有结果写入result.txt
import itertools
# 定义可能的字符集
characters = '0123456789abc'
# 生成所有可能的密码组合
combinations = itertools.product(characters, repeat=3)
# 将结果写入文件
with open('result.txt', 'w') as file:
for combination in combinations:
password = ''.join(combination)
file.write(password + '\n')
③ 已知密码类型,破字位
已知是数字型密码,位数未知假设为4位以内。
python穷举已知位数0<n<5,每位密码位0-9数字的所有情况,并将结果写入到 result.txt文件中
import itertools
# 定义可能的字符集
characters = '0123456789'
# 生成所有可能的密码组合
with open('result.txt', 'w') as file:
for length in range(1, 5):
combinations = itertools.product(characters, repeat=length)
for combination in combinations:
password = ''.join(combination)
file.write(password + '\n')
出现非数字,此时加字母
python穷举已知位数0<n<3,每位密码位0-9数字或者a-z字母的所有情况,并将结果写入到 result.txt文件中
只需要更新字符集和位数范围
import itertools
# 定义可能的字符集
characters = '0123456789abcdefghijklmnopqrstuvwxyz'
# 生成所有可能的密码组合
with open('result.txt', 'w') as file:
for length in range(1, 3):
combinations = itertools.product(characters, repeat=length)
for combination in combinations:
password = ''.join(combination)
file.write(password + '\n')
出现非字母非数,此时加中文字符串 仍旧更新字符集和位数范围
历史密码规律及可能出现的排列组合
- - - -
密码位数太多了,只能先排除一部分再慢慢猜测😿
⑤ 密码未知
啥都不知道/记不清了,毁灭吧,26字母+10数字+特殊符号+可能出现的大概率中文字符,更新字符集和位数范围 枚举所有可能排列
import itertools
# 定义可能的字符集
characters = '0123456789abcdefghijklmnopqrstuvwxyz .,-·>?<+/#@!~$%^&*():啊我是'
# 生成所有可能的密码组合
with open('result.txt', 'w') as file:
for length in range(1, 3):
combinations = itertools.product(characters, repeat=length)
for combination in combinations:
password = ''.join(combination)
file.write(password + '\n')
此时可能就需要出现tkinter自动输入破解了 or 自动精灵/鼠标精灵
密码记得备份啊,太难追回了,10位数以上的强密码,忘记了让我去猜,我看得懂密码提示也破不了啊😿
相关 Python解压zip