/HuiHuBuTong

慧湖不通-文星宿舍宽带网络跨平台解决方案

GNU General Public License v3.0GPL-3.0

慧湖不通

文星宿舍宽带网络反检测方案

Related: 慧湖通 文星 HuiHuTong

1. UPDATE 信息更新

2024/10/29: 更新反检测方式

2024/10/20: 确定有白名单机制,可配合使用白名单账号+自动登录绕过检测,不再依赖软路由

2024/10/11: 有同学分享了12345、工信部投诉等内容,见issue区,物业科服公司反映对此事完全不知情,若属实会对运行商展开调查

2024/10/2: 确认后续除文缘外,相同的检测模式会同步文萃文荟宿舍区,时间未知。

2024/9/6: 物业通知本日12-13:00因施工原因临时断网,实际疑似进行检测策略更新,更新后用于监测的证书指纹如下所示(注: 除锐捷外一共有多个证书,每次更新检测方式时证书相应更新,可通过证书指纹的变更推断更新时间)

CN(Common Name): ruijie
0(Organization): Ruijie
OU(Organizational Unit): SEC
L(Locality): Fuzhou
C(Country): CN
ST(State or Province): Fujian
Sha2_Fpr: F6 24 41 E7 A3 06 E7 A9 28 A0 FB 5E 52 87 71 DE E5 A3 B8 78 84 3D 8E 65 0A 79 12 F2 FA 44 A1 BE
Sha1_Fpr: 67 13 61 FF D2 B3 72 3B 0E 5D BD DC 46 46 B2 46CF EB CD 5B
NotBefore: 2018/1/19
NotAfter: 2045/6/6

2024/9/5: 一站式:物业与相关营业厅从未将文星网络"升级"一事告知学校,学校对此不知情,鼓励进行12315举报,此为官方非正式的回复

2024/9/3: 营业厅运维说至少有两个检测方案,其中一个已经确定是锐捷,另一个高度疑似Drcom;另有深度包检测功能,但没提及是否已经开启;后续有能力随时换检测&封禁手段,未知真伪。

2024/9/3: 确认文星为试点区域,检测手段后续会同步至文缘,时间未知。

2024/9/3: 已确认文星不同区域的检测手段和策略不同,可能与设置以及负载有关。

2024/9/2: 文星已经全量上线密码登录,如登陆时仍只能扫码,请重启光猫。

2. FAQ 常见问题

Q1. 能在文缘/文萃/文荟使用吗

文缘检测方式极为简单,不需要使用这里面的内容,除非后续更新到了和文星一样的检测方式。

Q2. 需要单独购买硬件吗?

不用也不建议,本项目的目标就是在不额外购买设备/宽带的前提下正常使用网络。在所有的开发完成后,只需要一个普通路由器即可。

但有其他的需求(如pt,私人dns,代理等) 建议使用软路由。

Q3. 是否收费

开源,免费,但不保证更新时间,影响到叔叔赚钱就隐藏仓库和下载链接

Note: 2023年底部分营业厅就对周边学校网络"升级"一事进行了可行性分析,考虑到附近某高校学生较为团结,可能会组团举报,因此最终只对XJTLU以及百年职业技术学院学生所在宿舍区进行了改造。

如果你对本项目感兴趣或者有相关能力,欢迎加入,也希望各位不要收费

3. 开发计划

11月底前、考试周以及毕业后不会保证开发进度

Platform 计划开发 开发中 已完成 已测试
自动登录
部署在软路由上的反检测方式
部署在端侧(Windows&Linux)的反检测方式
基于白名单账号+ARP欺骗的反检测方式

4. 检测与限制原理

推测由锐捷提供鉴权与拦截服务,至少还有一个系统参与了流量特征检查。以下是已知的检测类型

  • MAC地址检测

​ MAC地址检测用于限制同时连接设备的数量,一个账号下最多允许三台在线设备。

​ 使用网线连接时,每个适配器均参与连接设备MAC地址计算。

​ 使用路由器时,光猫收到的以太网帧相关地址字段均为路由器的MAC地址,对外仅显示单个设备连接

  • UA检测

​ 2024/9/2日后确认全量部署了UA检测,UA检测不仅能用于限制同时连接设备的数量,还能探测是否使用了路由器。

​ 同一个设备发出的UA大致相同,若侦测到的UA类型数量大于MAC地址数量,则说明子网中存在路由器(或热点),因此进行阻断。

出口处设置代理统一修改UA与MAC即可

  • TTL检测

​ TTL检测也用于定位路由器,数据报的TTL字段在发送后经过每个路由器时会减1,当收到的TTL!=设定值则重定向到blacklist.php进行阻断

​ 宿舍使用路由器(非AP模式)后,packet的TTL字段在离开本机网络适配器后会-1,在经过路由器后再次-1,在光猫端检测时小于设定值,因此拦截。

​ 一些代理与游戏加速器软件会在部分系统中会创建虚拟适配器,经过改软件的流量在系统内部已经对packet的TTL字段进行了修改,因此在正常连接的情况下也会被阻断。

在流量出口处将所有packet的TTL设为128(或较大的数)即可规避检测。注意不要设置TTL不变,因为内部网络可能有多个子网,例如使用加速器的情况下仍会被检测。

  • IP检测

​ IP检测用于防止使用路由器,且部署在前端。

​ 进行密码或扫码认证时,web端将首先检查本机的IP是否位于本楼层所属DHCP池中,若不在,则弹窗提示并退出。

​ 已知目前只有桌面端部署了该检测,移动页面模式下不含该代码。由于检测路径位于浏览器中。可简单的通过开发者模式删除该流程或使用自动登录来绕过。

  • 特征检测

​ 非常传统的检测方式

​ 在"升级"前文星宿舍区已至少进行了1年的p2p流量特征检测,已知封禁策略与宿舍的物理位置和运营商都有关(疑似部分楼层不限速,可能是忘了设置),建议对该类流量 进行代理或做转发

  • 名单检测

​ 非常传统的检测方式

​ 若目标IP地址在黑名单中,直接阻断,暂不清楚是否有白名单机制

  • DNS检测

​ 在"升级"前文星部分楼层已至少进行了1年DNS劫持,不过不明显。"升级"后似乎未启用该检测

  • 深度包检测

​ 文星的锐捷设备支持深度包检测,高度怀疑未启用。

​ 深度包检测主要阻断代理流量,深度包检测的开销较大,按照惯例,目标ip归属地是重要检测依据,为提升检测效率,该系统可能直接放行目的IP为内地的流量(因为代理的终点一半都在海外)

可以多设置一层中转代理来解决

6. 自动登录

慧湖通使用微信二维码或密码进行鉴权,为经过修改的锐捷认证系统,认证服务器为10.10.16.101:8080/

Dustella 的 Huihutong-Portal-Login 实现了无人值守的,针对微信扫码 OAuth 的自动登录。第一次使用需要抓包获得 OpenID,之后每次登录不再需要扫码。

7. 路由侧反检测方案

image-20240831205021408

需要一台能运行OpenWRT的软路由,启用Route模式

  • 使用ShellClash代理所有流量
  • 使用UA3F修改所有下游设备UA为同一值
  • 使用自动登录脚本确保超时后自动重连
  • 修改TTL为固定值

已完成对RT-N56UB1-newifi3D2-512M的完整适配,如果你有该设备可直接导入备份的固件,无需任何其他操作

  • 账号为root,密码为huihubutong
  • 建议使用Breed进行固件更新,MAC地址在Breed内修改(使用EEPROM-方案为公版,勿使用其他版本)

todo: 增加详细教程

8. 端侧白名单/ARP反检测

image-20240831213521544

不修改流量特征,而是直接绕过账号检测

使用普通路由器AP模式,不需要额外的软路由设备,直接运行在端侧设备上,需要python/java运行环境,这是后续开发的方向。

todo: 加说明

9. 慧湖通门卡加密原理&主密钥&复制方式

最近收到许多关于门卡相关的求助,加上有些同学高价提供复制服务,因此这里直接提供免费方案

原理

所有门卡使用SAK08即M1卡,分为半加密卡,无漏洞全加密卡两种,具体使用哪种与所在宿舍区楼层有关

每张卡有16个扇区,每个扇区包含4Block,共计64个Block。每个数据块的大小为16字节,总容量为1KB(64块 * 16字节 = 1024字节)。 每个扇区的4个数据块分为数据块和控制块,前3个数据块(即Block 0、1、2)用于存储数据,最后一个数据块(Block 3)为控制块,控制块中的前6字节为密钥A,中间4字节是访问控制字段,设置扇区内数据块的操作权限,最后6字节为密钥B。

其中0扇区的数据用于鉴权,若想复制,需先对M1卡进行扇区解密,得到里面的数据,接着把数据写入新卡或设备(例如手环/手机)

对于半加密卡,已经有成熟的攻击方式,可以利用漏洞在短时间内算出密钥;无漏洞全加卡复制非常麻烦,但是宿舍区使用了完全相同的主密钥,因此直接使用下面已经算出的密钥尝试解卡复制即可

密钥

一般使用A密钥0+默认B密钥即可

A密钥0 - 199404281970

A密钥1 - 6E7747394E63
A密钥2 - 314F495254FF
A密钥3 - 763958704B78
A密钥4 - 7D6E7AF43C97
A密钥5 - 8CCA8F62A551
A密钥6 - 22BDACF5A33F
A密钥7 - 88DDC24E1671

B密钥 - FFFFFFFFFFFF

复制方式

  1. 淘宝搜索CUID卡,很便宜,买1-2张
  2. 增加密钥文件,导入上面的密钥
  3. 点击已知密钥解卡,把门卡放在NFC感应区,解卡完成后保存数据
  4. 导入刚刚保存的数据,写入新卡/手环

特殊payload

payload的值决定时此时刷卡的行为,是正常开门,还是无视权限开门/禁用刷卡开门

  1. type1-正常开门

    • 读取到0扇区数据位0-7字节偏移的内容以及本地保存的数据一致,标志位为99
    • 鉴权成功,开门,这是最常用的使用场景
  2. type2-重新发卡

    • 读取到0扇区数据位0-7字节偏移的内容以及本地保存的数据一致,标志位为01
    • 使用0扇区数据位8-16字节偏移的内容更新本地保存的数据,旧卡作废
    • 这是掉卡后物业让你换新卡时的算法,可以用这个方法给自己发卡
  3. type3-无视权限认证

    • 密钥有效,且标志位为特定值,门禁检测到后不读取本地内容,直接开门
    • 物业卡,这里不提供具体的密钥和payload字段
  4. type4-block

    • 标志位为AA,0扇区数据位为03 59 FD 06 73 58 E4 90 ?
    • 禁用所有卡认证,包括物业卡在内的所有卡无法开门

10. 声明

本项目提到的所有内容与XJTLU&/慧湖通&/淘宝/纸条上的付费解锁无关

不包含单线多拨或VPN等可能存在安全隐患的代码

不用于盈利,未来也不会计划盈利,其余见开源协议