一、前言
因为从大二开始手里的网络设备越来越多,卖的死贵的还被垄断了的校园网只能同时在线两个设备。我一个电脑两个手机一个平板还有若干的虚拟机显然不是很够用,于是开始寻找方法破解校园网。
通过在网上的查询,发现了专门做校园网路由器的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
如果你的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)
Comments NOTHING