新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux 筆記本基于“敲打”的命令

Linux 筆記本基于“敲打”的命令

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

主程序的邏輯

利用這些子程序主程序的邏輯允許用戶(hù)創(chuàng)建敲打序列或在守護(hù)模式下監(jiān)聽(tīng)敲打序列并執(zhí)行第一部分是在用戶(hù)指定 c 選項(xiàng)(用于創(chuàng)建模式)時(shí)執(zhí)行的可以用簡(jiǎn)單的超時(shí)進(jìn)程來(lái)結(jié)束敲打序列增大最大超時(shí)長(zhǎng)度變量的值可以讓兩次敲打序列之間暫停 秒以上如果我們保留最大超時(shí)長(zhǎng)度為 秒那么程序運(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

第二部分是用來(lái)在一個(gè)無(wú)限循環(huán)中監(jiān)聽(tīng)敲打序列的主邏輯它在一個(gè)循環(huán)中大約要睡眠/ 秒在這個(gè)循環(huán)中還使用了一個(gè)基于秒的超時(shí)在足夠的延時(shí)之后重置敲打序列注意在這個(gè)例子中敲打監(jiān)聽(tīng)超時(shí)時(shí)間為 秒而最大超時(shí)時(shí)間為 秒這樣就提供了在敲打創(chuàng)建模式下進(jìn)行簡(jiǎn)單測(cè)試設(shè)置的功能并為敲打序列的監(jiān)聽(tīng)模式提供了一個(gè)快速重置選項(xiàng)

清單 主程序中的敲打監(jiān)聽(tīng)代碼

}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)提供一種額外的用戶(hù)輸入通道然而需要注意的是使用 knockAge 來(lái)做任何事都需要在系統(tǒng)上進(jìn)行認(rèn)證是的它可以防止密鑰記錄程序監(jiān)聽(tīng)密碼的問(wèn)題但是很多與 敲打認(rèn)證 有關(guān)的因素都表明在對(duì)安全性敏感的環(huán)境中使用這種技術(shù)還不夠成熟敲打序列目前是以 到 個(gè)數(shù)字在 ~/knockFile 中進(jìn)行存儲(chǔ)的它們以毫秒為單位來(lái)表示延時(shí)這個(gè) 密碼 文件非常容易讀取并且通過(guò)嘗試和匹配敲打模式可以獲得對(duì)系統(tǒng)的訪(fǎng)問(wèn)權(quán)限排除毫秒值中一些精度是一種可用的方法但是這種練習(xí)就留給那些希望自行對(duì)系統(tǒng)風(fēng)險(xiǎn)進(jìn)行評(píng)估的讀者好了

在任何敏感環(huán)境中我們都應(yīng)該進(jìn)行一些研究判斷用戶(hù)是否有足夠的應(yīng)變能力并能夠精確地重現(xiàn)敲打序列例如我們是否具有能力創(chuàng)建并連續(xù)輸入可接受長(zhǎng)度的敲打密碼?具有普通智商的人是否可以直觀地使用這種敲打序列?或者我們是否準(zhǔn)備使用 刮臉和理發(fā)操作 來(lái)作為密碼?


上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: Linux 命令

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉