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.
scp免密傳輸檔案
scp 命令 例如 把本地 backup a.txt檔案傳輸至192.168.80.128伺服器,賬號root 目錄為 backup scp backup a.txt root 192.168.80.128 backup 反之把192.168.80.128伺服器下backup a.txt檔案傳輸至本...
ubantu中免密登陸
一 執行ssh keygen t rsa,之後一直回車,會出現如下圖所示。二 執行命令cat ssh id rsa.pub ssh authorized keys,執行完之後,你可以去用ls l命令去 ssh目錄下面檢視是否含有以下幾個檔案 再修改authorized keys的許可權命令是chmo...
Linux設定scp免密傳輸檔案
檢查ssh key是否已經生成過 ls al ssh生成新的ssh key,三次回車 ssh keygen t rsascp免密傳輸設定 方法一 ssh copy id i root worker1方法二 scp root ssh id rsa.pub 主機b root ssh authorized...