[英]Shell script password auditing
我有一個名為./testpassword的二進制文件,其語法如下
./testpassword pass PASSWORD_GOES_HERE
如果密碼正確,將輸出
pass=correct
如果輸出錯誤如下
pass=incorrect
我是linux和腳本編寫的新手,但是在這里的一名成員的幫助下,制作了一個示例shell腳本,如下所示
cat passwords.txt | while read x ; do echo -n "$x: " && ./testpassword pass $x ;
done
其中密碼是txt格式的單詞表。
這很好用,如果我留意終端,我會看到以下輸出(繼續單詞列表中的每一行)
jordyt: pass=incorrect
dawder: pass=incorrect
LOL12345: pass=incorrect
warcraft: pass=incorrect
solidussnake: pass=incorrect
0005: pass=correct
因此,在這種情況下,我知道0005是我的密碼,我的問題是,找到密碼后是否可以停止該程序,或者在某個地方自動顯示密碼? 如果我要離開屏幕,則會丟失密碼,因為屏幕將繼續嘗試輸入密碼並向下滾動
我以前做的方式就像這樣的Shell腳本密碼bruteforcing 。 它可以正常工作,我可以走開,然后再回來,看到密碼已被破解,然后按ctrl + c程序,不過這有點麻煩。 在我不得不手動在單詞列表中搜索與破解密碼相對應的行號之后
您可以將./testpassword pass $x
的執行保存在變量中,以執行以下操作:
cat passwords.txt | while read x ; do result=`./testpassword pass $x` ; echo -n "$x: $result" ; done
然后,您可以將$ result與字符串“ pass = correct”進行比較,如果以這種方式找到字符串,則可以中斷循環:
if [[ "$result" == *pass=correct ]]; then break; fi
放在一起:
cat passwords.txt | while read x ; do result=`./testpassword pass $x` ; echo -n "$x: $result" ; if [[ "$result" == *pass=correct ]]; then break; fi ; done
修改您的testpassword
腳本,以便在成功的情況下返回0,在失敗的情況下返回其他值。 之后,您可以按如下方式重寫循環:
cat passwords.txt | while read x; do
echo -n "$x: " && ./testpassword pass $x && break
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.