猜测密码的每个位置的程序

时间:2017-12-08 04:04:20

标签: python loops

我是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

1 个答案:

答案 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 ...