zoukankan      html  css  js  c++  java
  • [转] Dr.com 协议

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

  • 相关阅读:
    获取指定函数的函数名称(用于兼容IE)
    opa gatekeeper笔记:AdmissionReview input.request请求对象结构
    团队内部密码共享方案:KeePassXC+微盘(企业微信)
    一个简单的golang项目,实验 gitlab-ci-cd Pipelines
    调用企业微信API拨打紧急通知电话
    使用PAM模块实现普通用户之间su免密切换
    thin_check命令 man手册
    Nginx server_name翻译
    UDP端口检查告警SHELL脚本(企业微信版机器人版)
    从零搭建vsftpd
  • 原文地址:https://www.cnblogs.com/exclm/p/1811389.html
Copyright © 2011-2022 走看看