Home 记录 OpenWRT 通过深澜网络认证折腾
Post
Cancel

记录 OpenWRT 通过深澜网络认证折腾

引言

记录我使用OpenWRT路由器连接学校网的折腾过程,虽然最后的结果挺 emm?但在这个过程中还是了解到不少东西

起始

通过在浏览器搜索openwrt通过深澜认证得到恩山无线论坛帖子回复下的一个开源项目:coffeehat/BIT-srun-login-script,通过项目知道了有支持多平台(包括openwrt)的golang版本,于是开始折腾

这是项目作者的文章:深澜校园网登录的分析与python实现-北京理工大学版

折腾前

对于OpenWRT版本未提供编译后的版本,即IPK文件,又因为我水平不行看不懂README便请教同学得知为Linux的指令,但在实际操作后得知此命令为编译Linux内核,便放弃在实体机做开始使用虚拟机搞

参考:Building a custom kernel/zh-cn - Fedora Project Wiki

开始折腾

另朋友发了configuration - How to fix make error “No rule to make target ‘menuconfig’” when building a kernel for Beagleboard? - Unix & Linux Stack Exchange,于是我便照着此帖子回答尝试

创建虚拟机

因为我使用的Fedora自带虚拟机软件盒子,首先尝试装CentOS8,因为我的镜像文件放到了移动硬盘中,便直接挂载,选择。结果提示创建失败,然后我尝试了CentOS7,失败,然后Ubuntun,失败

接连失败,要不是我之前用这软件创建过Win10我都快怀疑是不是软件不行了,打开错误日至,果然看不懂,不过我注意到路径有中文,于是把路径改为英文,再次尝试,失败

然后第二天我在想既然是编辑内核,要不使用kali吧,于是把U盘中kali镜像复制到电脑,虽然最后安装失败但成功运行了,难道要把系统放本地才行吗

于是我把CentOS7的镜像拷贝到~/Documents/下,安装成功。因想着只是编译IPK便只有root用户

连接网络

本以为在Linux下创建Linux虚拟机可以直接共享网络的,于是我直接输入命令wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.19.6.tar.xz,结果就是无法找到IP地址,使用命令ifconfig发现无IP

参考文章在虚拟机中设置静态IP(centos为例)使虚拟机连上网络,不过在最后文件修改只需要将ONBOOT后的值改为yes然后加俩DNS就行

安装git

连上网后我先装了个git,使用yum install git即可,然后配置姓名与邮箱

1
git config --global user.name "Name"
1
git config --global user.email "[email protected]"

传输文件

继续使用wget下载Linux内核,尝试了三四次,几乎都是在50%左右下载失败而且速度很慢

注:使用wget -c URL可实现断点续传

然后就是盒子这个软件貌似支持直接拖拽传输,于是我在我的电脑下载好后直接托过去,失败,文件没有被传输过去,考虑到传输后的文件在~/Downloads/下,我使用的是root账户,于是我参考Linux添加用户和管理员用户创建了一个用户(差点把最后一步删除用户也执行了

使用命令su username切换用户,创建文件夹~/Downloads/,再次拖入还是失败

尝试使用盒子的共享功能将电脑的~/Public共享,但我怎么操作也不能在虚拟机里看到

想必这软件只适配了RHEL和Fedora吧

SSH传输

然后我想到了通过SSH传输(因为我输入ftp发现没这个命令,懒得装了

本地开启SSH连接,然后通过scp命令以使用SSH传输文件

1
scp username@servername:/path/filename ~/Downloads/

首先是确定IP,在虚拟机中输入命令ip route得知IP为10.0.2.2

然后使用scp命令传输

解压文件

使用tar命令解压文件

1
tar -xzvf filename.tar.xz

emm,非gzip压缩文件,那我不知道怎么解压啊

SSH传输

还是使用SSH传输吧,在scp命令加上-r即可传输文件夹

开始尝试

按照步骤将解压后的文件放到/usr/src/下,把/boot下的config放到/usr/src/linux-5.19.6/.config,结果无论是把配置文件放到.config/下还是放到.config都无法运行make menuconfig命令

总结

折腾失败,下次再来

不过在我编写此文章时注意到原帖尝试直接在OpenWRT运行Python,有时间尝试一下

再次尝试

然后我咨询了一位过了认证校园网的朋友(虽然他是普通路由器),他将路由器的MAC地址改为自己电脑的,结果插上网线认证页面会自动转发到电脑,然后认证后就有网了,不过是锐捷网页认证

然后考虑到深澜使用的是Portal认证也就是Web页面认证,既然是Web那想必就是使用HTTP了,我是否可以通过编辑HTTP报文的方式通过认证呢?那么Linux有命令可以发送HTTP报文吗,我搜了一下,发现curlwget命令可以模拟getpost请求

于是我打开Fiddler开始抓包,企图还原验证过程

才怪,我用路由器连接上学校网,电脑插上网线连上路由器,输入认证页面IP,认证完成,路由器有网了

Linux命令模拟Http的get或post请求

虽然没用到,不过既然看到了那就记录一下吧

  • GET请求
  1. curl
1
2
3
4
5
6
7
8
## 如果这里的URL指向的是一个文件可以直接下载到本地
curl URL 
## 显示全部信息
curl -i URL 
## 只显示头部信息
curl -l URL 
## 显示get请求全过程解析
curl -v URL 
  1. wget
1
wget URL
  • POST请求
  1. curl
1
2
3
4
5
6
## 通过-d参数,把访问的参数放在里面
curl -d "param1=value1&param2=value2" "URL"

curl -d'param1=value1&param2=value2' -X POST URL

curl -d 'param1=value1' -d 'param2=value2' -X POST  URL
  1. wget
1
2
## 通过--post-data参数实现
wget --post-data 'user=name&passwd=passwd' URL

再次总结

有时候不能把某件事想的太复杂,往往很简单的事只思考而没实践就否认这种可能性是错误的,这次就是我一开始就把最后再次尝试部分否决才闹了这么一大圈(要不是流量卡的不行我才不会去试

写到这时我想到了两句名言

  1. 学而不思则罔,思而不学则殆

  2. 实践得真知

所以有些时候还是应该大胆去尝试,不要因为过多的思考而限制了自己!

参考文章

求助深澜校园网Portal认证应该怎么刷固件?-小米无线路由器以及小米无线相关的设备-恩山无线论坛

configuration - How to fix make error “No rule to make target ‘menuconfig’” when building a kernel for Beagleboard? - Unix & Linux Stack Exchange

在虚拟机中设置静态IP(centos为例) yexca’Blog

安装Git - 廖雪峰的官方网站

Linux添加用户和管理员用户 - yexca’Blog

linux 系统下如何进行用户之间的切换_M李丽的博客-CSDN博客_linux切换系统

使用ssh传输文件 - 思否

Linux tar 命令-菜鸟教程

Portal认证原理-曹世宏的博客

Linux命令发送Http的get或post请求(curl和wget两种方法)_cyl937的博客-CSDN博客

This post is licensed under CC BY 4.0 by the author.

ffmpeg批量转换视频格式

萌百黑幕在 Argon 主题 WordPress 实现