Unix操作系統中,我們來知道破解密碼最常用的手段之一,就是字典暴力破解。我們使用一個簡單的腳本,讓你的密碼每時每刻都在變換,將暴力破解的可能降到最低。即時暴力得到了密碼,下一分鐘,密碼可能就會變掉,破解出來的密碼也失去了用處。
基本的原理是,Unix操作系統使用root權限,調用passwd命令,定時修改用戶的密碼。 但是由於passwd命令比較特殊,要求必須人機交互狀態下輸入新密碼,因此使用一般的方式無法實現完全自動化。
在這裡我們使用一個特殊的模塊 Expect。他可以模擬人機操作的環境。 (也可以使用linux的 expect 命令完成,但是我們這裡主要討論perl) 密碼隨時變化,你自己必須要知道當前的密碼。這樣就要求我們有一套算法。並且有一個隨機變化的因子。
例如:我們選取時間為因子。算法為 'password' + 時間的分鐘數 ,現在為 11:39 分,那麼當前的密碼就是 password39 。如果時間是 13:07分,密碼就是 password07 。
當然這個是最簡單的一個算法,你可以定義自己更復雜的算法。 Unix操作系統代碼如下:
- #!/usr/bin/perluse Expect;
- # 得到時間因子my ($sec,$min,$hour,$mday,$mon,$year)= localtime();
- $mon=$mon+1;if($mon<10){$mon="0".$mon;}if($mday<10){$mday="0".$mday;
- }if($hour<10){$hour="0".$hour;}if($min<10){$min="0".$min;
- }if($sec<10){$sec="0".$sec;}$year=$year+1900;
- # 產生密碼my $password = "password".$min;
- # 開始變化密碼my $exp = Expect->spawn("passwd root");
- $exp->expect(10,['password: $', sub {my $fh = shift;print $fh "$password";exp_continue;}]);
將以上代碼保存為 /root/passwd.pl Unix操作系統文件,並且給與700 權限(為了安全,不允許其他人讀取)
然後在 root 帳戶的 crontab 裡面加入
* * * * * /root/passwd.pl >/dev/null 2>&1 即可。Unix操作系統中,我們就完成了定時修改unix密碼的腳本的講解。