環境 kali python2.7
在我們寫程式之前,我們首先要知道的是unix密碼是以hash加密的,所以我們這裡要用到python的crypt庫,我們只需呼叫crypt.crypt()函式,並把我們需要加密的口令和salt傳給他,該函式就會以字串的形式返回密碼的hash
在我們早期第一代密碼,如果使用者密碼為123,則資料庫就會儲存123,如果資料庫洩露,會十分危險,所以漸漸地便產生了第二代密碼,使用者輸入123,程式會講123進行md5加密,即轉化為202cb962ac59075b964b07152d234b70,並儲存到資料庫中.在使用者登入的時候,會把使用者輸入的轉化為md5,並與資料庫中的加密的密碼做比較.但是這樣也是不安全的,hk』會將各種密碼收集到乙個強大的字典裡面,然後利用指令碼將字典裡面的密碼逐一進行加密並登入,如果登入成功,我們就會破解出使用者的密碼. 然後,第三代密碼產生了,他的資料表裡面多了乙個字段,即鹽值,這資料庫中儲存的就是md5(明文密碼+salt),這樣會大大加強了密碼的安全性.
了解了這個函式的用法,接下來.我們就可以來正式編寫我們的程式了,在我們編寫程式時,我們應該養成乙個將指令碼的各個功能分函式編寫的良好習慣,在本程式裡面,我們用了兩個函式,testpass()函式從字典中讀取密碼,並將其以salt的鹽值進行加密,遍歷無果則返回.main函式將開啟加密口令檔案,並逐行讀取口令檔案中的內容,而每一行的使用者名稱和密文都是用 : 分隔開的,我們可以用python split() 通過指定分隔符對字串進行切片.
程式總思路\
使用者的密碼是明文密碼加salt來進行hash加密的,所以我們可以利用crypt庫,將字典檔案中的每乙個密碼提取出來.並對其進行salt的hash加密,與密文檔案中的密文做比較,如果兩者相等,即可獲取密碼,並返回乙個提示,若全部字典檔案都不相等,則破解不出來密碼,會返回乙個提示最後附上指令碼全部**
import crypt
deftestpass
(cryptpass)
: salt = cryptpas[0:
2]dictfile =
open
('dictionary.txt'
,'r'
)for word in dictfile.readlines():
word = word.strip(
'\n'
) cryptword = crypt.crypt(word,salt)
if cryptword == cryptpass:
print
('[+] password is '
+ word+
'\n'
)return
print
('[-] password not found'
)return
defmain()
: passfile =
open
('password.txt'
)for line in passfile.readlines():
if':'
in line:
user = line.split(
':')[0
] cryptpass = line.split(
':')[1
],strip(
' ')
print
('chacking pass for '
+user)
testpass(cryptpass)
if _name_ ==
'_main_'
: main(
):
UNIX口令破解機
以下需要在linux系統執行 import crypt def testpass cryptpass salt cryptpass 0 2 取前兩個,沒用的,他們會置於加密後密碼的前面,我們不需要 dictfile open dictionary.txt r 存了所有簡單的密碼,一一試探 for w...
UNIX口令破解機 完善前面的
從passwords檔案中讀取使用者的口令 這個口令是經過加密的 然後我們需要從dictionary檔案中獲取乙個個密碼 然後對這些密碼進行加密,判斷是否等於口令 是的話這個密碼就是該口令的明文 記住破解的是使用者的口令,使用者的密碼沒有破解 import crypt deftestpass cry...
破解root口令
今天小編示範如何破解root口令,以及進行grub加密後再次破解口令的實驗。一 三步破解root口令 流程 啟動系統時,設定其執行級別1,進入單使用者模式。編輯grub選單 選定要編輯的title,而後使用e命令 在kernel所在行,鍵入 b 命令,重啟後passwd直接修改root口令,就這樣快...