致敬mentohust,路由器使用Socket认证华科校园网


前言:

上一篇文章中,为了解决ESP32华科无线网认证的问题,我成功把网页认证机制用Python+Socket复现。但痛点依然存在,无线网连接数量有限、公用路由可操作性低、有线网口少这些问题只有通过引入路由器才能解决。

我手上有两台洋垃圾网件R6300v2,均刷有梅林固件380.70。折腾它们是为了实现路由器自动校园网认证并提供稳定的网络,为越来越多的联网设备以及后面的项目做准备。

前后两篇文章都是对mentohust开发前辈的致敬,虽然技术层次远不及前辈大佬,只是希望能传递一些精神。本文所用到的一些程序以及华科校园网认证的具体情况在登录华科校园网,我用Socket里有详细描述。不熟悉mentohust软件的朋友可以先浏览文末致敬部分。

目录:

文章目录

  • 致敬mentohust,路由器使用Socket认证华科校园网
    • 前言:
    • 目录:
    • 条件分析
      • 有线认证
      • 路由器平台
      • 方案选取
    • 方案实施
      • 交叉编译工具链与环境
      • 认证程序的C语言实现与调试
      • 实际部署
    • 致敬mentohust
    • 后记

条件分析


有线认证

首先要了解的就是校园网有线认证的可能途径,才好有的放矢。下面是学校网络中心官网截图:

可以看出,在学生区的有线网络仅允许使用认证程序,也就是锐捷认证客户端进行认证。于是在理论准备的时候,我的想法是把mentohust部署到R6300v2上进行锐捷认证,也在网上找到了几篇来自哈工大、浙江理工的同学的文章,甚至联系到一位华科研究生学长,他几个月前将mentohust部署到了小米AC1200路由器上,充分证明了方案的可行性。

在实际使用中我发现,接入有线网络后竟然也会弹出Web认证页面,也就是说虽然在上图中没有标出,但Web认证在学生区是完全可行的。后来,我也通过电话向学校网络中心确认了这种方式将会长期存在。

如上图所示结构,当PC1连接到路由器时,自动弹出认证网页。认证完成后,会显示有路由器PC1两个设备占用了校园网在线名额。此时其他设备比如PC2再连接到路由器也可以获得网络连接,并且不会占用校园网名额。

问题在于,如果PC1断开连接或者主动下线,路由器也随之下线,其他设备自然失去网络连接。所以,进行认证的设备必须时刻在线,而且要具有重连功能以应对突发情况。

路由器平台

如上图,两台R6300v2都已经刷入梅林380.70,右边的一台加装了散热风扇。本次仅用到一台路由器,至于为什么会有两台,那就是另一个有趣的故事了。

R6300v2主要参数如下:

CPU:博通BCM4708 双核800MHz Cortex-A9

内存:256MB

系统:梅林380.70 Linux 2.6

可以说是可玩性非常高了,在网上看到有人为R6300v2编译了Python 2,这样一来之前写的Python版本认证不就可以直接拿来用了吗?但是出于稳定与效率的考虑,并没有继续使用Python。

方案选取

综合有线网络认证与路由器的软硬件情况,思前想后有这么几种方案:

  1. 额外的设备连接到路由器负责登录,这个设备要保持随时在线,比如ESP32,还有树莓派、香橙派等SBC。要具备网络接口能力。
  2. 路由器运行mentohust进行锐捷认证,也是大多数教程的做法。
  3. 将之前的Socket认证程序移植到路由器端,通过Socket进行认证。

不难得出,方案一是曲线救国的下策。对比二和三,方案三由于Socket登录完全自主,会比方案二使用mentohust更加易于调试。但方案三需要把之前Python程序改写成C并为路由器交叉编译,然而这款十年前的32位处理器,资料相当少,交叉编译环境搭建十分费力,具体在后面也会提到。

综上,方案二三我都进行了尝试。部署mentohust之后无法找到认证服务器,我没有在这上面花费太长时间,毕竟mentohust由于认证的复杂程度高所以很难满足稳定这一要求,我就将重点放到方案三上去,也就是:

使用C语言重写Socket认证程序,并为R6300v2平台编译

方案实施


交叉编译工具链与环境

虽然BCM4708本身性能已经与不少单板计算机(树莓派)相差无几,但由于系统缺失了许多构建工具,一般选用上位机交叉编译的方法为其产生可执行程序。交叉编译就需要用到BCM4708这款芯片的工具链以及相应环境,困难在于这款芯片比较古老,需要的工具链和环境在2021年算是比较少见,可考资料寥寥,加之我经验浅薄,在环境搭建上花了不少时间。

我使用的工具链来自:https://github.com/RMerl/am-toolchains,其中的BCM-SDK版本适合于BCM4708。

拿到工具链,我先是在搭载 Ubuntu 20.04 64位的云服务器上尝试使用未果。由于需要32位的运行库,于是在虚拟机中安装了Ubuntu 12.04 32位版,然而12.04发行版的各种支持都已经结束。只能又换为Ubuntu最后一个支持32位的长期维护版16.04。

上位机系统找好,添加了工具链及其动态链接库后,运行arm-linux-gcc hello_world.c得到了a.out,用scp放到路由器上运行,成功打印出了hello world。证明交叉编译环境搭建成功。

认证程序的C语言实现与调试

上一篇文章登录华科校园网,我用Socket中,咱们用Python控制Socket模拟浏览器进行认证,这一次只需要用C完全复现即可。不得不说,还是Python好用。同样这次的代码也并入了之前的GitHub仓库。

编码的过程并不让人享受,在Windows下编辑,在CentOS虚拟机下编译测试,Ubuntu虚拟机下交叉编译,再传输到目标机。期间使用GitHub进行同步需要使用全局代理加速,测试为了连接校内认证服务器又需要关闭代理。总而言之,折腾

实际部署

有了登录的可执行文件,只需要在上电开机以及固定时间自动执行即可。

梅林固件虽然是基于Linux,仍有非常多与常用发行版不一样的地方,下面是我的一种部署方法:

使用crontab定时调用,以及开机自动执行的脚本/jffs/scripts/nat-start

#在/jffs/下建立一个文件夹,我起名叫login_by_socket,把编译好的程序(a.out)放到login_by_socket下
#并在login_by_socket下建立一个文本文件crontab_table,内容为:
#*/30 * * * * date >> /jffs/login_by_socket/log;/jffs/login_by_socket/a.out >> /jffs/login_by_socket/log
#意为每隔30分钟自动尝试认证
#再向/jffs/scripts/nat-start添加两句话:
#/jffs/login_by_socket/a.out
#crontab /jffs/login_by_socket/crontab_table
#总结为如下:chmod a+w /jffs
mkdir /jffs/login_by_socket
#需要手动将a.out放到这里来
echo '*/30 * * * * date >> /jffs/login_by_socket/log;/jffs/login_by_socket/a.out >> /jffs/login_by_socket/log' > /jffs/crontab_table
echo '/jffs/login_by_socket/a.out' >> /jffs/scripts/nat-start
echo 'crontab /jffs/login_by_socket/crontab_table' >> /jffs/scripts/nat-start
#以上这些只需要执行一次,所有的日志可以在/jffs/login_by_socket/log中找到

显然还可以进一步优化,来提高认证的精准度,比如可以主动判断是否连接来尽量减少掉线时间。

致敬mentohust


十多年前,华科的几位前辈开发了一个开源项目,它可以模拟锐捷认证客户端进行上网认证,叫做mentohust。由于其开放源码特性,故可以被编译到各种平台上运行(路由器)。锐捷认证是华科也是很多高校选用的认证方式,因此mentohust也被无数学校的学生进行移植,修改,运用,直到今天。

我探索校园网的认证途径,除了自己的需求以外,也是被前辈这样的精神感召。虽然在技术难度上远不及前辈,亦是想尽一份力,发一点光,正如图片中mentohust化用的华科校训:人到华中大,有甜亦有辣。明德厚学地,求实创新家。

后记


返校后开始着手去做,由于水平一般,实打实地肝了两天才把所有都弄完,又用了一天时间来写这篇文章。其中向学校网络中心咨询时那边的老师问了我的学号,我心里咯噔一下想这怕不是要办我,后来老师叫我不要多想

致敬mentohust,路由器使用Socket认证华科校园网相关推荐

  1. 登录华科校园网,我用Socket

    登录华科校园网,我用Socket 导语: 找一个华科学生问一问,学校的网络怎么样?得到的大多数是负面回答.其实不论是从覆盖区域.网络稳定性.还是速度来说,华科做的都还是可以的(24:00断网除外).可 ...

  2. 抓包分析,一条Linux命令实现路由器自动登录深大校园网认证(Drcom Pt版)

    先说结论,通过抓包分析简化最后可以得出,其登录过程只是一个简单的向服务器发送HTTP GET请求或HTTP POST请求.只要在路由器启动之后自动发送一段 HTTP 请求,即可实现自动登录. 对于 G ...

  3. centos下华科校园网认证

    原文:centos下华科校园网认证 centos系统以稳定著称,适合服务器应用.之前测试一直用ubuntu,然而安装flashcache时候似乎有点问题,折腾了很久(当然,也有其他折腾的事情),忍无可 ...

  4. 魔豆路由器802.1x认证(中山大学东校区)

    魔豆路由器802.1x认证(中山大学东校区) 最近更新:2015-04-25 时间过去了这么久,魔豆系统都已经更新了好多版了,据不完全统计,原先的应用sysu_802_1x不支持1.0以后的系统版本, ...

  5. CCNA必会知识点:路由器PAP单向认证怎么配置?

    微思讲师手把手视频教学:路由器PAP单向认证怎么配置?https://www.zhihu.com/zvideo/1467146404610744320 实验目的 1. 理解PAP认证的原理 2. 掌握 ...

  6. linux 认证 转发,一种基于Linux系统实现路由器的portal认证报文转发方法和装置

    主权项: 1.一种基于Linux系统实现路由器的portal认证报文转发方法,其特征在于,在Linux系统上创建虚拟网卡,为虚拟网卡配置环回口IP地址,配置portal进程监听环回口的TCP协议预设端 ...

  7. 小博无线认证无法连接服务器,路由器wan口认证失败

    问:路由器WAN口设置显示认证失败怎么办? 我的路由器设置后连不上网,在路由器的WAN口设置位置,显示已断开(认证失败). 请问wan口认证失败是怎么回事?现在要怎么设置,才能让路由器上网? 答:在设 ...

  8. 免认证使用校园网(2022.6.3更新)

    2022.6.3更新(没想到都对免认证校园网感兴趣) 这里提一个重要的地方:校园网这里指使用web网页登录认证的无线校园网络,任何那种在寝室使用那种软件客户端认证的校园网此方法均无效 笔者认为的原理: ...

  9. AAA的线下保护以及路由器使用ACS认证登录

    AAA的线下保护以及路由器使用ACS认证登录 本篇重点讲解一下AAA的线下保护,防止我们在开启AAA服务的时候本地的用户登录被洗掉,再讲一下如何使用acs认证登录,用来体现数据包的加密.@[TOC] ...

  10. 路由器免刷固件连接校园网(蝴蝶客户端)

    路由器免刷固件连接校园网 任何路由器都可以利用蝴蝶客户端拨号软件(4.1.9版本)连接校园网 具体步骤 准备好一个路由器,电脑安装好4.1.9版本蝴蝶客户端拨号软件 先将路由器当作交换机(连接校园网的 ...

最新文章

  1. PS5穿越云层3D文字
  2. tensorflow saver_TensorFlow: Model Persistence
  3. mave本地导入mysql的jar包_将本地的jar包引入到maven项目中
  4. io读取文件无地址_流的基本概念和IO流入门
  5. VMware Player 12.5.0 中文免费版
  6. PHP 的 empty 和 isset 对比
  7. NeHe OpenGL教程 01 创建OpenGL窗口
  8. Android来电铃声默认设置的实现方法与怎么设置语音来电的默认铃声
  9. 波波夫:无线电的先驱
  10. mini计算机结构,通用解决方案:[教程信息]计算机主板ATX / Micro ATX / Mini-ITX的几种结构标准...
  11. android ntfs u盘,NTFS让U盘短命?想多了
  12. php 连接数据库有很多notice,PHP Notice: undefined index 完美解决方法
  13. 麦芽糖-刀豆球蛋白A,maltose-ConcanavalinA,刀豆球蛋白A-PEG-麦芽糖
  14. 小丸子学Oracle 12c系列之——Oracle Pluggable Database
  15. WEB——07JDBC
  16. display:flex 常用
  17. chrom中如何跳过debugger
  18. 中职学机电一体化好还是计算机好,男生读职校选择什么专业比较好
  19. 关于c语言的教学方法,浅谈C语言实例教学方法
  20. Google的“核心坚持“与Baidu的“核心背离“

热门文章

  1. 一个windows右键关联工具
  2. HTML期末大作业~海贼王动漫的HTML网页制作(共五页有五种风格)
  3. 2021Eclipse下载与安装教程
  4. dreamweaver8 html5,dreamweaver8
  5. win10共享其它计算机文件,两台win10间如何文件共享
  6. SOLD2算法之3: 特征点与heatmap结合检测有效线段(CVPR 2021)
  7. 字节跳动岗位薪酬体系曝光,看完感叹:不服不行
  8. 字节跳动新员工入职一周,工作很少,每天很闲,从不加班!公司一堆漂亮小姐姐!完全不像外面说得那么忙!
  9. 调试经验——Win 10 Excel中Alt+Tab不能切换窗口的解决方法
  10. 计算机为什么使用二进制编码,计算机为什么使用二进制