前段时间写的…

这个口令破解机只能在unix下的python环境运行.我用的是centos6.0
因为它的第三方库在unix系统中有.
windows下需要用hashlib下的sha512()函数,并且得根据官方给的加密文档来写破解方式..原谅太菜…英文不好.
官方加密文档位置–>Go!
代码片段;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env python
#only_Linux
import crypt
def testpass(passwd):
salt = passwd[0:19]
dictfile = open('passwd.txt','r')
for word in dictfile.readlines():
word = word.strip('\n')
Rpasswd = crypt.crypt(word,salt)
if (Rpasswd == passwd):
print "[+] Found Password: "+word+"\n"
return
print "[-] Password Not Found.\n"
return
def main():
passfile = open('/etc/shadow')
for line in passfile.readlines():
if ":" in line:
user = line.split(':')[0]
if (user!='root'):
continue
passwd = line.split(':')[1].strip(' ')
print "[*] Cracking Password For: " + user
testpass(passwd)
if __name__ == '__main__':
main()

可以自己根据需求情况修改吧.
执行结果:

成功破解密码.
在这里简单说下unix密码加密的形式:
$id$salt$encrypt
我这里用的salt是$id$salt一起使用的.我是看stackoverflow上别人回复看到的.具体为啥也还没有搞清楚.我觉得应该是要吧id参数传递进去,从而达到选择sha512算法的目的吧.
$id
1 | MD5
2a | Blowfish (not in mainline glibc; added in some
| Linux distributions)
5 | SHA-256 (since glibc 2.7)
6 | SHA-512 (since glibc 2.7)
具体情况具体看吧.