只有一行的Perl程序第3/3頁(yè)
更新時(shí)間:2008年10月02日 00:07:37 作者:
今天來(lái)說(shuō)說(shuō)perl,只有一行的perl程序。
==
1.首先通過(guò)getpwent()獲取當(dāng)前所有用戶的用戶名和經(jīng)過(guò)加密的口令密文,在$u和$c中 ;
2.使用crypt對(duì)用戶名進(jìn)行加密,salt值為口令密文的前兩位,自動(dòng)忽略其余位;
3.如果加密結(jié)果等同于密文,那么就代表明文和密文匹配,破解成功。
##
# perl -nle 'setpwent;(""eq$c&&print"$u = [null]")||(crypt($_,$c)eq$c&&print"$u = $_")while($u,$c)=getpwent'
# 增強(qiáng)命令行版本,破解空口令和stdin輸入口令的用戶
##
這里給出一個(gè)變形的交互式Crack,由用戶手工輸入測(cè)試口令,然后程序會(huì)自動(dòng)找出同此口令匹配
的用戶。
##
# perl -e '(""eq$c&&print"$u = [null]")||(crypt($u,$c)eq$c&&print"$u = $u\n")while($u,$c)=getpwent'
# 破解無(wú)口令或 用戶名=口令的用戶
#
# perl -e 'while(($u,$c)=getpwent){for(a..zzzzzz,0..999999){crypt($_,$c)eq$c&&print"$u $_\n";}}'
# 破解6位數(shù)字和6位字符以內(nèi)簡(jiǎn)單密碼的用戶
##
最后看看結(jié)果:
##
# perl -e '(""eq$c&&print"$u = [null]")||(crypt($u,$c)eq$c&&print"$u = $u\n")while($u,$c)=getpwent'
demo02 = demo02
demo03 = [null]
#perl -nle 'setpwent;(""eq$c&&print"$u = [null]")||(crypt($_,$c)eq$c&&print"$u = $_")while($u,$c)=getpwent'
p09uest
elly = p09uest
demo03 = [null]
# time perl -e 'while(($u,$c)=getpwent){for(a..zzzz,0..9999){crypt($_,$c)eq$c&&print"$u $_\n";}}'
demo01 abc
real 0m48.714s
user 0m48.660s
sys 0m0.060s
##
第一行,是simple版本,解出了兩個(gè)簡(jiǎn)單用戶口令;
第二行,使交互式版本,根據(jù)用戶輸入進(jìn)行解密;
第三行,窮舉版本...時(shí)間會(huì)比較長(zhǎng)一點(diǎn)點(diǎn)哦,DES加密破解速率大概在每秒數(shù)萬(wàn)到數(shù)十萬(wàn)個(gè),MD5破解速率
就只有數(shù)千個(gè)了。所以在BSD和Linux等使用MD5的平臺(tái)上速度會(huì)大大慢于AIX或HP-UX等商密出口限制平臺(tái)。
還有點(diǎn)點(diǎn)小缺陷,就是使用a..zzzz,0..9999得出的字典集合,只是相應(yīng)位數(shù)的純數(shù)字或純字母集合,不包括
混雜類(lèi)型和特殊字符的。
不過(guò)這行程序用于簡(jiǎn)單的用戶口令強(qiáng)度驗(yàn)證時(shí)應(yīng)該足夠了吧,最大的優(yōu)點(diǎn),一不許要編譯,二支持跨平臺(tái)和
多種加密算法的哦:P
在AIX(DES 56),Linux(DES 40),Linux(MD5 128),F(xiàn)reeBSD(MD5 128)上測(cè)試通過(guò),不過(guò)很不幸在HP-UX
上perl的getpwent是取不到passwd值的,也許Perl不支持HP-UX上的TCB格式存放的Shadow密碼吧。
相關(guān)文章
perl 變量 $/ 的用法解析 上下文為行模式時(shí),$/ 定義以什么來(lái)區(qū)分行
默認(rèn)狀態(tài)下,很顯然都是用\n來(lái)區(qū)分行,\n也被我們稱作為換行符。當(dāng)讀取序列時(shí),按行來(lái)讀取時(shí),就是以換行符為標(biāo)準(zhǔn)2013-03-03perl中srand()與time的函數(shù)使用方法介紹
這篇文章主要介紹了perl中srand與time函數(shù)的使用,需要的朋友可以參考下2013-03-03perl如何避免腳本在windows中閃一下就關(guān)閉
寫(xiě)好了perl程序,運(yùn)行后,準(zhǔn)備等待結(jié)果輸出時(shí),結(jié)果雙擊后,看到屏幕閃了一下,然后什么都沒(méi)有了,根本沒(méi)有機(jī)會(huì)然你看到輸出的結(jié)果2013-03-03基于charles抓取https請(qǐng)求使用過(guò)程解析
這篇文章主要介紹了基于charles抓取https請(qǐng)求使用過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11perl實(shí)現(xiàn)的兩個(gè)文件對(duì)比并對(duì)數(shù)據(jù)進(jìn)行篩選的腳本代碼
對(duì)比兩個(gè)文件并對(duì)數(shù)據(jù)進(jìn)行篩選的perl腳本,涉及到哈希的應(yīng)用和perl編程風(fēng)格的改變。有需要的朋友可以參考下2013-03-03Perl遍歷目錄和使用Linux命令分析日志的代碼實(shí)例分享
這篇文章主要介紹了Perl遍歷目錄和使用Linux命令分析日志的代碼分享,需要的朋友可以參考下2014-05-05