簡介:因為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