楚雄师范学院宿舍校园网认证实现方案

认证脚本最新版本解析

回顾次数 回顾时间
1 2025年/3月/30
2
3

设备:一台红米ac2100

脚本本体:(该脚本为bash脚本,需要部署在路由器内)

采用的openwrt系统为bleachwrt

#!/bin/bash
###UserInfo
username=your user_id
password=114514
###Settings
test_url=http://www.msftconnecttest.com/redirect
pass_url=https://www.msn.cn/zh-cn
auth_url=http://106.60.4.60:8016
period=3
###Function
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
#
function log() {
    time=$(date "+%Y-%m-%d %H:%M:%S")
    echo -e "\n[$time] $*\n"
}
#
function login() {
    redirect_url=$(curl -Ls -w "%{url_effective}" -o /dev/null "$test_url")
    if [[ ! $redirect_url =~ ^$pass_url ]];then
        if [[ $redirect_url =~ ^$auth_url ]];then
            paramstr=$(urldecode "$(curl -Ls "$redirect_url" | sed -n 's/.*paramStr=\([^"]*\).*/\1/p')")
            redirect_url=$(curl -Ls -w "%{url_effective}" -o /dev/null -F "paramStr=$paramstr" -F "UserName=$username" -F "PassWord=$password" "$auth_url/authServlet")
            if [[ "$redirect_url" == *"logon.jsp"* ]];then
                log "Auth Pass" "paramstr=$paramstr"  
                return 0
            fi
            log "Auth Fail"
            return 1
        fi
        log "Fail"
        return 2
    fi
    log "Pass"
    return 0
}
#
function logout() {
    curl -Ls -w "%{url_effective}" -o /dev/null -F "paramStr=$1" "$auth_url/logoutServlet"
    redirect_url=$(curl -Ls -w "%{url_effective}" -o /dev/null "$test_url")
    if [[ ! $redirect_url =~ ^$pass_url ]];then
        log "Logout Successful"
        return 0
    fi
    log "Logout Fail"
    return 1
}
###Login
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
    fail_count=0
    max_retries=10

    while true; do
        login
        login_result=$?

        case $login_result in
            0)
                exit 0
            ;;
            *)
                ((fail_count++))
                if [ $fail_count -ge $max_retries ];then
                    log "Manbaout"
                    exit 1
                fi
            ;;
        esac

        sleep $period
    done
fi

本脚本实现了认证楚雄师范学院宿舍宽带的功能,基本实现原理是连接上光猫后执行脚本路由器尝试访问http://www.msftconnecttest.com/redirect 如果未认证,则会跳转到106认证网站上进行认证操作,如果已经认证了,则会跳转到msn网站,用于判断是否认证成功,若成功则显示pass

折腾过程中用到的linxu命令

这个shell脚本涉及到一些bash专属语法,所以需要先把openwrt默认的ash转为bash

opkg update&opkg install bash(还有一个功能可以保存历史记录)

3.修改 root 用户的 shell 解释器
编辑 /etc/passwd 文件
修改第一行(第一行就是 root 用户)中的 /bin/ash,改成 /bin/bash

root❌0:0:root:/root:/usr/bin/bash(这个地方改为bash)


mv (新文件) (旧文件) 替换操作

vim编辑器中的一些基础操作:

快速删除全部内容:

在vim的普通模式下键入"ggdG"即可删除其中全部内容。说明:gg:光标跳转到该文件的行首;
dG:删除光标行及其以下行的全部内容

:wq保存

:q!强制退出

扩充

inux vim退出命令(保存与不保存)

  1. :w - 保存文件,不退出 vim
  2. :w file -将修改另外保存到 file 中,不退出 vim
  3. :w! -强制保存,不退出 vim
  4. :wq -保存文件,退出 vim
  5. :wq! -强制保存文件,退出 vim
  6. :q -不保存文件,退出 vim
  7. :q! -不保存文件,强制退出 vim
  8. :e! -放弃所有修改,从上次保存文件开始再编辑

posted @ 2025-03-30 22:33  urendell  阅读(126)  评论(0)    收藏  举报