技术宅逆天了!如何从按键音中听出周鸿祎的手机号码
By 阿囧 9条评论此文发布后,周鸿祎本人在微博上发声说:
为了睡觉,决定使用360手机卫士来电防火墙,各位打电话如果听到该号码是空号,别以为该同学算错了
从视频的第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、因为音频的质量,开头的数字1无法从频谱图中得出,但是地球人都知道中国大陆手机号开头是1;
2、最后的“8”,因为必须由一个高音构成,虽然不明显,但是相比1477Hz和1209Hz,1366Hz最强;
3、下面的一片黄色,是环境音和座机按键的机械声音造成的,当发出否个频率的声音时,黄色会散布在频率线的两侧,故中间的数字“9”的低音,选择的是852Hz而不是941Hz;
4、因为这只是个实验,所以就不把号码全公布出来了,于是将某些数字的频谱区域打了马赛克,数字标记为“*”;
怎么验证结果正不正确呢?我做了下面几个测试:
1、号码归属地:
2、我在手机上按了一遍号码,并把它录下来了,结果完全一样:
3、晚上十点,我打了个电话给他:= =
发表评论