cstar

eli's docs

   :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Dr.com是城市热点公司开发的宽带计费系统,在全国高校,企业,zhengfu机关广泛使用,不知道害了国内多少人,好好的上网不能一拖多! 

 

sourceforge上有一个DrCom项目,以GPL协议发布,它包括window平台下的版本drcom-client-win32和Linux下的版本drcomsuite,它的主页地址是:http://sourceforge.net/projects/drcom-client,下载后看了一下,实际上协议破解了大部分,还有部分协议细节没有破解出来,我本地抓包来对比代码分析了一下,协议破解有少量错误(至少与我使用的DrCom接入不符)。 


这里我结合这个项目的代码以及以前我的一些分析,大概介绍一下DrCom的原理

1. 协议基于UDP

2. 客户端协议流程:login、logout、change-password,login后有keepalive

3. 协议核心:通过与服务器交互,获取一个16字节的隧道识别码 UDP:客户端发送的每个UDP报文,在UDP头与UDP载荷之间都插入这个隧道识别码 TCP:正常的TCP三路握手后,TCP状态机处于连接建立状态时,客户端发送的每个TCP报文,在TCP头与TCP载荷之间都插入这个隧道识别码。 每次登陆后,识别码不变。 通过这个识别码,如果通过NAT一拖多上网,未安装DrCom客户端的PC发送的报文是不携带这个识别码的,运营商的接入网关就会丢弃这些报文,从而实现限制一拖多! 


那如何不需要破解协议并且可以绕过它呢?如下图所示 服务器PC上使用NAT(比如sygate),使用原版DrCom客户端(黑色字体标识)客户机PC上使用自制的DrCom客户端(红色字体标识),不需要破解协议,只需要给UDP/TCP头后面加识别码即可,这样客户机的报文就携带了识别码,经过服务器PC上NAT转换就可以上网了,运营商也发现不了:)那如何得到识别码呢?呵呵,用正版DrCom客户端登陆后,抓报文,随便访问一个网页,TCP头后面16个字节就是识别码。

 

posted on 2010-08-28 20:51  exclm  阅读(1328)  评论(0编辑  收藏  举报