这2个月一直在使用朋友给的一个VOIP软件打电话,这里简称P。P是他公司的一个产品,主要是面向企业用户的软件,我拿来打免费电话,十分爽。但是这两天手机上网有问题了,wap网连上只有上传数据却没有下行数据,很是恼火。因此P软件也用不成了。不过好像手机直接上网却可以,所以就想自己在手机上模拟下这个软件,方便打电话。
    昨天开始抓包,把数据分离出来。P软件使用的是UDP方式传送文本数据的形式进行通信。
MESSAGE sip:ifq.q@10.43.255.57 SIP/2.0
Via: SIP/2.0/UDP 10.43.255.57:5063;branch=z9hG4bK-2141912560877303042
Max-Forwards: 70
From: sip:app@10.43.255.57;tag=9222785866845604187
To: sip:shenjh.xc@10.43.255.57
Call-ID: ZXUP9222785866845604187@10.43.255.57
CSeq: 100 MESSAGE
Content-Type: text/plain
Content-Length: 120
<iq id="123456_APP" type="error"><query xmlns="ifq.qq:iq:auth"><error code="400">Wrong password</error></query></iq>

    起初觉得如果只是文本形式的话应该很好模拟。但是仔细看可以发现其中有几处地方并没有那么简单。tag,branch,Call-ID这些标识符应该都和认证有关。我也尝试了把从软件打开到结束的会话截取到的数据包再发过去,模拟一个客户端,就得到了上边的错误回馈。可以推测其中的认证就是通过这些标识符辅助完成的。
    没有办法只有转向另外的方法。注意到每个数据包上都有SIP的标识。于是google一下发现了另外的天地。原来这种数据格式叫SIP: Session Initiation Protocol。SIP协议是一个用于建立、更改和终止多媒体会话或呼叫的应用层协议。下边是网上找到的一篇对于一个数据包的简单解释。
  
                                                                                                                                                               
。。文章太长,贴不上来。只有重贴在文章里了。
                                                                                                                                                              
看来像模拟这个东东也并非一两下可以搞定的。万一过两天手机上网搞好了,就没有模拟P软件的需求了。。。。不过弄这个东东又了解了不少知识。抓包啊、各种 工具啊、SIP啊等等还是很有用的。仔细想想自己掌握的技术都是由一个很单纯的初衷开始学习的哦。。简单而快乐的技术者?


blog comments powered by Disqus

Published

2007-08-23

Categories


Tags