Fetion实现

      昨天,导师突然问道怎样用PC发短信的问题,当时觉得这个问题挺有意思的,于是马上就联系到了飞信又是怎么实现的呢?呵呵~~~于是昨晚就顺便查看了点资料什么的,发现原来很多人都有关注这个问题,而且都多人自己写程序实现了飞信的客户端(ps:很是佩服)。

      星期六导师过来面试,感觉还是做点正经事比较好,那就是实现PC发短信吧,呵呵,所以,上午9点就过来了实验室。基于昨天搜集的资料,分析了一下,自己要实现这个东西,首先得了解飞信的整个发短信的过程,从登陆到发消息到手机,这个可以参考前人的经验;然后对抓包的内容进行解读,比如登录过程发送的sip消息的类型,发送短信时的sip消息结构等等,其实这个也可以参考前人的经验,当然自己抓包看看,这样可以更好的理解。

      上面两个步骤中,有一个难点就是登陆验证的实现,这里我提一下。

     

      首先向代理服务器发送一个sip消息,如果消息正确的话,服务器返回一个200 ok,并且会带一个nonce的值,以及你可以选择的加密方式,包括了MD5和SHA1。得到这个nonce的值,结合你的飞信号等信息,计算responce的值,另外还有一个cnonce的值,它是采用4个随机数的16进制字符串,进行MD5加密的结果。计算好了responce的值,你就可以再发sip消息给服务器,对你登陆进行验证了,如果服务器返回200 ok,那么你的登录过程就完成了。

 

      这里总结一下:

      对整个流程的基本熟悉,这个过程得借助抓包工具和前人的总结。而且当自己有一个飞信号的时候,这个过程其实很简单,首只要向代理服务器登录,登录成功就可以发短信了。

      发短信的过程就是通过tcp发送sip消息,消息类型是M.

你可能感兴趣的:(加密,面试,tcp,服务器,手机,工具)