某一次服務重啟后無法登陸,密碼肯定是正確的,但就是無法登陸,由于是內網部署,也無法使用郵箱找回之類的措施,所以就直接在數據庫中修改密碼。 以下為筆記內容 。
毫無疑問我們只能進的后臺mysql進行修改,但是查資料發現數據庫內找賬號密碼,這個中的mysql的密碼是采用算法數據庫內找賬號密碼,調用的Hash函數為Sha1,迭代4096次,密鑰長度為int型16位得出的,所以你常規的用明文密碼去是不行的,必須要通過算法將密鑰算出來,然后可以成功。
下面是密鑰計算算法,計算明文為, 鹽值為, 迭代次數為4096, 密鑰長度int型16位
運行環境為 版本, 注: 3的模塊名稱已經修改,運行的時候會報錯。
hmac
from
from xor
from izip,
= ('>I').pack
def (data, salt, =4096, =16, =None):
(data, salt, , , ).('hex')
def (data, salt, =4096, =16, =None):
= or .sha1
mac=hmac.new(data, None, )
def (x, mac=mac):
h=mac.copy()
h.(x)
map(ord, h.())
buf=[]for block in (1, -(- //mac.) + 1):
rv = u = (salt +(block))for i in ( - 1):
u= (''.join(map(chr, u)))
rv=(xor, izip(rv, u))
buf.(rv)
''.join(map(chr, buf))[:]
rv= ('', '', 4096, 16)
print(rv)
修改好明文密碼和salt值后直接運行文件
# xx.py
現在開始修改密碼
exec -it /bin/bash
psql (9.6.14)
Type "help" for help.
=# help
You are using psql, the -line to .