网站首页/网络技术列表/内容

整套处理方案:一种突破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窗口。可以同时执行多个窗口。执行。安装命令如下:

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


当今,越来越多的业务应用运行于网络架构之上,保障网络的持续、高效、安全的运行,成为网络管理者面临的巨大挑战。

……

相关阅读