1) 檢視shadow檔案的內容
cat /etc/shadow2) 解析shadow檔案中密碼字串的內容可以得到shadow檔案的內容,限於篇幅,我們舉例說明:
root:$1$bg1h/4mz$x89tqh7tpi9dx1b9j5ysf.:14838:0:99999:7:::
其格式為:
:::::::
【注】:shadow檔案為可讀檔案,普通使用者沒有讀寫許可權,超級使用者擁有讀寫許可權。如果密碼字串為*,則表示系統使用者不能被登入;如果字串為!,則表示使用者名稱被禁用;如果字串為空,則表示沒有密碼。
我們可以使用passwd –d 使用者名稱 清空乙個使用者的口令密碼。
對於示例的密碼域$1$bg1h/4mz$x89tqh7tpi9dx1b9j5ysf.,我們參考了linux標準原始檔passwd.c,在其中的pw_encrypt函式中找到了加密方法。3) 資料加密函式crypt()講解我們發現所謂的加密演算法,其實就是用明文密碼和乙個叫salt的東西通過函式crypt()完成加密。
而所謂的密碼域密文也是由三部分組成的,即:$id$salt$encrypted。
【注】:id為1時,採用md5進行加密;
id為5時,採用sha256進行加密;
id為6時,採用sha512進行加密。
i. 標頭檔案:#define _xopen_source4) 加密引數salt的由來#include
ii. 函式原型:char *crypt(const char *key, const char *salt);
iii. 函式說明:crypt()將使用des演演算法將引數key所指的字串加以編碼,key字串長度僅取前8個字元,超過此長度的字元沒有意義。引數salt為兩個字元組成的字串,由a-z、a-z、0-9,』.』和』/』所組成,用來決定使用4096種不同內建**的哪一種。函式執行成功後會返回指向編碼過的字串指標,引數key所指向的字串不會有所改動。編碼過的字串長度為13個字元,前兩個字元為引數salt代表的字串。
iv. 返回值:返回乙個指向以null結尾的密碼字串
v. 附加說明:使用gcc編譯時需要加上 –lcrypt
在我們的示例密碼域中salt為bg1h/4mz,那麼它又是如何來的?5) 最終結論我們還是從標準原始檔passwd.c中查詢答案。在passwd.c中,我們找到了與salt相關的函式crypt_make_salt。
在函式crypt_make_salt中出現了很多的判斷條件來選擇以何種方式加密(通過id值來判斷),但其中對我們最重要的一條語句是gensalt(salt_len)。
在我們每次改寫密碼時,都會隨機生成乙個這樣的salt。我們登入時輸入的明文密碼經過上述的演化後與shadow裡的密碼域進行字串比較,以此來判斷是否允許使用者登入。6) 示例**(測試**):【注】:經過上述的分析,我們發現破解linux下的口令也不是什麼難事,但前提是你有機會拿到對方的shadow檔案。
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv)
if (geteuid() != 0)
struct spwd *shd= getspnam(argv[1]);
if(shd != null)
} i++;
} if(j<3)
perror("file error or user cannot use.");
if(argc==3)
} return 0; }
編譯: gcc passwd.c -lcrypt -o passwd
執行: ./passwd root 123
結果: salt: $1$bg1h/4mz$, crypt: $1$bg1h/4mz$x89tqh7tpi9dx1b9j5ysf.
shadowd passwd: $1$bg1h/4mz$x89tqh7tpi9dx1b9j5ysf.
from:
shadow檔案中密碼的加密方式
1 檢視shadow檔案的內容 cat etc shadow 可以得到shadow檔案的內容,限於篇幅,我們舉例說明 root 1 bg1h 4mz x89tqh7tpi9dx1b9j5ysf.14838 0 99999 7 其格式為 注 shadow檔案為可讀檔案,普通使用者沒有讀寫許可權,超級使...
Linux shadow檔案中密碼的加密方式
1 檢視shadow檔案的內容 cat etc shadow 可以得到shadow檔案的內容,限於篇幅,我們舉例說明 root 1 bg1h 4mz x89tqh7tpi9dx1b9j5ysf.14838 0 99999 7 其格式為 注 shadow檔案為可讀檔案,普通使用者沒有讀寫許可權,超級使...
shadow檔案的MD5密碼破解
root 1 abcde luligrjwcdszq2reox7bg 15933 0 99999 7 hint 密碼長度不超過6 root 1 abcde luligrjwcdszq2reox7bg 15933 0 99999 7 這是在linux下的shadow檔案中,用來存放使用者的賬戶和密碼,...