Linux 筆記本基于“敲打”的命令
主程序的邏輯
利用這些子程序主程序的邏輯允許用戶創(chuàng)建敲打序列或在守護(hù)模式下監(jiān)聽敲打序列并執(zhí)行命令第一部分是在用戶指定 c 選項(xiàng)(用于創(chuàng)建模式)時(shí)執(zhí)行的可以用簡單的超時(shí)進(jìn)程來結(jié)束敲打序列增大最大超時(shí)長度變量的值可以讓兩次敲打序列之間暫停 秒以上如果我們保留最大超時(shí)長度為 秒那么程序運(yùn)行到這個(gè)時(shí)間時(shí)就會(huì)結(jié)束并打印當(dāng)前輸入的敲打序列
清單 創(chuàng)建序列主邏輯
if( $option eq c ){ print create a knock pattern:n; $startTime = getEpochSeconds(); # reset time out start while( $timeOut == ){ $currTime = getEpochSeconds(); # check if there has not been a knock in a while if( $currTime $startTime > $MAX_TIMEOUT_LENGTH ){ $timeOut = ; # exit the loop }else{ # if a knock has been entered before timeout reset timers so # more knocks can be entered if( $knockCount != $knockAge ){ $startTime = $currTime; # reset timer for longer delay $knockAge = $knockCount; # synchronize knock counts }# if a new knock came in }# if timer not reached knockListen(); select(undef undef undef $SLEEP_INTERVAL); }#timeOut = if( @baseKnocks ){ print place the following line in $ENV{HOME}/knockFilenn; for( @baseKnocks ){ print $_ } print _#_ (command here) _#_ nn; }#if knocks entered
第二部分是用來在一個(gè)無限循環(huán)中監(jiān)聽敲打序列的主邏輯它在一個(gè)循環(huán)中大約要睡眠/ 秒在這個(gè)循環(huán)中還使用了一個(gè)基于秒的超時(shí)在足夠的延時(shí)之后重置敲打序列注意在這個(gè)例子中敲打監(jiān)聽超時(shí)時(shí)間為 秒而最大超時(shí)時(shí)間為 秒這樣就提供了在敲打創(chuàng)建模式下進(jìn)行簡單測試設(shè)置的功能并為敲打序列的監(jiān)聽模式提供了一個(gè)快速重置選項(xiàng)
清單 主程序中的敲打監(jiān)聽代碼
}else{ # main code loop to listen for knocking and run commands readKnockFile(); $startTime = getEpochSeconds(); while( $timeOut == ){ $currTime = getEpochSeconds(); if( $currTime $startTime > $LISTEN_TIMEOUT ){ $knockCount = ; @baseKnocks = (); $startTime = $currTime; if( $option ){ printlisten timeout resetting knocks n } }else{ if( $knockCount != $knockAge ){ $startTime = $currTime; # reset timer for longer delay $knockAge = $knockCount; # synchronize knock counts }# if a new knock came in compareKnockSequences(); }#if not reset timeout knockListen(); select(undefundef undef $SLEEP_INTERVAL); }#main knock listen loop }# if create or listen for knocks
警告安全性
knockAge 程序非常適合用于為系統(tǒng)提供一種額外的用戶輸入通道然而需要注意的是使用 knockAge 來做任何事都需要在系統(tǒng)上進(jìn)行認(rèn)證是的它可以防止密鑰記錄程序監(jiān)聽密碼的問題但是很多與 敲打認(rèn)證 有關(guān)的因素都表明在對(duì)安全性敏感的環(huán)境中使用這種技術(shù)還不夠成熟敲打序列目前是以 到 個(gè)數(shù)字在 ~/knockFile 中進(jìn)行存儲(chǔ)的它們以毫秒為單位來表示延時(shí)這個(gè) 密碼 文件非常容易讀取并且通過嘗試和匹配敲打模式可以獲得對(duì)系統(tǒng)的訪問權(quán)限排除毫秒值中一些精度是一種可用的方法但是這種練習(xí)就留給那些希望自行對(duì)系統(tǒng)風(fēng)險(xiǎn)進(jìn)行評(píng)估的讀者好了
在任何敏感環(huán)境中我們都應(yīng)該進(jìn)行一些研究判斷用戶是否有足夠的應(yīng)變能力并能夠精確地重現(xiàn)敲打序列例如我們是否具有能力創(chuàng)建并連續(xù)輸入可接受長度的敲打密碼?具有普通智商的人是否可以直觀地使用這種敲打序列?或者我們是否準(zhǔn)備使用 刮臉和理發(fā)操作 來作為密碼?
評(píng)論