OpenWRTで深瀾ネットワーク認証を突破する奮闘記

📢 この記事は gemini-2.5-flash-lite によって翻訳されました

はじめに

OpenWRTルーターを使って学校のネットワークに接続しようとした奮闘の記録だよ。結果はまあ、なんとも言えないけど、この過程で色々勉強になったな。

スタート

ブラウザで openwrt通过深澜认证 って検索して、恩山無線フォーラム の投稿で紹介されていたオープンソースプロジェクトを見つけたんだ。coffeehat/BIT-srun-login-script っていうプロジェクト。それを見て、複数のプラットフォーム(OpenWRTも含む)に対応したGo言語版があるって知って、早速いじってみることにしたんだ。

プロジェクト作者の記事はこちら:深澜校园网登录的分析与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には、仮想マシンソフト 盒子 が標準で入ってる。まずはCentOS 8をインストールしようとしたんだ。イメージファイルが外付けHDDに入ってたから、直接マウントして選択。そしたら、作成失敗ってエラーが出た。次にCentOS 7を試したけど、失敗。Ubuntuも失敗。

次々と失敗して、前にこのソフトでWin10をインストールできたから、ソフト自体がおかしいんじゃないかって疑っちゃったよ。エラーログを開いてみたけど、やっぱり意味不明。でも、パスに日本語が含まれてることに気づいたから、パスを英語に変えてもう一度試してみた。失敗。

で、次の日、カーネルを編集するんだから、Kaliを使ってみようかなって思ったんだ。USBメモリに入ってたKaliのイメージをPCにコピーして、最終的にインストールは失敗したけど、実行はできたんだ。もしかして、システムをローカルに置かないとダメなのかな?

だから、CentOS 7のイメージを ~/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を2つ追加すればOKだった。

gitのインストール

ネットに繋がったら、まずgitをインストールしたんだ。yum install git で簡単にできた。それから、名前とメールアドレスを設定した。

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

ファイル転送

引き続き wget でLinuxカーネルをダウンロード。3〜4回試したけど、ほとんど50%くらいでダウンロード失敗するし、速度も遅かった。

注:wget -c URL を使うと、中断したところから再開できるよ。

次に、盒子 というソフトが直接ドラッグ&ドロップでファイルを転送できるみたいだったから、PCでダウンロードしたファイルをそのままドラッグしてみた。失敗。ファイルは転送されなかった。転送後のファイルが ~/Downloads/ にあることを考えて、rootユーザーを使ってるから、Linux 添加用户和管理员用户 を参考にしてユーザーを作成したんだ。(最後にユーザーを削除する手順まで実行しそうになったよ)

su username コマンドでユーザーを切り替えて、~/Downloads/ フォルダを作成。もう一度ドラッグしてみたけど、また失敗。

盒子 の共有機能でPCの ~/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

あれ、gzipで圧縮されてないファイルだ。これ、どうやって解凍すればいいかわからないな。

SSH転送

やっぱりSSHで転送しよう。scp コマンドに -r を追加すればフォルダも転送できるはず。

試行錯誤

手順通りに、解凍したファイルを /usr/src/ に置いて、/boot のconfigファイルを /usr/src/linux-5.19.6/.config に置いた。でも、.config/ の下に置いても、.config の下に置いても、make menuconfig コマンドが実行できなかった。

まとめ

奮闘は失敗。また今度挑戦しよう。

でも、この記事を書きながら、元の投稿でOpenWRTで直接Pythonを実行しようとしてたことに気づいたんだ。時間があったら試してみようかな。

再挑戦

それから、認証を突破したことがある友達(普通のルーターだけど)に相談してみたんだ。彼はルーターのMACアドレスを自分のPCのものに変えたらしい。そしたら、LANケーブルを繋いだら認証ページが自動的にPCに転送されて、認証後につながるようになったんだ。でも、锐捷(Ruijie)のウェブ認証だった。

深澜(Senao)はPortal認証、つまりWebページ認証を使ってるってことは、WebだからHTTPを使ってるはずだよね。HTTPヘッダーを編集すれば認証を突破できるのかな?LinuxにはHTTPヘッダーを送信できるコマンドってあるんだろうか?調べてみたら、curl と wget コマンドで get や post リクエストをシミュレートできるってわかった。(それでFiddlerを開いてパケットキャプチャを始めて、認証プロセスを再現しようとしたんだ)

嘘だよ。ルーターを学校のネットワークに繋いで、PCをルーターに繋いで、認証ページの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-NC-SA 4.0 by the author.
最終更新 2025-11-08 20:50 +0900