聚热点 juredian

技术帝!通过按键音还原周鸿祎的手机号码

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、我们平常用手机拨号,或者在门禁处或者一些机器上输入密码的时候,不妨注意身旁有没有人录音。通过上面的分析大家也看出来了,除非有人在现场唱美声,否则整个输入过程是可以通过声音还原出来的。

搜索建议: