0x0 引言
- 上一章节中以及详细的介绍了识别键盘敲击的原理
- 利用密码学中的字符替换是一个非常取巧的方案
- 在实际情况中上一章节的方案其实有不少缺陷,例如:无法识别用户输入的无规则密码
- 理论上只有机器学习才能解决无序输入的问题
当然基于机器学习的键盘识别也是有不少缺陷的:
- 受限于硬件,每个键盘都需要单独采集/学习
- 如果键盘的声音很小,那么就很难采集
- 低端的麦克风有很多杂音,会影响学习
0x1 机器学习
- 基本原理和上一章节的算法是一样的
- 只是字符替换表事先做好了(上一章节中是随意指定的)
- 这里直接使用开源的keytap来实现
- 首先采集训练数据
./record trans.kbd -c0
- 在安静的环境下有间隔的触发字符,
record
会自动采集声音与输入的字符训练 - 每个字符至少触发三次
- 接着通过训练数据,实时的分析当前的键盘声音
./keytap trans.kbd -c0
- 如果上一步的训练数据不够就会出现下面的提示信息
- 如果训练的足够有效,那么就会像下面这样识别出键盘敲击的字符
- 时间有限,这里之训练了
1xp
三个字符,这里反过来敲也能识别出来
ps
- 实际测试下盘机械键盘的识别率非常高
- 只有静音键盘可以避免这种攻击