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个字节就是识别码。 

Logo

更多推荐