引言
记录我使用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报文吗,我搜了一下,发现curl
与wget
命令可以模拟get
和post
请求
于是我打开Fiddler开始抓包,企图还原验证过程
才怪,我用路由器连接上学校网,电脑插上网线连上路由器,输入认证页面IP,认证完成,路由器有网了
Linux命令模拟Http的get或post请求
虽然没用到,不过既然看到了那就记录一下吧
- GET请求
- curl
1
2
3
4
5
6
7
8
## 如果这里的URL指向的是一个文件可以直接下载到本地
curl URL
## 显示全部信息
curl -i URL
## 只显示头部信息
curl -l URL
## 显示get请求全过程解析
curl -v URL
- wget
1
wget URL
- POST请求
- curl
1
2
3
4
5
6
## 通过-d参数,把访问的参数放在里面
curl -d "param1=value1¶m2=value2" "URL"
curl -d'param1=value1¶m2=value2' -X POST URL
curl -d 'param1=value1' -d 'param2=value2' -X POST URL
- wget
1
2
## 通过--post-data参数实现
wget --post-data 'user=name&passwd=passwd' URL
再次总结
有时候不能把某件事想的太复杂,往往很简单的事只思考而没实践就否认这种可能性是错误的,这次就是我一开始就把最后再次尝试部分否决才闹了这么一大圈(要不是流量卡的不行我才不会去试
写到这时我想到了两句名言
-
学而不思则罔,思而不学则殆
-
实践得真知
所以有些时候还是应该大胆去尝试,不要因为过多的思考而限制了自己!
参考文章
求助深澜校园网Portal认证应该怎么刷固件?-小米无线路由器以及小米无线相关的设备-恩山无线论坛
在虚拟机中设置静态IP(centos为例) yexca’Blog