校园网认证流程分析及自动认证脚本

news/2025/3/12 23:26:11/文章来源:https://www.cnblogs.com/0x000001/p/18766279

校园网认证流程分析及自动认证脚本

很久之前在处理Linux终端环境下校园网认证登录时所做的工作,理论上适用于所有基于锐捷网络的认证系统

分析过程

未进行校园网认证时curl -v任意网站得到

image-20250311212432818

可见会重定向到认证网址并且附带一些参数

浏览器访问该网址并打开网络日志,输入自己的账号密码测试登录

image-20250311213009591

找到登录接口,查看负载

image-20250311213057259

发现主要包括八个参数,其中需要注意的只有userIdpasswordqueryStringpasswordEncrypt

仔细观察可以发现queryString就是重定向到认证网址时的附带参数

查看发起程序

image-20250311213500282

分析AuthInterFace.js

找到登录相关接口

image-20250311213650360

向上在login_bch.js中查找AuthInterFace.login

定位相关代码行

image-20250311213822817

分析相关参数是如何得到的

image-20250311213937402

image-20250311213952615

可以看出queryString是原始字符串通过两次url编码得到,

userId也是username通过两次url编码得到(Tj_yes特殊处理,猜测是同济)

password似乎会有加密处理,但是考虑到存在passwordEncrypt参数,猜测可以通过设置为true来避免加密

至此分析完毕。

自动登录脚本

Linux中使用curl可以很便捷的编写自动登录脚本如下,考虑到终端环境注释等也采用英文

#!/bin/bashurl_encode() {local string="${1}"local strlen=${#string}local encoded=""for (( i=0; i<strlen; i++ )); dochar="${string:i:1}"case "$char" in[-_.~a-zA-Z0-9] ) encoded+="$char" ;;* ) printf -v encoded_char '%%%02x' "'$char"encoded+="$encoded_char" ;;esacdoneecho "$encoded"
}# Set the username and passwd
USER_ID="your username"
PASSWORD="your password"echo "Test network connection..."
response=$(curl -s "http://baidu.com")# Checks whether the network has been authenticated
if echo "$response" | grep -q "http://www.baidu.com/"; thenecho "Network connected."exit 0
fi
# Step 1: get query string
echo "Get query string..."
query_string=$(echo "$response" | grep -oP "top\.self\.location\.href='http://172\.16\.128\.139/eportal/index\.jsp\?\K[^']+")# test for query string
if [ -z "$query_string" ]; thenecho "Error: fail to get the query string"exit 1
fi# quote query string twice 
encoded_qs_once=$(url_encode "$query_string")
encoded_qs_twice=$(url_encode "$encoded_qs_once")# Step 2:constructs the post request parameters
post_data=$(cat <<EOF
userId=${USER_ID}&password=${PASSWORD}&service=&queryString=${encoded_qs_twice}&operatorPwd=&operatorUserId=&validcode=&passwordEncrypt=false
EOF
)# echo "$post_data"# Step 3:send post request
echo "Trying to login..."
login_response=$(curl -s -X POST "http://172.16.128.139/eportal/InterFace.do?method=login" \-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" \-H "Referer: http://172.16.128.139/eportal/index.jsp" \-H "Accept: */*" \-H "Accept-Encoding: gzip, deflate" \-H "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6" \-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \--data "$post_data")# Step 4:Check the response
if echo "$login_response" | grep -q '"result":"success"'; thenecho "Login successfully."
elseecho "Login failure. Error:"echo "$login_response" | sed 's/.*"message":"\([^"]*\).*/\1/'
fi

对于Windows采用powershell脚本如下

# Set the username , password and network ssid
$USER_ID = "your username"
$PASSWORD = "your password"
$SSID = "your campus wifi name"$wifiOutput = (netsh wlan show interfaces) -match "^\s*SSID\s+:"
$ssidMatch = $wifiOutput | Select-String -Pattern ':\s*(.+)'
$ssid = $ssidMatch.Matches.Groups[1].Value.Trim()if ($ssid -ne $SSID) {echo "Not connected to the campus network."exit 0
}# Define the URL encoding function
function UrlEncode([string]$str) {return [System.Web.HttpUtility]::UrlEncode($str)
}Write-Host "Testing network connection..."
# Disable automatic redirection to get the original response
$request = [System.Net.WebRequest]::Create("http://baidu.com")
$request.AllowAutoRedirect = $false
try {$response = $request.GetResponse()$stream = $response.GetResponseStream()$reader = New-Object System.IO.StreamReader($stream)$content = $reader.ReadToEnd()$response.Close()$reader.Close()
} catch {Write-Error "Network request failed."exit 1
}# Check for authentication
if ($content -match "http://www.baidu.com/") {Write-Host "Network connected."exit 0
}# Extract query string
Write-Host "Extracting query string..."
if ($content -match "top\.self\.location\.href='http://172\.16\.128\.139/eportal/index\.jsp\?([^']+)") {$query_string = $matches[1]
} else {Write-Error "Failed to get query string"exit 1
}# URL encoding twice
$encoded_qs_once = [System.Web.HttpUtility]::UrlEncode($query_string)
$encoded_qs_twice = [System.Web.HttpUtility]::UrlEncode($encoded_qs_once)# Build POST data
$post_data = @"
userId=$USER_ID&password=$PASSWORD&service=&queryString=$encoded_qs_twice&operatorPwd=&operatorUserId=&validcode=&passwordEncrypt=false
"@# Send login request
Write-Host "Attempting login..."
$headers = @{"User-Agent" = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36""Referer" = "http://172.16.128.139/eportal/index.jsp""Accept" = "*/*""Accept-Encoding" = "gzip, deflate""Accept-Language" = "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6""Content-Type" = "application/x-www-form-urlencoded; charset=UTF-8"
}try {$login_response = Invoke-WebRequest -Uri "http://172.16.128.139/eportal/InterFace.do?method=login" -Method Post -Body $post_data -Headers $headers -UseBasicParsing
} catch {Write-Error "Login request failed."exit 1
}# check response
$response_json = $login_response.Content | ConvertFrom-Json
if ($response_json.result -eq "success") {Write-Host "Login successful."
} else {Write-Host "Login failed. Error: $($response_json.message)"
}

需要注意需要更改其中认证链接为自己校园网认证链接

Windows计划任务

我们希望连接校园网时能够自动无感认证,自然想到Windows计划任务

查阅资料后,发现可以参考如何设置计划任务或者脚本才能使电脑在连接指定wifi后自动运行某程序? - 知乎

其中操作选项卡处如下填写

  • 操作:启动程序
  • 程序/脚本:powershell
  • 参数:-ExecutionPolicy Bypass -File "C:\Path\To\YourScript.ps1"

完整脚本可见此处

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/897439.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

廖神maven笔记

02廖神maven笔记https://liaoxuefeng.com/books/java/maven/basic/index.htmlMaven 是一个 Java 项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是 Java 项目不可缺少的工具。Maven 介绍 存在问题:为什么引入 Maven?因为我们项目使用的…

已知p部分高位部分低位攻击

题目: from Crypto.Util.number import getPrime, bytes_to_long from secret import flagp = getPrime(1024) q = getPrime(1024) n = p * q e = 65537 hint1 = p >> 724 hint2 = q % (2 ** 265) ct = pow(bytes_to_long(flag), e, n) print(hint1) print(hint2) print(…

机动车占用通道监控报警摄像机

机动车占用通道监控摄像机,是创新行业智能监督管理方式、完善监管部门动态监控及预警预报体系的信息化手段,是实现平台远程监控由“人为监控”向“智能监控”转变的必要手段。产品致力于设备的智能化建设,有效实现对机动车堵塞通道智能检测的实时预警,包括视频监管、事件预…

Stereotyped messages attack(刻板消息攻击)

攻击阐述 我们用b\x00替换消息中的x这样就有了(m+x)^e mod n=cm知道一部分 x是b\x00\x00******未知的 (e,n)是公钥,c是密文问题变为如何找到x Coppersmith可以解决了这个问题 (这种题本质上就是Coppersmith的变体) 攻击成功条件e = 3 x < N<sup>1/e</sup>题目1:…

反素数(emirp数)

反素数,英文称作emirp(prime(素数)的左右颠倒拼写),是素数的一种,把一个素数的阿拉伯字数字序列(十进制)变成由低位向高位反写出来,得到的另一个数还是素数,例如素数<font style="color:rgb(32, 33, 34);">13</font>,反写就是<font style="color…

ai烟雾检测智能摄像机

ai烟雾烟头识别摄像头作为现代火灾预防技术的重要组成部分,特别是在大范围要求高的林业、农田等,具有独特的优势,有效降低了火灾发生。AI烟雾烟头识别摄像头厂家也逐渐多了起来。AI烟雾烟火识别摄像头能准确捕捉到火焰的形状、大小、颜色等特征,还能结合环境背景、光线变化…

24-关于华夏ERP的搭建、审计、扫描

1、使用IDEA和PHPStudy搭建华夏erp 需要先下载 jshERP3.3-最新包,JSH_ERP-v3.3源码前端部署在网站根目录下创建一个名为ERP的文件夹,将前端压缩包 前端包/dist.zip 解压到该目录下 使用小皮创建 huaxi.com网站,连接到刚刚的ERP目录访问http://huaxi.com,出现如下页面说明前…

AMM算法进阶

题目: from Crypto.Util.number import * import os from gmpy2 import *def getMyPrime1(nbits):while True:n = 2*1009*7*getPrime(nbits//2)*getPrime(nbits//2)if is_prime(n+1):return n+1def getMyPrime2(nbits):while True:n = 2*1009*getPrime(nbits//2)*getPrime(nbit…

AMM算法

题目: from Crypto.Util.number import * import os from gmpy2 import *def getMyPrime(nbits):while True:n = 2*1009*getPrime(nbits//2)*getPrime(nbits//2)if is_prime(n+1):return n+1p = getMyPrime(700) q = getMyPrime(700) n = p*qe = 1009flag = bNSSCTF{******} + …

[PaperReading] Scaling Vision Transformers to 22 Billion Parameters

目录名称TL;DRMethodCode && ImplementationExperiment实现细节Linear Eval on ImageNetZero-shot Eval on ImageNetDense PredictionRelated works中值得深挖的工作 名称 Scaling Vision Transformers to 22 Billion Parameters 论文链接 时间:2023.02 作者与单位:G…

【CF VP记录】Codeforces Round 1008 (Div. 2)

比赛链接 本文原文发布于博客园,如您在其他平台刷到此文,请前往博客园获得更好的阅读体验。 跳转链接:https://www.cnblogs.com/TianTianChaoFangDe/p/18766146 开题 + 补题情况 坠机场,要是赛时打了的话就又回青了,前两题很快开出来了,第三题脑残了,一开始觉得只需要构…

32位系统上的Linux的highmem

什么是highmem? Linux内存管理 highmem的出现与Linux的内存管理相关。众所周知,linux内核一般将处理器的虚拟地址空间分为两个部分。底部较大的部分用于用户进程,而顶部的较小部分用于内核。这个划分的比例通常是1:3(在编译内核时可以通过特殊的配置选项修改这个比例)。所…