Keytap3 | 敲键盘的声音,也能出卖你
2024-6-14 17:0:6 Author: www.freebuf.com(查看原文) 阅读量:1 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

声明:以下内容符合OSINT国际开源情报搜集定义,不涉及任何非法行为,仅供交流与参考

01 技术原理

你知道一个好看又好用的机械键盘,敲起来有多爽吗?

不,你不知道。

而且你永远想不到,

你敲键盘的声音,也可以悄悄出卖你。

程序员Georgi Gerganov给出了一种不通过任何蓝牙、WiFi或其它射频信号,仅仅通过普通的麦克风,就可以窃听键盘输入的方法。

其原理是:先捕获键盘敲击的音频,然后生成敲击音的集群图,再通过对相关字母在假定的文本语言中出现频率的统计信息来分析这些集群。

嗯,和猜测密码类似,该算法中已经定义了在某些语言(如英语)中使用频率较高的一些字母组合,这样就可以开展猜测推导。

听起来是不是很简单?

02 实际测试

嘿嘿,杨叔这样的实践派,都是习惯直接上手体验~~

开始测试前的注意事项:

  • 在安静的房间里

  • 在手机或PC上打开测试页并将键盘放麦克风旁

  • 使用小写字母和空格,在键盘上键入一些英文

  • 尽量不要以超过 250 CPM 的速度输入

  • 仅适用于机械键盘,因为敲击声更大

特别地,不需将键盘连接电脑,或者给键盘安装电池,下图这样就好。

录制足够的音频后,程序将开始分析录音并尝试恢复键入的文本内容。

由于最近楼上噪声扰民加重,一天到晚跟在KTV蹦迪似的,物业和业委会上去说了多次也被噎得够呛,想想“垃圾人定律”,不值得和更年期四肢痉挛症患者怄气,晚上索性到女儿房间里做了些测试。

杨叔准备了4~5款不同品牌的机械键盘,PS:刚好用到之前KCON黑客大会送的键盘礼

可以看到,在杨叔敲击键盘的时候,Keytap3通过电脑的麦克风,捕捉到并记录了机械键盘的敲击声。

GUI图形版看起来比较清晰,不像下图这个Shell版本,只能看到命令执行效果:

通过测试,杨叔个人怎么觉得还是老版本的Keytap2更直观好用,准确率更高些

感兴趣的朋友,可以前往 Gerganov的网站亲自尝试一下,网址如下:

代码地址:https://github.com/ggerganov/kbd-audio

Demo体验:https://keytap3.ggerganov.com/

嗯,按照作者的说法:

最好先准备一个声音响亮的机械键盘,配合准确的英语书写,才能获得最佳结果。

换句话说,你若是下图这样敲键盘,那估计没啥效果。

有个评论是这么说的:

虽然并不能说这个漏洞已经100% 完美无缺,但它确实能够猜测正在输入的内容,甚至可能会令人惊讶乃至担忧般地准确。

当然,仅仅通过录音,目前的版本可能无法完美地逐字提取冗长的文字,比如邮件内容等。

但它成功提取的单词中可能包括用户名、密码,甚至是你不希望与他人共享的网站URL(咳咳,你懂得)

03 如何防范?

说了那么多,所以,在哪里能买......咳,到底该如何防范呢?

既然我们已经知道了原理,那防范就很简单了

方法1:在键盘上加软垫,减少机械键盘声音。

方法2:更换机械键盘为静音键盘,减小音量。

网上有人提出了上述两种方法,想来应该都是些不理解机械键盘买家心情的家伙吧?

为什么有人偏爱机械键盘?

就是因为机械键盘“敲”起来爽啊!!

拜托,加上垫子还用个毛线?!

那些说什么“爱德华·斯诺登在输入密码时会在笔记本电脑上盖毯子”的,杨叔专门查了下,那只是一句关于斯诺登平时很重视安全的玩笑梗,没想到有人当真了

方法3:干扰键盘敲击声,如放音乐增加背景噪音、增加一些小动作、减少手指敏感度等等。

嗯,这个思路可以自行拓展下,上图仅供参考

方法4:使用高科技虚拟键盘,比如三星出的这款SelfieType镭射投影式键盘,移动设备用户能随时在任何平面上,通过虚拟键盘录入。

这个技术虽然缺乏打字的回馈手感,但对于Keytap3来说,显然是有效的。

土豪们可以考虑下寄给杨叔一件样品做测试~

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022


文章来源: https://www.freebuf.com/articles/mobile/403631.html
如有侵权请联系:admin#unsafe.sh