OpenWrt 使用 UA2F 绕过校园网 UA 检测全解析案例

原文约5300字,阅读约需13分钟。发表于:

该渲染由 Kami API 生成,可能存在排版问题,最佳体验请前往:https://www.miaoer.xyz/posts/network/openwrt-ua2f 鉴于有群友不会使用 CatWrt 的 UA2F 软件绕过校园网的 UA 检测,本文已对对应学校的服务商进行处理请勿滥用,本教程只演示共享校园网网络,并非破解付费系统。本文适用于所有 OpenWrt LuCI 18.06+,如果你不是 CatWrt 请放心食用。本期食用的项目是 Zxilly/UA2FUA2F 作者博客: https://learningman.top/archives/304确定网络首先介绍我们学校的校园网,有好几种类型都是分别代表不同的服务商(仅网页验证,网页+APP 验证,仅 APP 验证)我这里使用的设备是 J4105 软路由插上就发现 wan 口 DHCP 获取的 IP,并且使用电脑访问互联网会劫持弹出二维码手机 APP 端进行验证,我这里就使用小黄鸟 HttpCanary 进行中间人抓包,博主这里使用的 XiaoMi 10 解锁了 BootLoader 并且使用了 Magisk 获取了 ROOT 权限,在爱玩机工具箱里面安装了 CA 根证书模块,这里貌似可以不用 ROOT 手动安装进行中间人,没测试过。仅通过 HttpCanary 在手机中对包重发即可实现对应功能屡试不爽,把抓到的包分析一下就是:验证登录,设备列表,断开链接,这里只需要用到验证登录和设备列表进行掉线检测。脚本刚刚好我这里有 J4105 刷好了我们的 CatWrt 系统,因为 CatWrt 软件源不包括 Python3 的包我们这里还需要使用到默认的腾讯软件源,将 Python3 和 Python3-requests 都安装上,接下来就是写一个脚本没错在 OpenWrt 中重发包就用到 Python3 Requests,将抓包的内容稍微解析一下就是向后端发送以下内容,包括:Cookie,Token,手机号码,IP,学校,UA 等内容……内容闭源,脚本处理逻辑不通,仅当示例!#!/usr/bin/python3 import os import time from threading import Thread import requests …… cookie_self = { "token": "1145141919=", "catwrt": "catwrt.v23.8", } data_self_check_pc = { "uid": "114514", "school": "whu", "ip": "172.168.1.4", "token": "1145141919=", "phones": "11451419", } header_self_auth = { "Host": "api.miaoer.xyz", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36)", "Content-Type": "application/x-www-form-urlencoded", 'Connection': 'keep-alive', 'Content-Length': '114', "Accept-Encoding": "gzip", } header_self_check = { "Host": "api.miaoer.xyz", "user-agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36)", "Content-Type": "application/x-www-form-urlencoded", 'Connection': 'keep-alive', 'Content-Length': '514', "Accept-Encoding": "gzip", } def auth_router(): url_self = "http://api.miaoer.xyz/api/v2/network_auth" global auth_code_pc # post 发包 log_print("OpenWrt 正在认证喵~~") requests.encoding = 'utf-8' requests.post(url=url_self, headers=header_self_auth, data=data_self_auth_router, cookies=cookie_self) ……脚本处理完了将文件放在 /root 里,然后安装 Python3 以及 requestopkg update opkg install python3 python3-request我们把脚本加上计划任务,因为脚本可能因为意外 killed0/15 * * * 5,6 /usr/bin/python3 /root/auth.py 0/15 6-23 * * 1,2,3,4,7 /usr/bin/python3 /root/auth.py跑起来,轻松上网,但是细用发现有的 http:80 的网站是会显示停止共享网络的就需要请出 UA2F 了。 UA2F 安装因为这里已经测试没问题了,软路由要继续在家里待命,这里我淘了个 XiaoMi Redmi AC2100 进行校园网共享在 CatWrt 后就支持了 UA2F,我们这里已经是验证联网状态的,并且我们使用的软件源都是 Https:443 的,因为是加密的可以绕过 UA 检测我们先按照博客 CatWrt 扩展应用安装,全系生态通用 填入软件源拉取软件源索引文件并且安装 UA2F,假如你之前使用了腾讯源安装了 Python3 就需要 rm -f /var/lock/opkg.lock 清理掉默认腾讯源的索引文件或者重启,再将源索引填入 CatWrt 发行版软件源中再刷新列表 opkg update。opkg update opkg install ua2f示例BusyBox v1.35.0 (2022-12-09 10:18:58 UTC) built-in shell (ash) _____ _ _ | |___| |_ _ _ _ ___| |_ | --| .'| _| | | | _| _| |_____|__,|_| |_____|_| |_| W I R E L E S S F R E E D O M ================================== Catwrt - miaoer.xyz - v22.12 Lean OpenWrt source r5525-7979de9ed ================================== oroot@CatWrt:~# opkg update root@CatWrt:~# opkg update Downloading https://catwrt.eu.org/targets/ramips/mt7621/packages/Packages.gz Updated list of available packages in /var/opkg-lists/openwrt_core Downloading https://catwrt.eu.org/targets/ramips/mt7621/packages/Packages.sig Signature check passed. Downloading https://catwrt.eu.org/mipsel_24kc/base/Packages.gz Updated list of available packages in /var/opkg-lists/openwrt_base Downloading https://catwrt.eu.org/mipsel_24kc/base/Packages.sig Signature check passed. Downloading https://catwrt.eu.org/mipsel_24kc/luci/Packages.gz Updated list of available packages in /var/opkg-lists/openwrt_luci Downloading https://catwrt.eu.org/mipsel_24kc/luci/Packages.sig Signature check passed. Downloading https://catwrt.eu.org/mipsel_24kc/packages/Packages.gz Updated list of available packages in /var/opkg-lists/openwrt_packages Downloading https://catwrt.eu.org/mipsel_24kc/packages/Packages.sig Signature check passed. Downloading https://catwrt.eu.org/mipsel_24kc/routing/Packages.gz Updated list of available packages in /var/opkg-lists/openwrt_routing Downloading https://catwrt.eu.org/mipsel_24kc/routing/Packages.sig Signature check passed. Downloading https://catwrt.eu.org/mipsel_24kc/telephony/Packages.gz Updated list of available packages in /var/opkg-lists/openwrt_telephony Downloading https://catwrt.eu.org/mipsel_24kc/telephony/Packages.sig Signature check passed. root@CatWrt:~# opkg install ua2f Package ua2f (3.10-1) installed in root is up to date. root@CatWrt:~#UA2F 配置关于 UA2F 的配置可以照抄 README 的 uci command 但我这里为了开机启动就自行单独写了一个 BASH 脚本,这里我就命名为 ua.sh#!/bin/bash uci set ua2f.enabled.enabled=1 uci set ua2f.firewall.handle_fw=1 uci set ua2f.firewall.handle_tls=1 uci set ua2f.firewall.handle_mmtls=1 uci set ua2f.firewall.handle_intranet=1 uci commit ua2f service ua2f enable service ua2f start echo "Enjoy it!"然后加入启动项 - 本地启动脚本,即可完成开机自启 UA2F/sbin/mtkwifi up /usr/bin/python3 /root/auth.py /bin/bash /root/ua.sh exit 0在还没开机自启之前我们先执行一下测试 ./ua.sh 我们使用 http://ua.233996.xyz 这个网站就可以测试 UA 了可以看到已经处理了 http:80 流量变为了 FFFFF……,如果你使用的 v23.5+ 的 CatWrt 版本在软件源获取的的会替换为我的 Windows UAMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36Enjoy~ 看完了?说点什么呢

本文介绍了使用CatWrt的UA2F软件绕过校园网的UA检测的方法。作者使用J4105软路由和小黄鸟HttpCanary进行中间人抓包,通过重发包实现验证登录和设备列表进行掉线检测。作者提供了一个脚本,并安装了Python3和requests。脚本处理完后,将文件放在/root目录下,并安装Python3和request。然后将脚本加入计划任务,实现自动认证。作者还介绍了安装和配置UA2F,并提供了一个测试网站进行UA测试。

OpenWrt 使用 UA2F 绕过校园网 UA 检测全解析案例
相关推荐 去reddit讨论