这是一系列用于捕获和分析音频数据的命令行及GUI工具。
其中最有趣的工具是 keytap —— 它仅通过分析电脑麦克风捕获的音频就能猜出被按下的键盘按键。
更多详情请查看这篇博客文章:
keytap2 工具是另一个用于从音频中恢复文本的有趣工具。它不需要训练数据,而是利用英语中字母和n-gram频率的统计信息。
更详细的工具描述在这里:Keytap2 讨论
该版本相比keytap2引入了显著的算法改进和更好的n-gram统计。攻击现在完全自动化,在文本恢复过程中无需任何手动干预。
“这玩意儿好得离谱。
我希望你意识到你创造了什么(并且向世界上的每个人都公开了它)。” -- ffpip
“我刚试了一下,效果惊人。这让我有点想放弃使用机械键盘了。” -- Karawebnetwork
“这种攻击和 Van Eck 窃听就是为什么爱德华·斯诺登在输入密码和其他敏感信息时,会把自己和笔记本电脑裹在毯子下。” -- aarchi
“机械键盘用户活该如此” -- super guy
“操……” -- Lluis Franco
依赖项:
SDL2 - 用于捕获音频和打开GUI窗口 libsdl
[Ubuntu]
$ sudo apt install libsdl2-dev
[Mac OS with brew]
$ brew install sdl2
[MSYS2]
$ pacman -S git cmake make mingw-w64-x86_64-dlfcn mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2
FFTW3 (可选) - 一些辅助工具会进行傅里叶变换 fftw
Linux, FreeBSD, Mac OS, Windows (MSYS2 + MinGW)
git clone https://github.com/ggerganov/kbd-audio
cd kbd-audio
git submodule update --init
mkdir build && cd build
cmake ..
make
可用工具的简要总结。如果工具状态不是 稳定,则预计会有问题且结果不理想。
record-full
录制音频到磁盘上的原始二进制文件
./record-full output.kbd [-cN]
play-full
回放通过 record-full 工具录制的音频
./play-full input.kbd [-pN]
record
仅在打字时录制音频。用于收集 keytap 的训练数据
./record output.kbd [-cN] [-CN]
play
回放通过 record 工具创建的录制文件
./play input.kbd [-pN]
keytap
通过麦克风音频实时检测被按下的按键。使用通过 record 工具捕获的训练数据。
./keytap input0.kbd [input1.kbd] [input2.kbd] ... [-cN] [-CN] [-pF] [-tF]
keytap-gui
通过麦克风音频实时检测被按下的按键。使用通过 record 工具捕获的训练数据。GUI版本。
./keytap-gui input0.kbd [input1.kbd] [input2.kbd] ... [-cN] [-CN]
在线演示:https://keytap.ggerganov.com
keytap2-gui record.kbd n-gram-dir [-pN] [-cN] [-CN]
通过麦克风音频检测被按下的按键。使用语言的统计信息(n-gram频率)。不需要训练数据。输入文件 'record.kbd' 需通过 record-full 工具生成,包含待分析的音频数据。'n-gram-dir' 文件夹需包含对应语言的 n-gram 概率文件。
./keytap2-gui record.kbd ../data
非常欢迎关于工具性能的任何反馈。请在这里留言。
| 名称 | 类型 | 状态 |
|---|
| record | 文本 | 稳定 |
| record-full | 文本 | 稳定 |
| play | 文本 | 稳定 |
| play-full | 文本 | 稳定 |
| view-gui | gui | 稳定 |
| view-full-gui | gui | 稳定 |
| key-detector | 文本 | 稳定 |
| keytap | 文本 | 稳定 |
| keytap-gui | gui | 稳定 |
| keytap2-gui | gui | 稳定 |
| keytap3 | 文本 | 稳定 |
| keytap3-gui | gui | 稳定 |
| - | 额外 | - |
| guess-qp | 文本 | 实验 |
| guess-qp2 | 文本 | 实验 |
| keytap3-multi | 文本 | 实验 |
| scale | 文本 | 实验 |
| subreak | 文本 | 实验 |
| key-average-gui | gui | 实验 |
| keytap2 | 文本 | 实验 |
keytap3
从录音中全自动恢复未知文本。
./keytap3 input.kbd ../data [-cN] [-CN] [-pF] [-tF] [-FN] [-fN]
在线演示:https://keytap3.ggerganov.com
keytap3-gui
keytap3 工具的GUI版本。
./keytap3-gui input.kbd ../data [-cN] [-CN] [-pF] [-tF] [-FN] [-fN]
在线演示:https://keytap3-gui.ggerganov.com