只能用在Unix類系統(tǒng)上滩届,windows上無法使用果正。
另外使用的是字典破解法贸毕,所以需要準備一個口令字典件蚕。
調用的是UNIX計算口令hash的crypt()算法孙技。
當然注釋中給出了SHA-512 hash算法的使用方法。
#coding=utf-8
#一個UNIX口令破解器
#crypt模塊只用于UNIX
#方法是遍歷字典排作,每一個單詞加上指定的salt的計算結果與加密的口令hash做比較
#salt參數(shù)是用于增加被編碼字符數(shù)目的字符串牵啦,以使編碼更加安全。
#所以函數(shù)首先把加密的口令hash的前兩個字符作為salt妄痪,提取出來
#然后計算字典中的每一個值的hash哈雏,與原來的hash做比較,從而破解出密碼
#使用crypt模塊的crypt()函數(shù)計算hash
import crypt
import hashlib
def testPass(cryptPass):
'''驗證hash是否一致'''
#salt是前兩個字符
salt = cryptPass[0:2]
dictFile = open("dictionary.txt",'r')
for word in dictFile.readlines():
word = word.strip('\n')
cryptWord = crypt.crypt(word,salt)
#使用hashlib的SHA-512 hash算法
#cryptWord = hashlib.sha512(word).hexdigest()
if (cryptWord == cryptPass):
print "found password"+word+"\n"
return
print "password not found"
return
def main():
passFile = open("passwords.txt")
for line in passFile.readlines():
if ":" in line:
user = line.split(':')[0]
cryptPass = line.split(":")[1].strip(' ')
print "Cracking Passwod for "+user
testPass(cryptPass)
if __name__ == "__main__":
main()
#Linux中在/etc/shadow中存儲了口令的hash```