想要共享校园网, 首先就是要有一个路由器, 然后把这个路由器能连上互联网, 最后能一直使用.
从而引出两个问题:
- 连上互联网: 这个问题就是校园网认证
- 一直使用: 这个问题就是校园网防检测
校园网认证
暂时我知道有两种方式, 我觉得这个使用抓包也可以, 就完全模仿呗. 但暂时还没实验过
1. 趁他不注意
如果有线连接, 在电脑上认证成功后的一瞬间, 把网线从电脑上拔下来, 插路由器WAN口上, 路由器就可以共享了.
这种方式好像停电就失效了, 就得再趁他不注意一次. 下面的方式可以解决这个问题.
前提: 1.路由器WAN口mac地址和电脑上的网口mac地址一样 2. 路由器设置上dhcp客户端模式
2. 客户端认证
如果是锐捷可以用mentohust或者minieap, 这两个可以说是一个, 我推荐minieap, 因为mentohust作者也推荐, 缺点就是得自己会编译, 优点是自己可以交叉编译成很多架构的版本.
校园网防检测
检测方式
一共有几种检测的方式
- TTL(Time-To-Live) ipv4数据报文里面的TTL字段(学校常用)
- 原本作用: 防止数据报文在网络中无限循环, 每经过一个路由器, TTL就会减1, 当TTL为0时, 数据报文就会被丢弃. 比如traceroute命令就是通过这个字段来实现的
- 如何检测: 检查发出来的ttl是不是64, 如果是64, 说明这是一个客户端, 如果是63, 说明这个已经经过了一个路由器了, 因为减一了
- IP-ID Identification字段(基本没用)
- 原本作用:标识它们属于同一个原始数据报, 因为当一个数据报太大, 就会被分片, 这个字段会在一个数据报的所有分片中保持不变
- 如何检测:每个客户端会在每次发送数据的时候自增, 就导致如果一个设备的Identification字段有大有小, 那么就会判断出来是不同的设备
- 时间戳(基本没用)
- 原本作用: 用来记录数据报文的发送时间
- 如何检测: 检查时间戳是不是一样, 如果不一样, 就说明是不同的设备
- UA User-Agent(学校常用)
- 原本作用: 通过UA来判断这个设备是移动端还是pc端, 以不同的样式显示
- 如何检测: 一个设备的UA是不会变的, 如果UA变了, 那么就说明这个设备是不同的
- DPI Deep Packet Inspection(可能会用)
- 原本作用: 用来检测数据包的内容, 以便进行流量控制, 安全检测等
- 如何检测: 应该是GFW一样的技术, 抓特征, 比如不同qq号应该就有不同的特征, 通过这个特征来判断是不是同一个设备, 一般一个人不会登陆6个qq号吧
我抓过包分析过, 时间戳和IP-ID, 我发现这两个字段, 在一个设备上, 不一定就是单调递增的, 我感觉应该不会用这两个来分析多设备的行为. 所以这应该只存在于paper上, 实际没什么用.
如何做
可以选择openWrt在线编译来编译一个你想要的版本, 加上这些插件
|
|
把系统根据下面b站-女大佬的视频编译完, 安装到路由器或者小主机上.
然后你只要做两件事就可以了
- 修改ttl, 让ttl变成64
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64
- 详情见
- 修改UA, 让UA没有特征
- 使用uaProxy, 里面有脚本, 运行一下脚本就可以了.
如果你是单网口主机的话, 这里有一个坑, 你肯定要加usb网卡, 但这个驱动好像不太完善, 启动的时候要把网卡拿下来, 然后开启后再插上.而且如果你使用我的版本, 你还要在interface上加一个wan口, dhcp客户端类型.
参考阅读
我抓包看到的东西
注意看下面两张图的Identification字段, 按理来讲应该是单调递增的, 但是这里不是, 所以我觉得这个字段不会被用来检测多设备的行为.
- 一个是41667
- 一个是4823
这两个请求几乎就是挨着的, 但是这个字段差了10倍, 然后接下来的请求, 就又正常了.
注意看下面两张图的时间戳TimeStamps: TSval字段, 按理来讲应该是一样的, 但是这里不是, 所以我觉得这个字段不会被用来检测多设备的行为.
- 一个是3896826524
- 一个是2499352844
注意看请求号, 是增大的, 但时间是变小的, 所以时间还能往回走? 所以这个字段不会被用来检测多设备的行为.