You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重置Python密码猜测器中的for循环以实现分段密码破解?

Python密码猜测器分段破解修复方案

现有代码的核心问题

  • 初始循环条件while Guess != list[n-1]逻辑错误:n初始为0时,list[n-1]会取列表最后一个元素,导致循环目标完全偏离。
  • 单段破解逻辑无效:仅生成一次对应长度的随机字符串,没有持续猜测直到匹配当前分段。
  • 分段切换逻辑混乱:猜对一段后未重置猜测流程,无法正确进入下一段的破解循环。

修正后的完整代码

from random import randint
import time

LettersAndSymbols = [
    "A", "a", "B", "b", "C", "c", "D", "d", "E", "e",
    "F", "f", "G", "g", "H", "h", "I", "i", "J", "j",
    "K", "k", "L", "l", "M", "m", "N", "n", "O", "o",
    "P", "p", "Q", "q", "R", "r", "S", "s", "T", "t",
    "U", "u", "V", "v", "W", "w", "X", "x", "Y", "y",
    "Z", "z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
]

print("请勿输入个人真实密码")
ClientPassword = input("请输入测试用密码\n")

startTime = time.time()

# 按每3个字符拆分密码,避免用内置关键字list命名变量
segment_size = 3
password_segments = [ClientPassword[i:i+segment_size] for i in range(0, len(ClientPassword), segment_size)]
cracked_segments = []

# 逐个破解每个分段
for segment in password_segments:
    current_guess = ""
    # 持续生成随机字符串,直到匹配当前分段
    while current_guess != segment:
        current_guess = ""
        for _ in range(len(segment)):
            current_guess += LettersAndSymbols[randint(0, 61)]
    cracked_segments.append(current_guess)
    print(f"已破解分段: {current_guess}")

executionTime = (time.time() - startTime)
full_cracked_password = "".join(cracked_segments)
print(f"\n破解完成,耗时 {round(executionTime, 1)} 秒!\n原密码为: {full_cracked_password}")

关键修改点说明

  • 变量命名优化:把list改为password_segments,避免和Python内置类型冲突。
  • 分段遍历逻辑:用for循环直接遍历每个分段,确保依次处理每一段。
  • 单段破解逻辑:每个分段单独用while循环持续猜测,直到匹配成功,完全重置猜测流程后再处理下一段。
  • 移除冗余变量:删掉原代码中逻辑混乱的n、reset等变量,让流程更清晰易懂。

内容的提问来源于stack exchange,提问作者TheNeverEndingError

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:23:18