简介:因为Linux的密码都是加密过的(例如:$6$X.0bBN3w$NfM7YYHevVfCnZAVruItAEydaMJCF.muefZsxsgLK5DQoahW8Pqs1BSmoAFfi5J/blvlobrSmFtNQFsYMyIIh1),现在我们把这段密码的密文拿出来解密,就可以得到明文的密码啦~
说明:wordlist.TXT 是事先准备的密码字典,test.txt 文件内容是复制了Linux中shadow文件中的一条信息拿来做实验的,内容如下:
下面的代码我是在Linux下执行的,因为Linux中有crypt模块,用起来方便
1 import crypt #导入加密模块 2 with open(r'/tmp/text.txt','r') as f: #将text.txt文件内容中的密码部分读取出来、并把加密盐值取出来 3 a=f.read(); 4 uplist=a.split(":") 5 username=uplist[0] 6 userpass=uplist[1] 7 saltlist=userpass.split("$") 8 saltnum="$"+saltlist[1]+'$'+saltlist[2] 9 #print(saltnum) 10 11 with open (r'/tmp/wordlist.TXT','r') as f: #wordlist.TXT是密码字典 12 while True: 13 passwd=f.readline().rstrip() #按行读取字典并且去除空白部分 14 #print(passwd) 15 if passwd == "": #读完字典后跳出while循环 16 break; 17 jiami=crypt.crypt(passwd,saltnum) #加密字典中的密码与密文密码进行匹配 18 #print(jiami) 19 if jiami == userpass: #当找到密码后输出并跳出while循环 20 print(username,passwd) 21 break;
结果如下:
root 123456