校园网路由器

前言

实现路由器自动认证广大校园网。

基本步骤

  1. 刷入 Breed
  2. 刷入 Openwrt 系统
  3. 装入 MiniEAP 插件
  4. 配置路由器

刷入Breed

简要

为了防止刷入 Openwrt 失败导致路由器变砖,我们需要先刷入 Breed (不死鸟)。因为有些官方升级固件自带 bootloader(引导加载程序),如果从官方固件升级,会导致现有 bootloader 被覆盖。而当 Breed 更新固件时,它会自动删除固件附带的 bootloader(引导加载程序),从而可以防止 Breed 被覆盖。

刷入 Breed 之前我们可以先将几个重要的 bin 文件(all、bootloader、eeprom)保存,保留路由器原来的系统(如果需要保留的话),一般能够刷机的路由器网上资料都很多,这里我就没有进行保存了。

注意:你需要有一台能够刷机的路由器,请自行到网上查询你的路由器是否能刷机

方法

刷入 Breed 一般有两种方法,一种是 telnet 方法,另一种是 ssh 方法。主要就是通过 PC 端远程控制路由器内部的文件。Breed 常用平台有 MT7620平台、MT7621平台、MT7688平台。路由器常见的芯片有 MT7620、MT7621、MT76x8等,是联发科技(MediaTek)生产的芯片,通常用于无线路由器和嵌入式设备中。

用一根网线将路由器的一个 LAN 口和电脑网线接口连接起来(WAN可不连),接着查看你的路由器 IP 地址(默认网关),然后通过远程连接你的路由器访问内部文件刷入 Breed,由于不同路由器进行内部访问的方法各不相同,本人也没找到一种适用全设备的通用方法,以下方法分布针对斐讯 K2 和小米 4C。

  • 斐讯 K2

这里踩了好多坑,可能是不同版本的原因;最后采用了斐讯K1、K2、K2P 刷机、刷入Breed 辅助工具 | tb (tbvv.net)这个文章的提供的刷机工具,成功刷入 Breed。

采坑记录

  1. 一开始采用斐讯K2刷不死breed与第三方固件教程 - 法号阿兴 - 博客园 (cnblogs.com)这篇文章提供的工具进行一键刷机,但是中途出现了开启路由器 Telnet 服务失败,于是网上寻找开启路由器服务的方法;
  2. 采用了斐讯K1K2新版固件v22.4.xx.xx简单刷机教程 - 网络技术 - 蛐蛐工作室 (qqgzs.com)该文章提供的方法——修改 HTML 成功开启路由器 Telnet 服务。
  3. 开启完之后,继续采用路由器刷机工具刷机,又出现了上传固件失败。
  4. 网上查询没找到解决方法所以最终采用了斐讯K1、K2、K2P 刷机、刷入Breed 辅助工具 | tb (tbvv.net)这个文章的提供的刷机工具,成功刷入 Breed。

还有一种更麻烦的方法就是开启路由器的 Telnet 服务,然后对路由器的内部进行操作;开启路由器 Telnet 服务也有多种方法,网上有提供了多种工具,本人测试过发现没什么用,可能是路由器不同版本的问题。最后

  • 小米 4C

采坑记录

  1. 采用斐讯K2刷不死breed与第三方固件教程 - 法号阿兴 - 博客园 (cnblogs.com)这个工具应该是行得通的,本人没试过。
  2. 采用小米路由器4C刷机教程(openwrt) - 简书 (jianshu.com)这篇文章能够正常刷入 Breed,但是我手动备份的 eeprom 文件大小有问题,在网上找到了别人备份成功的文件。

刷入第三方固件

这里采用 Openwrt 官方原生固件

进入 Breed 控制台方法

此时的连接方式不变,路由器的 WAN 口最好先拔掉。拔掉路由器供电线后,长按路由器 RESET 按钮 5 秒左右(手不要松开按钮),这时给路由器通电,等待 5 秒后松开 RESET 按钮,浏览器输入 192.168.1.1 ,即可看见 Breed 控制台。

K2 刷入固件

(闪存布局: K2 大部分固件是 0x50000,官方 V22.5.XX.XX 以后的固件选 0xA0000,固件无法做到统一,如果不启动就换另一种布局重刷)。

img

然后刷入系统固件,一般是先刷入kernel.bin,后再刷入 sysupgrade.bin (如果有 kernel.bin 话)。

刷入固件之后等待路由器重启即可。

注意:不同固件的路由器的 IP 地址一般不一样,建议刷完固件后查看以下 IP 地址先。

xiaomi4C 刷入固件

由于 xiaomi4C 的官方 Openwrt 固件 kernel 的内存地址不相同,而刷入的 Breed 版本都是通用的,图形界面上也能修改的位置有限,没有对此进行适配,因此我们需要通过 telnet 服务对路由器进行手动刷入固件。

具体实现方法参考这篇文章:小米路由器4C刷openwrt | BBSD丿草丶帽的个人博客 (luhawxem.com)

编译 MiniEAP

MiniEAP 是一个用于在无线局域网(Wi-Fi)上进行身份验证和接入控制的小型开源项目。它通常用于一些高校和公共场所的Wi-Fi网络,以提供用户身份认证和访问控制。MiniEAP 的主要功能包括:

  1. 身份认证:MiniEAP 可以帮助用户在连接到 Wi-Fi 网络之前进行身份认证。用户通常需要输入用户名和密码等凭据,以验证其身份。
  2. 接入控制:一旦用户成功进行身份认证,MiniEAP 可以控制其对Wi-Fi网络的访问权限。这可以包括访问时间限制、流量控制等。
  3. 兼容性:MiniEAP 通常兼容多种Wi-Fi网络和认证方式,包括EAP-TTLS、EAP-PEAP、EAP-MSCHAPv2等。这使其适用于不同类型的Wi-Fi网络。
  4. 开源:MiniEAP 是一个开源项目,这意味着开发人员可以查看其源代码,进行定制和改进,以适应不同的网络需求。

这里我们为了让路由器能够代替我们手动认证特定的校园网,采用了带有 GZHU 字段的 MiniEAP

如果你的路由器芯片为:MT7620、MT7621、MT76x8 之一的话,本文提供了编译好的相对应的 MiniEAP 插件。

这一步相对比较麻烦,需要在 Linux 系统上进行操作,下面以 MT7620 为例。

安装相关依赖库和 C 编译环境

1
2
3
sudo apt-get update
sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip gawk subversion mercurial
sudo apt-get install ccache

下载相对应的 SDK

SDK(Software Development Kit)的缩写,即软件开发工具包,它是一组软件工具和库,开发人员使用它们来为特定平台、硬件或软件框架创建应用程序。

首先你不仅要知道你的路由器的芯片还要知道其对应的 CPU 架构,上述提到的三种芯片都是 Ramips 架构(基于 MIPS 架构),然后到OpenWrt Downloads下载对应的 SDK,这里我采用了19.07.07版本。
image-20230909190651772

这里采用 wget 的方法

1
2
3
mkdir router_openwrt	# 创建文件夹
cd ./router_openwrt
wget https://archive.openwrt.org/releases/19.07.7/targets/ramips/mt7620/openwrt-sdk-19.07.7-ramips-mt7620_gcc-7.5.0_musl.Linux-x86_64.tar.xz # 下载sdk包

解压SDK

1
2
tar xvf openwrt-sdk-19.07.7-ramips-mt7620_gcc-7.5.0_musl.Linux-x86_64.tar.xz  #解压sdk
cd ./openwrt-sdk-19.07.7-ramips-mt7620_gcc-7.5.0_musl.Linux-x86_64 # cd /path/to/your/sdk

克隆代码

1
git clone https://github.com/ysc3839/openwrt-minieap.git -b gzhu package/minieap # -b 选择对应的分支

选择编译的包

1
make menuconfig

image-20230909201014959

image-20230909201130690

空格改变状态,改为 <*> ,然后 Save 之后 Exit。

开始编译

1
make package/minieap/compile V=s	# make /软件包/complie V=s 编译makefile文件并输出调试信息

编译成功后会在 SDK 目录下的bin/packages/mipsel_24kc/base下生成一个minieap-gzhu_0.92.1-4_mipsel_24kc.ipk文件

image-20230909201917941

编译 luci-proto-minieap

  • 回到原来的 SDK 目录下
1
cd /path/to/your/sdk		
  • 安装 luci feed (便于操作 MiniEAP)
1
2
./scripts/feeds update luci
./scripts/feeds install -a
  • 克隆代码
1
git clone https://github.com/ysc3839/luci-proto-minieap.git package/luci-proto-minieap
  • 选择要编译的包
1
make menuconfig # 选择# 依次选择 "LuCI" "Protocols" "luci-proto-minieap" "save" "OK" 然后一直"Exit"回到控制台

image-20230909205358275

image-20230909205425154

image-20230909215154975

空格改变状态,改为 <*> ,然后 Save 之后 Exit。

  • 开始编译
1
make package/luci-proto-minieap/compile V=s	# make /软件包/complie V=s 编译makefile文件并输出调试信息

编译成功后即可在同样的位置看到多出两个 ipk 文件。

image-20230910120055425

接下来你只需要先保存好这三个 ipk 文件即可。

遇到的问题

在安装 luci feed 的时候你可能会遇到 openwrt 镜像源太差了,下载慢或者下载一半就失败的问题,你可以打开通过修改 feeds.conf.default文件来进行加速。

1
sudo vim feeds.conf.defalut	# feeds.conf.defalut 在 sdk 目录下

image-20230909211650765

我们这里只需要修改 luci 相关的包即可。将 https://git.openwrt.org/project/luci.git一串字符串 改为 https://gitee.com/harvey520/luci.git

openwrt 镜像源差?下载无速度?下载依赖库总失败?openwrt编译很慢?openwrt如何加快编译速度?openwrt编译慢原因及解决办法_openwrt下载出错_Harvey66的博客-CSDN博客

另外当你改完源之后,可能会出现 remote:Unauthorized fatal: Authentication failed for ... 这个问题,你可以参考这篇文章。我最后是直接将库 fork 到自己的库然后再进行操作。

配置路由器

注意:此时路由器的 WAN 口不要接校园网的网线,只需要用一根网线将路由器的一个 LAN 口连接电脑网线接口。

安装 MiniEAP

  • 输入路由器管理地址,初始密码一般为 password
  • 点击 Upload Package 按照顺序将编译好的 ipk 文件依次上传安装。

image-20230910125019187

  • 重启系统

使用MiniEAP

  • 检查 WAN Proticol是否为 DHCP client

image-20230910131310964

  • 添加接口

image-20230910130627216

image-20230910130815241

  • 输入账号和密码,Packet plugins 设为 rjv3

image-20230910130855775

  • DHCP 方式设置为 Disable之外的方式

image-20230910131113838

其他东西基本默认即可,配置完完成之后重启路由器,然后将校园网网线插入路由器 WAN 口即可。

总结

通过此次的折腾,成功将路由器刷入了 Openwrt 系统、编译并安装 MiniEAP 插件,实现了路由器自动认证校园网。就是每天时不时会掉线几次,有时还挺烦的,但是能够免去手动认证校园网并开启电脑热点等步骤,个人觉得功大于弊吧。

从中也学到了很多知识,诸如路由器网络基本配置,查找和解决一些网络异常问题、Linux 一些命令行的使用、简单的交叉编译流程等等。

参考与致谢

斐讯K1、K2、K2P 刷机、刷入Breed 辅助工具 | tb (tbvv.net)

斐讯K2刷不死breed与第三方固件教程 - 法号阿兴 - 博客园 (cnblogs.com)

斐讯K1K2新版固件v22.4.xx.xx简单刷机教程 - 网络技术 - 蛐蛐工作室 (qqgzs.com)

斐讯K2刷不死breed与第三方固件教程 - 法号阿兴 - 博客园 (cnblogs.com)

小米路由器4C刷机教程(openwrt) - 简书 (jianshu.com)

官方原生固件

ysc3839 (Richard Yu) (github.com)

小米路由器4C刷openwrt | BBSD丿草丶帽的个人博客 (luhawxem.com)

[Tech] 校园网路由器 (hanriri.com)

动手编译适合自己路由器的 ipk | 雪山深处 (talaxy.site)

OpenWrt Downloads

openwrt 镜像源差?下载无速度?下载依赖库总失败?openwrt编译很慢?openwrt如何加快编译速度?openwrt编译慢原因及解决办法_openwrt下载出错_Harvey66的博客-CSDN博客