UPDATE——
专业信号信息处理再破周总手机号 http://news.mydrivers.com/1/239/239744.htm
这年头,人们的隐私会从各种渠道被泄露出去,有些甚至你完全想不到,可以说防不胜防,比如说,你想过单从按键声音就分析出你的手机号码么?竟然还真有人做到了!网友“清华南都”就根据一段视频中的按键音,还原出了360总裁周鸿祎的手机号,并验证无误,还引来了周鸿祎本人的关注,甚至得到了李开复抛来的创业橄榄枝。
事情起源于这几天的360、百度搜索大战。优酷的报道中出现了这么一段视频:
iOS用户点此播放
在视频的第33-43秒,我们可以清晰地听到优酷记者给周鸿祎拨号的整个过程。的确,用人耳听似乎觉得每个音都差不多(下面会解释原因),但是将它们转化成图形以后,就可以很清楚地看到差别了。
先用FFmpeg或者任何工具将这段声音截出来,转成PCM Signed 24位的单声道WAV文件,然后用Adobe Soundbooth打开:
绿色那部分是波形图(Waveform),绿线和横轴交点的密度代表频率(音调),一个周期内最高点和最低点的距离代表振幅(响度),但是这种图丢失了很多信息,我们用不上。
下半图是加上时间后的频谱图(sound spectrum),这是整个问题的关键所在。事实上,我们听到的声音里,每一小段都是由很多个不同强度和不同频率的声音(note)组成的。下半图很好地展现了这些信息,其中横坐标代表了时间,纵坐标代表频率,颜色代表强度(深色弱浅色强),图中的一个点都表示在某个时间点上某个频率的声音的强度。
从图中我们可以很清晰地看到11根由黄色和红色组成的“柱子”。相信你也猜到了,就是按那11个数字的时候产生的按键音。
接下来介绍DTMF(Dual-Tone Multifrequency),也就是双音多频。我们平常所用的电话是通过DTMF信号来向交换机传递命令的,每按下电话键盘上的一个键,就会同时发出两个不同频率的声音,转化成电流在对面解析。也就是说,每个按键音实际上是由两个纯粹的音(tone)构成的。通过下表可以看到每个数字由哪两个频率的声音构成的。
接下来就好办了。我们将400Hz到1700Hz以内的频谱图放大,然后找出浅色(强度高)的频率段:
结论出来了,周总的手机号是:1370**9**98。
1、因为只是个试验,而且为了保护隐私,就不把号码全公布出来了,某些数字的频谱区域打了马赛克,对应数字则标记为“*”。
2、因为音频的质量,开头的数字1无法从频谱图中得出,但是地球人都知道中国大陆手机号开头是1。
3、最后的“8”,因为必须由一个高音构成,虽然不明显,但是相比1477Hz和1209Hz,1366Hz最强。
4、下面的一片黄色是环境音和座机按键的机械声音造成的。发出某个频率的声音时,黄色会散布在频率线的两侧,故中间的数字“9”的低音,选择的是852Hz而不是941Hz。
怎么验证结果正不正确呢?那就更简单了:
1、查询号码归属地,的确是北京的。
2、在手机上按了一遍号码,并把它录下来了,结果完全一样。
iOS用户点此播放
3、晚上十点,打了个电话给周总。
我:“喂,您好,请问是周先生吗?”
他:“我在开会,你有事吗?”
(作者自称当时很紧张,完全不知道怎么说)
我:“抱歉我打错了。”
然后就把电话挂了。作者还调侃说,当时好纠结没有问“请问您是360的周先生吗?”
4、关键的证据:Google一下电话号码。为了防止里面的信息被用来作为关键字再Google出号码,所以打了很多马赛克。
5、作为补充,又录了一段工商银行“95588”的拨号音。因为是触摸屏按的,没有机械声音,很纯正。
其实最最关键的证据来自周总本人,今天早晨他亲自回复了“清华南都”发的微博:“这位同学确实能干,各位就不用验证了,也请大家别在晚上十一点后打电话,谁也不希望刚睡着就被突然的电话铃声惊醒吧。”
这就等于承认了:)
这位技术帝专业而精准的分析也引来了李开复的注意,邀请其加盟创新工厂,有合适的项目供其考虑,并希望两周后与其亲自见面。
同学们看见没?谁说技术宅没有前途啊?!
最后是几个友善的提醒:
1、技术再好也要用在合适的场合,不要用来做坏事,大家不是Google但也尽量不要作恶。
2、我们平常用手机拨号,或者在门禁处或者一些机器上输入密码的时候,不妨注意身旁有没有人录音。通过上面的分析大家也看出来了,除非有人在现场唱美声,否则整个输入过程是可以通过声音还原出来的。