一、前言

因为从大二开始手里的网络设备越来越多,卖的死贵的还被垄断了的校园网只能同时在线两个设备。我一个电脑两个手机一个平板还有若干的虚拟机显然不是很够用,于是开始寻找方法破解校园网。

通过在网上的查询,发现了专门做校园网路由器的GSWIFI,据说适配99%的学校,稳定度达到95%,缺点就是价格不是特别的美丽。咨询了一下使用这个路由器的朋友,发现都要开防检测的月卡才能使用,好嘛,订阅制服务。 于是干脆打算自己买路由器折腾一下:

二、准备材料

硬件:

一台电脑

一部可以刷OpenWrt的路由器

网线若干

一个大脑

一双手

软件:

一个SSH客户端(这里我使用Xshell)

一个FTP客户端(这里我使用XFTP)

一台装有Linux的虚拟机,要求全程科学环境,有足够的可用空间(这里我使用VMware+Ubuntu22.0.4LTS )

一个浏览器

一个文本编辑器

三、挑选路由器

 路由器没有过多要求,只要能刷Openwrt即可,我是随缘收的,最后收到了75块的新路由3:

下面是一些可以选择的选项:

四、刷入不死breed

简而言之,breed就是在你刷固件的时候留出最后一条防线,防止你刷乱把路由器刷死了。这一步不太好形容,可以根据自己的路由器型号去网上搜索教程。我的路由器拿到手已经刷好了,所以此处简单带过。

新路由3想要刷的话可以参考这篇文章:https://www.right.com.cn/forum/thread-365936-1-1.html 只做到刷入Breed即可。

五、编译OpenWRT

如果你有一点基础的话,可能会有疑惑,为什么有那么多预编译好的发行包不用,我非得自己编译(

因为我们需要用UA2F Zxilly/UA2F: Change User-Agent to F-words on OpenWRT router to prevent being detected. (github.com) 进行欺骗校园网,让他认为我使用的是一个设备从而绕过检测。

本步默认你有一定的Linux基础,如果一点都不会的话,我还是建议你去买GSWIFI。

如果你和我一样买了新路由3,可以跳过本步,前往我的github仓库下载我编译好的固件直接刷入:https://github.com/Lingluoluo/Fuck-HRBCU-Drcom

当然你也可以选择自己进行编译,添加一些自己想要的功能。

如果你打算自己进行编译的话请往下看:

1.准备工作

首先你需要有一台Linux系统的高性能机器或者云服务器,我建议使用虚拟机。

这里我使用的是Ubuntu 22.04

配置参考如下,建议根据实际情况分配虚拟机:

我们打开虚拟机,首先需要保证该机器处于完全的魔法接入互联网状态下,在此不再赘述。

2.更新软件源,下载源码

打开虚拟机,进入终端,输入:

sudo apt-get
sudo apt-get upgrade

更新一下系统

运行完成后,输入:

sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync

安装依赖,耐心等候安装完成

然后输入:

cd ~
git clone https://github.com/coolsnowwolf/lede.git

接下来再次更新软件源,依次输入

cd lede
./scripts/feeds update -a
./scripts/feeds install -a

完成后输入:

cd ..
cd lede/package
git clone https://github.com/Zxilly/UA2F.git package/UA2F

下载我们需要用到的UA2F

到这里我们需要的源码就下载完成了 然后我们需要将lede/package/libs/libnetfilter-queue 改为openwrt官方版本,网址

为: https://github.com/openwrt/packages/tree/master/libs/libnetfilter-queue

将源文件删除,下载的文件手动替换进去即可

3.开始编译

回到lede目录,输入:make menuconfig

开始编译 会出现这样的界面:

我们需要根据自己的路由器型号选择前三项,这里新路由3需要选择:

MediaTek Ralink MIPS->MT7621 based boards->NewWIFI D2

然后依次选择:


Kernel modules–>Other modules–>kmod-rkp-ipid
Network->Routing and Redirection->UA2F
Network–>Firewall–>iptables-mod-filter
Network–>Firewall–>iptables-mod-ipopt
Network–>Firewall–>iptables-mod-u32
Network–>Firewall–>iptables-mod-nfqueue
Libraries->libmnl
Libraries->libnetfilter-queue

找不到的话善用搜索功能,我们可以按键盘里的/键来搜索关键词找到这些依赖包的位置。

选择完成后我们按esc退出菜单。注意选择保存配置。 接下来输入命令:make download V=s 耐心等待一会,这里会下载一些包,一定要保证没有报错,有报错重新下载。可以重复执行几次!

随后输入

make -j(这里输入你编译想用的线程数) kernel_menuconfig

过一会会弹出来一个框框,我们依次去打开(选择):

Networking support -> 
Networking options -> 
Network packet filtering framework (Netfilter) ->  
Core Netfilter Configuration ->  
Netfilter NFNETLINK interface 
Netfilter LOG over NFNETLINK interface 
Netfilter connection tracking support 
Connection tracking netlink interface 
NFQUEUE and NFLOG integration with Connection Tracking 

选择完成后,保存退出。

(其实这里可以自定义UA,但是我没选,能看懂的可以自己尝试一下)

随后我们输入命令,开始编译:

make -j(和上面一样,线程数) V=s

耐心等待,大概一两个小时就编译完成了。

编译完成后的固件文件在:openwrt/bin/targets下面。

我们需要将固件导出,前往路由器的Breed进行刷入。刷入过程不再赘述。

六、校园网认证

首先你需要先确认你的路由器工作正常!使用网线连接电脑与路由器,能够正常进入web管理界面。

使用SSH软件连接到路由器:

输入ifconfig,查看网口信息。我们需要分辨出哪个口是wan口。可以借助上文打开的web管理界面查看。

这里我的wan口是儿eth0.2 记住这里的网口。

接下来创建一个文件,命名为Drcom.hrbcu.sh,存储到自己找着方便的地方。

输入以下内容:

#!/bin/sh /etc/rc.common
START=99
start()
{
    server="182.61.200.6";
    # 用自己的学号替换123456
    user_account="202323010001";
    # 用自己的密码替换123456
    user_password="Hsd@666666";
    # 如果你跟我一样刷的是AC2100。那么ip和mac可以不用动,如果是其他路由器,请根据自身情况修改
    # 路由器wan口ip
    wlan_user_ip=`ifconfig eth0.2|grep 'inet addr'|awk -F'[ :]' '{print $13}'`;
    # 路由器wan口mac
    wlan_user_mac=`ifconfig eth0.2|grep 'HWaddr'|awk -F'[ :]' '{print tolower($10$11$12$13$14$15)}'`;
    url="http://172.17.100.10:801/eportal/portal/login?callback=dr1003&login_method=1&user_account="$user_account"&user_password="$user_password"&wlan_user_ip="$wlan_user_ip"&wlan_user_mac="$wlan_user_mac;
    while true
    do
        ping -c 2 $server;
        if [ $? != 0 ];
        then
            login_log=$(wget $url --header="Connection: keep-alive" --header="User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 Edg/89.0.774.50" -q -O -);
            dt=`date +"%F %T"`;
            echo $dt >> /login_drcom.log;
            echo $login_log >> /login_drcom.log;
        fi
    done
}

(登录脚本来自于:https://github.com/Leiauky/Web.Drcom.Hrbcu

接下来我们通过FTP/SFTP连接到服务器:

打开/etc/init.d 把上文提到的sh文件复制进去。并且把权限修改为 777。

接下来回到SSH客户端,输入

cd /etc/init.d 
./Drcom.hrbcu.sh

执行完毕这里正常我们就已经认证完成,可以上网了,可以随便打开一个网页检测一下。

七、配置UA2F

进入SSH客户端连接到路由器:

以下内容根据自己实际情况进行使用:

# 开机自启
uci set ua2f.enabled.enabled=1 
uci commit ua2f  
# 自动配置防火墙(默认开启)(建议开启) 
uci set ua2f.firewall.handle_fw=1 
uci commit ua2f  
# 处理内网流量(默认开启),防止在访问内网服务时被检测到。(建议开启)
uci set ua2f.firewall.handle_intranet=1 
uci commit ua2f
#处理 443 端口流量(默认关闭),443 端口流量一般为加密得 https 流量,443 端口出现http 流量的概率较低(建议关闭) 
uci set ua2f.firewall.handle_tls=1 
uci commit ua2f
##第三、四条规则必须在第二条规则开启的条件下才会生效
# 处理微信的 mmtls 流量(默认关闭)(建议关闭)
uci set ua2f.firewall.handle_mmtls=1
uci commit ua2f
# 手动启动 ua2f 
uci set ua2f.enabled.enabled=1 
uci commit ua2f 
service ua2f start 
# 手动关闭 
ua2f service ua2f stop

接下来我们打开OpenWrtweb界面 网络-防火墙-自定义规则

在下面的大框框里另起一行,粘贴:

# 通过 rkp-ipid 设置 IPID
# 若没有加入 rkp-ipid 模块,此部分不需要加入
iptables -t mangle -N IPID_MOD
iptables -t mangle -A FORWARD -j IPID_MOD
iptables -t mangle -A OUTPUT -j IPID_MOD
iptables -t mangle -A IPID_MOD -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A IPID_MOD -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A IPID_MOD -d 255.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -j MARK --set-xmark 0x10/0x10
# 防时钟偏移检测
iptables -t nat -N ntp_force_local
iptables -t nat -I PREROUTING -p udp --dport 123 -j ntp_force_local
iptables -t nat -A ntp_force_local -d 0.0.0.0/8 -j RETURN
iptables -t nat -A ntp_force_local -d 127.0.0.0/8 -j RETURN
iptables -t nat -A ntp_force_local -d 192.168.0.0/16 -j RETURN
iptables -t nat -A ntp_force_local -s 192.168.0.0/16 -j DNAT --to-destination 192.168.1.1
# 通过 iptables 修改 TTL 值
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64

点击 重启防火墙

如果你没有手动启动过UA2F的话,在SSH客户端输入

service ua2f start

接下来打开http://ua.233996.xyz/

如果你的UA如下图所示,恭喜你,成功了,说明你的配置正确。

到这里的措施就已经足够对付哈商大的检测系统了。

进行测试时确保你可能使用的代理客户端没有代理 UA 测试网站,因为代理客户端会加密流量导致 UA2F 不会去修改加密请求。

如果要使用代理的话,请使用Openwrt插件,在路由器上使用代理。

八、其他配置

1.把认证脚本加入自动任务

点击系统-计划任务

输入

0 * * * * /etc/init.d/Drcom.hrbcu.sh

让路由器每个小时自动认证一次

2.进一步防检测

打开系统-系统

把主机名修改成类似于电脑的名字

把下方的NTP服务全打上勾,点击保存应用

3.配置虚拟专用网络,使得可以在校外通过虚拟专用网络访问校内网使用教务系统

鸽了,还没搭完,先占个位

最近在研究nat0打洞+wg穿透内网,还没整明白

4.去广告,网易云解锁歌曲等插件

和上面一样,鸽了

装完了,但是不稳定,找一下问题所在再来写。

5.搭建clash客户端,自动对流量进行分流

众所周知,clash是一个优秀的代理软件。OpenWrt上也有使用clash内核的代理软件。可以全局代理我们的网络流量,方便我们在各地连接到公司/学校网络进行办公。

1)搭建准备工作

首先我们去openclash的release界面下载软件包: Releases · vernesong/OpenClash (github.com)

打开后唯一的那个ipk格式就是。下载到本机备用。

然后我们在这个页面的注意事项中,找到如下内容:

复制第一个iptables的内容,使用ssh连接到你的路由器。输入以下内容:

opkg update
opkg install coreutils-nohup bash iptables dnsmasq-full curl ca-certificates ipset ip-full iptables-mod-tproxy iptables-mod-extra libcap libcap-bin ruby ruby-yaml kmod-tun kmod-inet-diag unzip luci-compat luci luci-base

一定要把这里的curl删除掉!一定要把这里的curl删除掉!一定要把这里的curl删除掉!

我们编译的系统里自带curl软件,执行升级后会提示缺少依赖报错!不要更新!我在这里踩坑了好几天,想了很多办法都没解决,最后只能选择不更新。

输入完成回车,等待依赖安装。安装完成后进入下一步。

2)安装clash以及clash内核

打开OpenWrtweb界面,依次点击系统 ->文件传输

进入后,上传我们刚刚下载的插件:

上传完成滑动到页面下方,找到我们刚刚上传的文件,点击安装:

耐心等待安装完成。安装完成后刷新页面/退出重新进入web管理页面就能看到如图所示的openclash了:

(如果没有看到的话重启路由器就能看到了,我也不知道为啥有的时候很玄学)

点击进入后,依次点击-插件设置-版本更新,进入如下界面:

首先根据处理器架构选择下方红框中的编译版本:

更新分支随意,我个人选择了dev版本。

然后根据自己的需要选择下方的内核版本:

无特殊要求选择dev即可,但是我个人推荐使用tun。点击下载并更新,耐心等待。

如果失败了,往下看:

点击内核旁边的下载到本地,解压。然后使用FTP/SFTP连接到你的服务器,把内核文件上传/etc/openclash/core目录下,把权限调整为755

然后刷新页面,你应该能够看到你的内核版本了。

3)配置配置文件

点击上方的配置订阅-添加,进入如下页面:

无特殊要求按照如图所示填写即可。然后我们点击保存,回到刚刚的界面把自动更新打开:

然后我们点击保存并应用,回到首页,滑到最底部点击:

没有意外你的clash就已经启动起来了。

如果等待半天没有反应,点击运行日志查看日志查找问题进行解决:

接下来我们就可以点击yacd控制面板,自行配置你的客户端了

注意:在中国大陆使用虚拟专用网络请遵循相关法律法规使用,不得违法搭建跨境信道。本人仅建议使用本教程所提供的软件连接到公司/学校内网进行远程办公。

九、配置WIFI

点击网络-无线

在此处修改路由器向外发射的WIFI信号:

点击基本设置可以设置WIFI SSID,密码:

十、参考内容

Zxilly/UA2F: Change User-Agent to F-words on OpenWRT router to prevent being detected. (github.com)

OpenWrt 编译与防检测部署教程 (notion.site)

校园网路由器多设备伪装指北 – Zxilly's Blog (learningman.top)

GDUF-Web认证-校园网多设备限制(主文章在这!先阅读这篇) · Issue #1 · tonytt0624/GDUF-Web (github.com)

从编译 OpenWrt 到使用 – 重理工校园网 – IYATT-yx 的博客

届ける言葉を今は育ててる
最后更新于 2024-03-21