當前位置:蘿卜系統 > 網絡技術教程 > 詳細頁面

整套處理方案:一種突破openwrt路由器(swu校園網之一)上的校園網web身份驗證設備局限的辦法

整套處理方案:一種突破openwrt路由器(swu校園網之一)上的校園網web身份驗證設備局限的辦法

更新時間:2023-09-01 文章作者:未知 信息來源:網絡 閱讀次數:

網絡故障(network failure)是指由于硬件的問題、軟件的漏洞、病毒的侵入等引起網絡無法提供正常服務或降低服務質量的狀態。

摘要:本文主要用于通過路由器的wan端口登錄到帳戶以連接到校園網絡(Web身份驗證)。連接到路由器的多個設備共享同一帳戶。幾分鐘后,將檢測到代理(或共享)行為,并且該帳戶將成為“臨時禁止發布”。同時,實現了自動Web身份驗證,因此無需登錄。

前言

Wikipedia openwrt簡介:

OpenWrt是適用于嵌入式設備的Linux發行版。

與原始固件相比,OpenWrt不是單個一、靜態固件,而是提供了可向其中添加軟件包的可寫文件系統。這使用戶可以自由選擇應用程序和配置,而不受設備提供商的限制,并且可以使用適合某些應用程序的軟件包來自定義您的設備。對于開發人員來說,OpenWrt是一個框架。開發人員不必費心構建整個固件即可獲得所需的應用程序;對于用戶而言,這意味著能夠以不同于以往的方式完全自定義和使用該設備,OPKG包含3500多種軟件。

默認情況下,LuCI用作Web交互界面。

設備:已閃入openwrt系統的路由器

(作者使用Barley DW220D)

固件版本:OpenWrt屏障斷路器14.07 / LuCI中繼(0.12 + svn-r10530)

內核版本:3.1 0.49

涉及的內容:

JavaScript分析后程序包構建/發送基本的Linux命令外殼腳本

背景/原理:使用路由器的wan端口連接到園區網絡時,終端對園區網絡服務器是透明的(NAT地址轉換),并且用戶連接幾分鐘后,園區網絡服務器將對其進行分析。到Internet(SWU為20分鐘)數據包用于檢測是否有多個設備共享該行為,因此它僅需要每十分鐘斷開/連接到Internet。實際上,Supermartin就是基于這一原理開發的,用于Windows環境的自動聯網工具(破解重慶電信園區網絡,在宿舍中共享寬帶帳戶),但是當宿舍計算機使用時,其功耗是不可接受的。開啟了很長時間。歸根結底,校園網絡的Web身份驗證是發送http應用程序層協議數據包(最常見的是post和get),因此這些步驟大致分為兩個步驟:

分析登錄/脫機數據包并在openwrt上發送數據包以進行認證/脫機一、分析Web認證數據包

可以通過數據包捕獲和分析頁面JavaScript來進行數據包分析。打開瀏覽器開發人員工具(F12)進行網絡登錄,然后通過敏感的氣味找到關鍵的發布包,如圖1所示。

圖1 瀏覽器抓包結果

可以看出,盡管userid和password關鍵字的內容是明確的(未加密),但queryString和服務的外觀和內容還是不清楚的。應該結合使用JS來分析queryString和服務的結構和內涵。再次打開開發人員工具,html代碼如圖所示找到登錄按鈕,并發現登錄按鈕已綁定到doauthen()函數,如圖2.

所示。

圖2 登陸

我發現此頁面引入了兩個js文件,并在其中一個js文件中找到了登錄功能:

其中ePortalUrl是請求地址前綴:

  login : function(userId, password, service, queryString,operatorPwd,operatorUserId,validcode,callback) {
   /* 1.登錄 */
   var content = "userId=" + userId + "&password=" + password + "&service=" + service + "&queryString=" + queryString+"&operatorPwd="+operatorPwd+"&operatorUserId="+operatorUserId+"&validcode="+validcode;
   post(ePortalUrl + "login", content, callback);
  },

軟路由微信認證_小米路由遠程web管理_校園網web認證路由器

和離線功能:

  logout : function(userIndex,callback) {
   /* 4.下線 */
   var content = "userIndex=" + userIndex;
   post(ePortalUrl + "logout", content,callback);
  },

可以發現有更多的登錄關鍵字可以登錄,但離線只需要一個userIndex

1.1個登錄關鍵字querryString和Service

在JS文件中發現,queryString是上一頁提交的get數據,經過兩次encodeURIComponent()轉碼后,如圖3所示

圖3 queryString構造方式

JavaScript encodeURLComponent()的含義是替換原始字符串的某些特殊字符(有關詳細信息,請參見encodeURLComponen的含義。)

與%25E9%25BB%2598%25E8%25AE%25A4相對應的服務是圖3的可選下拉框中默認單詞的兩個encodeURLComponent()轉碼。這是相對固定的,因此請查找獲取queryString的數據源。

輸入身份驗證地址且未登錄身份驗證頁面時,地址欄將變為

http://XXX.XXX.XXX.XXX/eportal/index.jsp?wlanuserip=10.69.XXX.XX&wlanacname=NAS&ssid=Ruijie&nasip=172.28.XXX.X&mac=143dXXXX9&t=wireless-v2-plain&url=http://123.123.123.123/

獲取數據是“?”之后的部分

小米路由遠程web管理_校園網web認證路由器_軟路由微信認證

wlanuserip=10.69.XXX.XX&wlanacname=NAS&ssid=Ruijie&nasip=172.28.XXX.X&mac=143dXXXX9&t=wireless-v2-plain&url=http://123.123.123.123/

這意味著瀏覽器在此之前進行了跳轉,并執行了get操作。如果您尚未登錄,則可以在尚未重定向的頁面上找到此信息。實際上,該信息是該設備未登錄以連接到服務器,服務器返回的注冊信息。獲取此頁面的方法有很多(必須處于未登錄狀態),例如:

禁用瀏覽器加載js腳本,使用python和其他編程語言直接捕獲軟件包并使用wget在linux上下載頁面

wget在openwrt下獲得的頁面如圖4所示。

圖4 weget

此時,登錄所需的四個關鍵字id,password,service和queryString都已清除。您只需要構造一個POST包并將這些關鍵字發送到圖1中的請求URL即可完成登錄。

1.2個離線關鍵字userindex

首先,我使用python根據1.1的背景發送post包,并發現直接返回了userindex,如圖5所示

因此,您只需執行字符串操作即可獲取userindex關鍵字。

兩個openwrt循環執行登錄/脫機操作2. 1openwrt發送帖子包和shell基礎

卷曲后操作命令格式:

curl -d "args"  "protocol://address:port/url"

openwrt上的shell是輕量級的解析器灰。語法不嚴格。具有一定編程基礎的人們可以快速學習和應用它。有關詳細信息,請參見shell教程。 (該網站的免費內容就足夠了)

2. 2連接到openwrt

使用計算機直接插入路由器的局域網端口,使用膩子,Xshell和其他工具進行SSH連接(某些版本需要進入路由器設置頁面以打開接收局域網端口SSH連接),地址為路由器管理地址,一般為19 2. 168.1.1,輸入root用戶名和密碼即可進入路由器。

2. 3編寫一個shell腳本,輸入etc(cd / etc),創建一個新的net.sh文件(觸摸net.sh),然后寫入net.sh文件(vi net.sh,鍵入i以進入編輯模式)(請操作vi請參見linux vi)以下代碼:

#!/bin/ash
eUc()#encode url 模擬前文的二次編碼操作,函數都使用echo的返回值
{	s0=$1
	s1=${s0//=/%3D}
 	s2=${s1//&/%26}
 	s3=${s2//:/%3A}
	s4=${s3//\//%2F}
 	s5=${s4//%/%25}
 	echo $s5
 	return 0
}
getQs()#only work on unlogged status/獲取queryString,使用
{
	inf=$(wget http://222.198.127.170 -O -)
        s1=${inf:73}
        s2=${s1%\*}
        echo $(eUc $s2)
}
login()#par1:id, par2:psw,par3:qS, return Userid/登陸操作,后面是參數順序
{
 s0=$(curl -d "userId=$1&password=$2&service=%25E9%25BB%2598%25E8%25AE%25A4&queryString=$3&operatorPwd=&operatorUserId=&validcode=" "http://222.198.127.170/eportal/InterFace.do?method=login")
 s1=${s0#*:\"}
 s2=${s1%%\"*}
 echo $s2
}
logout()# par1:userId #退出當前登陸,后面是參數順序
{
 curl -d "userId=$1" "http://222.198.127.170/eportal/InterFace.do?method=logout"
}
logoutAll()#par1:ID, par2:password #使用ID和psw強制退出所有登陸,后面是參數順序
{
 curl -d "userId=$1&pass=$2" "http://222.198.127.170/eportal/InterFace.do?method=logoutByUserIdAndPass"
}
#main() begin
#因shell的特殊性,id和psw加不加引號都沒關系
id=校園網賬號
psw=校園網密碼
#init 
logoutAll $id $psw
qS=$(getQs)
userId=$(login $id $psw $qS)
#
while :
do
 logout userId
 qS=$(getQs)
 userId=$(login $id $psw $qS)
 sleep 600s#每10分鐘執行一次
done
#end

vi保存的操作順序為ESC:wq輸入

2. 4執行腳本

在執行Linux腳本之前需要授權。授權命令為:

chmod +x /etc/net.sh

軟路由微信認證_小米路由遠程web管理_校園網web認證路由器

執行腳本:

/etc/net.sh

可以說它已經結束了,但是可以使用SSH輸入openwrt來執行腳本。退出SSH時,腳本的執行將停止。在這里,屏幕包用于使其在后臺執行。使用屏幕類似于Windows窗口?梢酝瑫r執行多個窗口。執行。安裝命令如下:

opkg update
opkg install screen

直接在頁面上進入屏幕以進入子頁面,然后在此頁面上執行:

/etc/net.sh

正常執行程序后,鍵入Ctrl + a,然后按d退出到主頁。此時,您可以輸入exit退出連接。

要再次進入該窗口,可以使用screen -ls獲取前一個窗口的編號,然后使用screen -r number命令輸入。

順便顯示openwrt SS設置方法的公開版本

在這里插入圖片描述

在這里插入圖片描述


本文來自本站,轉載請注明本文網址:
http://www.pc-fly.com/a/tongxingongju/article-347985-1.html


當今,越來越多的業務應用運行于網絡架構之上,保障網絡的持續、高效、安全的運行,成為網絡管理者面臨的巨大挑戰。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
亚洲嫩草影院久久精品