我是Python的初学者,我的任务是通过运行未知的随机密码的长度猜测密码,然后用正确的字母/数字替换该位置。我知道它涉及到运行代码,直到找到匹配但我被卡住了。
您要编写一个程序,尝试猜测密码的每个位置。程序必须使用包含破解密码的代码的函数。 使用列表和方法/函数(如list()和.join)会很有帮助。 您应首先显示由星号组成的字符串(例如*******),该字符串等于生成的密码的长度。 当您匹配密码中的每个字母/数字时,请将该字母/数字替换为相同位置的星号。 输出应如下所示:
密码 yfdszk
Hacking...
Found match at position 2
*d****
Found match at position 1
*fd***
Found match at position 5
*fd**k
Found match at position 3
*fds*k
Found match at position 0
yfds*k
Found match at position 4
yfdszk
I did it! yfdszk
这是我的代码:
import random
characters="abcdefghijklmnopqrstuvwxyz0123456789"
charList=list(characters)
def generatePassword(pwLen):
pw=""
for i in range(pwLen):
rand=int(random.randint(0,len(charList)-1))
pw=pw + (charList[rand])
pwList = list(pw)
return pw
def hackPassword(pw):
r`enter code here`and=int(random.randint(0,len(charList)-1))
pw=pw + (charList[rand])
pwList = list(pw)
asterisk = "*" * len(pw)
asteriskList = list(asterisk)
print asterisk
for numbers in range(len(charList)):
if charList == pwList[]:
password = pw[:index] + "*" + pw[index+1:]
password=generatePassword(8)
# display secret
print "Password is " + password
hackPassword(password)
我需要能够猜出密码,使用for循环来查看密码的长度,然后查找匹配项,然后用找到的字母/数字替换该星号。
但我收到此错误消息:
IndexError: list index out of range on line 20
答案 0 :(得分:0)
虽然您的样本运行有缺陷,但我相信我理解您要做的事情的要点。您生成一个随机密码,然后用星号表示,以便显示长度。然后,对于characters="abcdefghijklmnopqrstuvwxyz0123456789"
中的每个字符,检查它是否与密码中的任何字符匹配。当你经历它时,你已经完成了。所以,你需要一个双嵌套循环。我不会为你写的,但我会用伪代码给你一个提示:
generate a random password
make a corresponding 'fake' password of the same length of asterisks
for char in charList:
for position in actual password:
if char matches that position:
change the asterisk to that char in the fake password
if my fake password is cracked (no more asterisks):
print('Whoohoo!')
go home, you're done
希望这有帮助!获得正确的逻辑始终是编程中最难的部分!
作为附注,我得到了上述理解,因为我在您的示例中注意到您按字母顺序破解密码... d-f-k-s-y-z ...