使用python的暴力
我有一个可执行程序,它接受一个四位数的pin码作为组合。我应该用python脚本破解这个程序。到目前为止,我得到了这个。当我执行这个时,它只打印9999。所以我得到了“错误的pin码:9999”。请帮忙使用python的暴力,python,brute-force,Python,Brute Force,我有一个可执行程序,它接受一个四位数的pin码作为组合。我应该用python脚本破解这个程序。到目前为止,我得到了这个。当我执行这个时,它只打印9999。所以我得到了“错误的pin码:9999”。请帮忙 import itertools import os numbers = '0123456789' y = '' for c in itertools.product(numbers, repeat=4): pin = y+''.join(c) print pin os.system(
import itertools
import os
numbers = '0123456789'
y = ''
for c in itertools.product(numbers, repeat=4):
pin = y+''.join(c)
print pin
os.system("./xyz "+pin)
注意识别:
import itertools
import os
numbers = '0123456789'
y = ''
for c in itertools.product(numbers, repeat=4):
pin = y+''.join(c)
print pin
os.system("./xyz "+pin)
正如莫里斯·迈耶所说:压痕是错误的 另外:使用
itertools.product
,这有点复杂。我想你想解决把1变成“0001”的问题,你可以使用zfill
:
for i in range(10000):
pin = str(i).zfill(4)
os.system("./xyz "+pin)
你有缩进问题。您对操作系统的调用在循环之外。作为旁注,
y+''。join(c)
与''完全相同。join(c)
,何必费心。识别最后两行,你就可以继续使用了。为什么要使用y+''。join(c)
?它已经是一个字符串了,Python不需要类型强制…使用itertools.product
在这方面做得太过分了。您希望从0循环到9999,并格式化该数字,使其始终为4个数字长,例如,范围(10000)内的i的:pin=“{0:04d}.format(i)
非常感谢您的快速回复。我是编程方面的新手。它成功了!