主程序的逻辑

利用这些子程序主程序的逻辑允许用户创建敲打序列或在守护模式下监听敲打序列并执行命令第一部分是在用户指定 c 选项(用于创建模式)时执行的可以用简单的超时进程来结束敲打序列增大最大超时长度变量的值可以让两次敲打序列之间暂停 秒以上如果我们保留最大超时长度为 秒那么程序运行到这个时间时就会结束并打印当前输入的敲打序列

清单 创建序列主逻辑

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}/knockFile\n\n; for( @baseKnocks ){ print $_ } print _#_ (command here) _#_ \n\n; }#if knocks entered

第二部分是用来在一个无限循环中监听敲打序列的主逻辑它在一个循环中大约要睡眠/ 秒在这个循环中还使用了一个基于秒的超时在足够的延时之后重置敲打序列注意在这个例子中敲打监听超时时间为 秒而最大超时时间为 秒这样就提供了在敲打创建模式下进行简单测试设置的功能并为敲打序列的监听模式提供了一个快速重置选项

清单 主程序中的敲打监听代码

}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 程序非常适合用于为系统提供一种额外的用户输入通道然而需要注意的是使用 knockAge 来做任何事都需要在系统上进行认证是的它可以防止密钥记录程序监听密码的问题但是很多与 敲打认证 有关的因素都表明在对安全性敏感的环境中使用这种技术还不够成熟敲打序列目前是以 到 个数字在 ~/knockFile 中进行存储的它们以毫秒为单位来表示延时这个 密码 文件非常容易读取并且通过尝试和匹配敲打模式可以获得对系统的访问权限排除毫秒值中一些精度是一种可用的方法但是这种练习就留给那些希望自行对系统风险进行评估的读者好了

在任何敏感环境中我们都应该进行一些研究判断用户是否有足够的应变能力并能够精确地重现敲打序列例如我们是否具有能力创建并连续输入可接受长度的敲打密码?具有普通智商的人是否可以直观地使用这种敲打序列?或者我们是否准备使用 刮脸和理发操作 来作为密码?

linux命令从哪里敲,Linux 笔记本基于“敲打”的命令相关推荐

  1. 敲门代码python_适用于Linux笔记本电脑的基于敲门的命令

    敲门代码python 2003年,IBM开始发布具有集成加速度计和相关软件的ThinkPad膝上型计算机,以在设备跌落时保护硬盘. 来自IBM和其他地方的进取型黑客已致力于为Linux内核开发模块,以 ...

  2. linux无界面手敲命令笔记

    0 Ubuntu相关命令简介 1. 文件及目录操作命令 pwd:显示用户当前所处的目录 ls:列出目录下的文件清单 cd:改变当前目录cd - 返回上一级目cd / 进入根目录不加参数或参数为&quo ...

  3. 照着书敲linux下载安装命令?大汇总来咯!!!

    linux下载安装的命令 一. 本地上传 1.1 使用scp命令 1.2 使用xshell工具 1.3 常用方法 二. 网络远程下载 2.1 curl_一种下载文件的工具 2.2 wget_软件下载工 ...

  4. 关于Linux的基础中的基础和一些基础小命令

    每周分享 1 硬盘分区挂载及命令别名   一般来说,硬盘分区有两种类型:一种是GPT,但是只支持总分区,现在很多家庭电脑Windows系统都是用这种分区类型:还有一种就是主流的MBR,主分区单块硬盘上 ...

  5. linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...

    作业一: 1)将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group > /1.txt 2)将用户信息数据库文件和用户 ...

  6. linux中dd命令增加内存使用率,Linux 下使用 dd 命令进行硬盘 I/O 性能检测

    如何使用dd命令测试我的硬盘性能?如何在linux操作系统下检测硬盘的读写速度? 你可以使用以下命令在一个Linux或类Unix操作系统上进行简单的I/O性能测试. dd命令 :它被用来在Linux和 ...

  7. linux 重定向 2 gt gt,Linux命令- echo、grep 、重定向、1gt;amp;2、2gt;amp;1的介绍

    最近笔试遇到一道题,关于Linux命令的,题目如下 下面两条命令分别会有怎样的输出 echo hello 1>&2 |grep aaa echo hello 2>&1 |g ...

  8. linux zsh ping命令,扣丁学堂Linux培训简述Linux使用zsh提高效率的5条建议

    本篇文章扣丁学堂Linux培训小编给大家分享一下Linux使用zsh提高效率的5条建议,对Linux开发技术感兴趣或者还是想要加入到Linux开发领域的小伙伴可以随小编一起来了解一下哦. Linux培 ...

  9. linux ftp 团队认证,linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建

    linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建 1.FTP协议:有命令和数据连接两种 命令连接,控制连接:21/tcp 数据连接: 主动模式,运行在20/tcp端口 和 ...

  10. linux sudo漏洞 可导致用户以 root 权限运行命令

    Linux 用户要注意了!几乎所有基于 UNIX 和 Linux 的操作系统上安装的核心命令,也是最重要.最强大也最常用的工具 Sudo中被曝存在一个漏洞. Sudo 的全称是"superu ...

最新文章

  1. 网络爬虫(Web crawler)|| 爬虫入门程序
  2. 【Paper】2018_多机器人领航-跟随型编队控制
  3. WebForm页面使用Ajax
  4. IOS之SplitViewController的使用
  5. win7局域网共享设置_Win7系统打印机共享不了的设置方法思路!
  6. python中去除字符串中首尾空格的函数_Python中去除字符串首尾特定字符的函数:strip()...
  7. python如何给定取值范围_python怎么限定函数自变量取值范围
  8. 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
  9. JDK时区与电脑系统时区不一致,导致时间new date不对
  10. python链表结构_CodeSalt | Python数据结构的实现 — 链表
  11. angularjs获取php数据类型,利用Angularjs从PHP读取后台数据
  12. (Zotero)开源的文献管理器 真香
  13. 掌握中台系统,需要了解哪些技术?
  14. css字体库免费下载使用(带网址)
  15. 妙招防止非法入侵Win2000/XP系统(转)
  16. 从零开始ming的多人联机游戏(3)为socket通讯添加mysql数据库
  17. 透明图片怎么发给别人_新手微商没生意咋办?微商怎么做如何推广?不放弃微信就是等死!...
  18. 打破应试教育的思想才是重生之路
  19. 2018-2019-1 20189206 《Linux内核原理与分析》第五周作业
  20. ASEMI代理Infineon英飞凌IPB60R099CP原厂MOS管

热门文章

  1. 【背包问题】基于matlab萤火虫算法求解背包问题【含Matlab源码 1440期】
  2. 【基音频率】基音matlab基音频率计算【含Matlab源码 1384期】
  3. 【通信】基于matlab语音信号仿真【含Matlab源码 957期】
  4. 【指纹识别】基于matlab GUI指纹识别【含Matlab源码 586期】
  5. 【三维路径规划】基于matlab麻雀搜索算法无人机三维路径规划【含Matlab源码 171期】
  6. python list拆分_python里如何把一个list分成两个
  7. ai时代大学生的机遇和挑战_评估AI对美术的影响:威胁或机遇
  8. 小学六年级计算机教案超链接,六年级信息技术《制作其他网页》优秀教案
  9. eos linux开发语言,EOSIO与Linux之间的区别
  10. 航天有关的计算机知识,这些关于神舟十二上的电脑硬核小知识,你知道吗?