OS X密码暴力破解的Python实现
我有一台几年前的旧MacBook,我不太记得密码了,但我记得当时密码的一些字符,所以我在想我可能可以用一个现成的脚本找回剩下的字符。问题是,当我用“password”的哈希值测试示例中的字符串时,我得到的结果和提供的哈希值不一样。因此,我永远无法找回我以前的密码。以下是我从http://pastebin.com/Gv6VxEZ7上提取的相关代码。
#Should be 8 characters of salt + sha hash for "password" if I'm understanding this correctly
digest = "33BA7C74C318F5D3EF40EB25E1C42F312ACF905E20540226"
salt = "33BA7C74"
sha1 = "C318F5D3EF40EB25E1C42F312ACF905E20540226"
try:
salt_hex = chr(int(salt[0:2], 16)) + chr(int(salt[2:4], 16)) + chr(int(salt[4:6], 16)) + chr(int(salt[6:8], 16)) # CONVERT SALT TO HEX
check("password", salt_hex, salt)
def check(password,salt_hex, salt): # HASH PASS AND COMPARE
if not password.startswith("#!"): #IGNORE COMMENTS
sha1_guess = hashlib.sha1(salt_hex+password).hexdigest()
print("Trying with salt_hex " + password)
print sha1_guess.upper()
print "\n"
sha1_guess = hashlib.sha1(salt+password).hexdigest()
print("Trying with salt " + password)
print sha1_guess.upper()
print "\n"
if sha1 in sha1_guess.upper():
print("Cleartext password is : "+password)
exit(0)
不幸的是,我这两次尝试的结果都是错误的。
$ python sha_crack.py
正在尝试破解... 33BA7C74C318F5D3EF40EB25E1C42F312ACF905E20540226
尝试使用salt_hex密码 9D8F0A15CF344F7FB35A1918AA0636A025261627
尝试使用salt密码 E105192888CC1C34B7535AAA0425EC06F653A1B9
我正在测试的文章显示这个哈希值是“password”的。
http://www.defenceindepth.net/2009/12/cracking-os-x-passwords.html
1 个回答
0
你使用的这个示例哈希值是错误的。
如果我们换成在JtR wiki上提供的测试向量,就会发现代码的运行结果是正常的(根据维基,正确的密码是"macintosh
"):
import binascii
import hashlib
hash = "0E6A48F765D0FFFFF6247FA80D748E615F91DD0C7431E4D9"
salt = binascii.unhexlify(hash[0:8])
sha1 = binascii.unhexlify(hash[8:])
passwords = ["123", "password", "macintosh"]
for password in passwords:
if hashlib.sha1(salt + password).digest() == sha1:
print "Password is \"%s\"" % password
break