0x0 引言

  1. 上一章节中以及详细的介绍了识别键盘敲击的原理
  2. 利用密码学中的字符替换是一个非常取巧的方案
  3. 在实际情况中上一章节的方案其实有不少缺陷,例如:无法识别用户输入的无规则密码
  4. 理论上只有机器学习才能解决无序输入的问题

当然基于机器学习的键盘识别也是有不少缺陷的:

  • 受限于硬件,每个键盘都需要单独采集/学习
  • 如果键盘的声音很小,那么就很难采集
  • 低端的麦克风有很多杂音,会影响学习

0x1 机器学习

  • 基本原理和上一章节的算法是一样的
  • 只是字符替换表事先做好了(上一章节中是随意指定的)
  • 这里直接使用开源的keytap来实现
  1. 首先采集训练数据
./record trans.kbd -c0

image-20211021141054781.png

  • 安静的环境下有间隔的触发字符,record会自动采集声音与输入的字符训练
  • 每个字符至少触发三次
  1. 接着通过训练数据,实时的分析当前的键盘声音
./keytap trans.kbd -c0
  • 如果上一步的训练数据不够就会出现下面的提示信息
    image-20211021141411208.png
  • 如果训练的足够有效,那么就会像下面这样识别出键盘敲击的字符

image-20211021143151430.png

  • 时间有限,这里之训练了1xp三个字符,这里反过来敲也能识别出来

ps

  • 实际测试下盘机械键盘的识别率非常高
  • 只有静音键盘可以避免这种攻击
Last modification:November 29, 2021
如果觉得我的文章对你有用,请随意赞赏