python破解密码·筛查和选择

破解密码时可能遇到的几种情况

① 已知密码字符,破排序
② 已知密码位数,破字符
③ 已知密码类型,破字位
④ 已知部分密码,破未知
⑤ 啥都不知道,盲破,玩完
⑥ 已知位数、字符、类型、部分密码中的几个,已知越多破解越易

① 已知密码字符,破排序

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

相关推荐

  1. 密码学】RSA破解方法汇总(PYTHON实现)

    2024-07-10 17:28:04       44 阅读
  2. C语言-破解密码

    2024-07-10 17:28:04       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 17:28:04       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 17:28:04       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 17:28:04       4 阅读
  4. Python语言-面向对象

    2024-07-10 17:28:04       5 阅读

热门阅读

  1. CSS:选择器 / 14种类型

    2024-07-10 17:28:04       10 阅读
  2. css中文字书写方向

    2024-07-10 17:28:04       9 阅读
  3. 19.JWT

    19.JWT

    2024-07-10 17:28:04      11 阅读
  4. 实证Stata代码命令汇总

    2024-07-10 17:28:04       10 阅读
  5. 将 build.gradle 配置从 Groovy 迁移到 Kotlin

    2024-07-10 17:28:04       11 阅读
  6. MySQL数据库字符集utf8mb4的排序规则介绍

    2024-07-10 17:28:04       9 阅读
  7. 人形机器人强化学习控制分类

    2024-07-10 17:28:04       10 阅读
  8. 小抄 20240708

    2024-07-10 17:28:04       8 阅读
  9. sklearn基础教程

    2024-07-10 17:28:04       12 阅读
  10. 图形渲染基础-GPU驱动的渲染管线

    2024-07-10 17:28:04       12 阅读
  11. 数据库的基本概念

    2024-07-10 17:28:04       11 阅读