Python暴力破解脚本问题:如何匹配目标结果并输出两位数字?
解决你的Python暴力破解脚本问题
我来帮你搞定这两个困扰你的问题:循环无法终止,以及数字无法按两位格式输出的问题。
问题1:循环无法终止的原因
你原来的代码里,p和a是固定的字符串常量,not(p)其实是判断字符串是否为空——显然"Wrong!"和"Try again."都不是空字符串,所以if not(p) and not(a)这个条件永远为False,循环自然不会停止。
正确的逻辑应该是:每次尝试密码后,获取真实的验证返回结果,再判断这个结果是否既不是"Wrong!"也不是"Try again.",如果是,就终止循环并输出正确密码。
问题2:两位数字格式输出
要让数字以两位格式(比如00、01)输出,Python有几种简单的方式:
- 使用f-string格式化:
f"{i:02d}",其中02d表示将整数格式化为两位,不足两位时用前导零填充 - 使用
zfill()方法:str(i).zfill(2),会自动在字符串开头补零到指定长度
修正后的完整代码
这里我模拟了一个密码验证的函数,你可以把它替换成你实际获取返回结果的逻辑(比如调用接口、读取程序输出等):
# 模拟密码验证的函数,替换成你实际的验证逻辑 def get_verification_result(password): # 示例:假设正确密码是42 if password == 42: return "Access Granted!" # 你的目标未知结果 elif password < 42: return "Try again." else: return "Wrong!" # 定义需要排除的结果 exclude_results = {"Wrong!", "Try again."} for i in range(0, 100): # 格式化密码为两位数字格式 formatted_pwd = f"{i:02d}" print(f"SuperPassword {formatted_pwd}") # 获取当前密码的验证结果 current_result = get_verification_result(i) # 判断是否匹配到目标结果 if current_result not in exclude_results: print(f"找到目标结果!正确密码:{formatted_pwd},返回结果:{current_result}") break
代码说明
- 验证逻辑替换:你需要把
get_verification_result函数里的内容,换成你实际获取返回结果的代码(比如调用某个API、执行命令并捕获输出等) - 格式处理:
f"{i:02d}"确保数字以两位格式输出,比如0变成00,9变成09 - 终止条件:每次循环检查返回结果是否不在排除列表中,一旦匹配到目标结果,就打印信息并终止循环
内容的提问来源于stack exchange,提问作者aurora
相关产品推荐
相关产品推荐

