校园网免认证/校园网pojie

news2024/11/24 5:40:21

我们的目标是xiao yuan wang pojie

我们使用一个简单的python脚本,用于jiechu /pojie校园网只能登录一台手机和一台电脑的限制,仅供学习。

原理

我们利用已有可正常上网的校园网账户作为跳板,连上网后在后台下线账号所登录的设备,登录的设备实际上已经联网并可以正常上网使用。

使用方法

参数配置:</br>1、校园网账号</br>2、校园网密码</br>3、校园网后台登录域名</br>4、校园网wlanacname</br></br>
连接校园网,浏览器打开http://1.1.1.1 跳转到域名</br>
http://11.11.11.11/webauth.do?wlanacname=XXXX&wlanuserip=111.111.111.111&mac=AA:BB:CC:DD:EE:FF&url=http://1.1.1.1
</br>
</br>
校园网后台登录域名是http://11.11.11.11</br>
校园网wlanacnameXXXX</br>

注意事项

使用之前请确保校园网的认证系统是石斧软件的。</br>
登录界面如下。</br>

import requests
import json
import socket
import time
import re
import sys
import hashlib
 
# 校园网账号
userid = "账号"
# 校园网密码
passwd = "密码"
# 校园网管理后台登录域名
xywhost = "http://11.11.11.11"
# 校园网登录链接的wlanacname
wlanacname = "XXXX"
 
hostsname = socket.gethostname()
loginmsg = "test"
 
#       主程序
def main():
    # try:
        global passmd5
        passmd5 = get_md5(passwd)
        print("*******程序开始运行*******","\n主机名:",hostsname,"\n你的IP是:", ip())
        print("3秒后开始登录操作")
        time.sleep(2)
        logout()
        login()
    # except:
        print("")
        exit
 
#       获取内网IP
def ip():
    global ip
    global passmd5
    url = "http://1.1.1.1"
    x = requests
    r = x.get(url, allow_redirects=False)
    rtext = r.text
    result = re.search(r"\d{1,3}.\d{2,3}.\d{1,3}.\d{1,3}",str(rtext))
    ip = result.group()
    return ip
 
def login():
    global ip
    #       登录操作
    x2 = requests
    x = requests.session()
    x.get(xywhost)
    quickAuthShare = x.get(xywhost + "/quickAuthShare.do?wlanacip=&wlanacname=" + wlanacname + "&userId=" + userid + "&passwd=" + passwd + "&mac=&wlanuserip=" + ip)
    data = json.loads(quickAuthShare.text)
    loginmsg = data["message"]
    #       获取验证码
    r = x.post(xywhost + "/self/tologin.do")
    data = json.loads(r.text)
    verifyCode = data["data"]["verifyCode"]
    print("验证码:",verifyCode)
    #       登录操作获取cookie
    headers={
    'Connection': 'keep-alive',
    'Accept': 'application/json, text/plain, */*',
    'Content-Type': 'application/json;charset=UTF-8',
    'Origin': xywhost,
    'Referer': xywhost + '/self/index.html',
    'Accept-Encoding': 'gzip,deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9'
    }
    data = '{"accountId":"' + userid + '","password":"' + passmd5 + '","verifyCode":"'
    r2 = x.post(url=xywhost + "/self/login.do?",headers=headers,data=data+verifyCode+"\"}")
    data = json.loads(r2.text)
    status = data["errmsg"]
    print("登录:",status)
    print(loginmsg)
 
    #       数据变量
    num = 0
    times = 0
    while True:
        try:
            #       获取在线清单和设备ID
            data2 = '{"accountId":"' + userid + '"}'
            r3 = x.post(url=xywhost +"/self/getonline.do?",headers=headers,data=data2)
            data = json.loads(r3.text)
            online = data["rows"]
            if('billingId'in r3.text):
                print("**********设备在线*******")
                online = data["rows"][0]["billingId"]
                serverIp = data["rows"][0]["serverIp"]
                ip = data["rows"][0]["accountIp"]
                print("在线设备:",online,"\n设备IP:",ip,)
            #       下线设备
                data3 = '{"accountId":"' +userid + '","accountIp":"'+ ip +'","billingId":"'+ online +'","serverIp":"' + serverIp + '"}'
                r4 = x.post(url=xywhost+"/self/kickonline.do?",headers=headers,data=data3)
                quickAuthShare = x.get(xywhost + "/quickAuthShare.do?wlanacip=&wlanacname="+ wlanacname + "&userId=" + userid + "&passwd=" + passwd + "&mac=&wlanuserip=" + ip)
                data = json.loads(r4.text)
                status = data["errmsg"]
                times += 1
                print("设备" + status  + ",拨号" + str(times) + "次")
                num = 0
                time.sleep(1)
                quickAuthShare = x.get(xywhost + "/quickAuthShare.do?wlanacip=&wlanacname="+ wlanacname + "&userId=" + userid + "&passwd=" + passwd + "&mac=&wlanuserip=" + ip)
                data = json.loads(quickAuthShare.text)
                loginmsg = data["message"]
                print(loginmsg)
 
            else:
                num += 1
                if ( num>5 ):
                    headers2={
                    'Cache-Control': 'no-cache'
                    }
                    r5 = x2.get("http://h5.analytics.126.net/news/c", headers=headers2 , allow_redirects=False)
                    if( 'ok'in r5.text ):
                        print("登录状态:联网成功!")
                        print("登录状态:联网成功!")
                        print("登录状态:联网成功!")
                        input("\n\n")
                        exit()
                    else:
                        print("登录状态:登录失败!")
                        logout()
                        login()  
                else:
                    pass
                    time.sleep(1)
        except:
                print("")
                break
def logout():
    #       断网操作
    x = requests.session()
    r = x.get(xywhost+"/quickAuthShare.do?wlanacip=&wlanacname="+ wlanacname +"&userId=" + userid + "&passwd=" + passwd + "&mac=&wlanuserip=" + ip)
    data = json.loads(r.text)
    distoken = data["distoken"]
    print("distoken:",distoken)
    time.sleep(2)
    r2 = x.get(xywhost+"/httpservice/appoffline.do?wlanacip=&wlanacname="+ wlanacname +"&userId=" + userid + "&passwd=" + passwd + "&mac=&wlanuserip=&distoken="+ distoken)
    data = json.loads(r2.text)
    message = data["message"]
    print("下线状态:",message)
    quickAuthShare = x.get(xywhost + "/quickAuthShare.do?wlanacip=&wlanacname="+ wlanacname +"&userId=" + userid + "&passwd=" + passwd + "&mac=&wlanuserip=" + ip)
 
 
def get_md5(v):
    import hashlib
    # Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护
    md5 = hashlib.md5()   #md5对象,md5不能反解,但是加密是固定的,就是关系是一一对应,所以有缺陷,可以被对撞出来
    ## update需要一个bytes格式参数
    md5.update(v.encode('utf-8'))  #要对哪个字符串进行加密,就放这里
    value = md5.hexdigest()  #拿到加密字符串
    return value
 
 
main();

 

Python代码GITHUB出处

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CNVnator软件的安装

1. 下载CNVvator CNVvator软件比较难安装&#xff0c;其依赖root软件等 下载地址 点击其release&#xff0c;下载最新版本v0.4.1(CNVnator_v0.4.1.zip) 2. 安装依赖 root 软件 root 的下载地址 root , 选择下列Ubuntu 20版本 解压root压缩包&#xff1a; ##解压 tar -zxv…

pdf转图片操作方法是什么?分享两个简单的方法!

PDF转图片是一个常见的需求&#xff0c;无论是为了方便编辑、共享&#xff0c;还是为了其他用途&#xff0c;我们需要简单而有效的方法来实现这个目标。本文将介绍两种简单的PDF转图片方法&#xff1a;记灵在线工具和截图方法。 记灵在线工具是一个强大而易于使用的在线工具&a…

如何结合云原生和低代码

前言 云原生和低代码是当今IT领域最流行的两个概念。云原生是一种应用架构设计、应用部署乃至应用开发过程的方式&#xff0c;而低代码是一种快速开发应用的方法。这两者有什么关系&#xff1f;如何结合呢&#xff1f; 先思考一个问题——一个杯子和一个苹果如何结合&#xf…

七牛云的使用(图片超详讲解)

一、为什么要使用七牛云的OSS(对象存储服务)&#xff1f; 二、七牛云使用&#xff1a; 登录七牛云官网&#xff0c;注册并认证 (初次认证有30天免费使用权限)新建存储空间 点击创建的空间名字&#xff0c;进入 空间概括如下&#xff1a; 阅读帮助文档&#xff0c;在自己的…

JavaCV实现byte[]转RTMP流

需求&#xff1a;通过私有的api我可以不断收到byte[]形式的视频数据&#xff0c;现在我需要处理这些数据&#xff0c;最终推送出RTMP流。 实现&#xff1a;通过管道流将不断收到的byte[]视频数据转化为输入流然后提供给JavaCV的FFmpegFrameGrabber使用&#xff0c;然后通过FFmp…

两种传输层协议TCP和UDP【图解TCP/IP(笔记十二)】

文章目录 两种传输层协议TCP和UDPTCP与UDP区分UDP的特点及其目的TCP的特点及其目的 两种传输层协议TCP和UDP 在TCP/IP中能够实现传输层功能的、具有代表性的协议是TCP和UDP。 ■ TCP TCP是面向连接的、可靠的流协议。流就是指不间断的数据结构&#xff0c;你可以把它想象成排…

【C++】C++11 (2): 右值引用、移动构造、移动赋值和模板的可变参数

一、右值引用和移动语义 C11更新后&#xff0c;容器中增加的新方法有插入接口函数的右值引用版本 这些接口的意义在哪&#xff1f;网上都说它们能提高效率&#xff0c;它们是如何提高效率的&#xff1f; 请看下面的右值引用和移动语义的介绍。另外emplace还涉及模板的可变参…

开发跨平台APP,是用Flutter还是React Native开发框架?

随着移动互联网的飞速发展&#xff0c;对于开发人员而言&#xff0c;如何快速地开发出兼容不同平台&#xff08;iOS、Android&#xff09;的应用&#xff0c;成为了一个重要的问题。 跨平台应用程序开发框架的好处&#xff1a; 1. 一个App适用于多个设备&#xff1b; 2. 一个…

问一下路过的大神keil5与keil5mdk 的区别是什么?

从Keil C51都Keil5 MDK&#xff0c;不知不觉已经用了Keil十几年。 虽然现在新增了一些开发环境&#xff0c;不过keil对于老工程师来说&#xff0c;应该是最亲切的了… Keil出过很多个版本&#xff0c;很多人最熟悉的是Keil C51和Keil5 MDK。 我们在做STM32程序开发编译的时候…

Centos7安装SDWebui

Centos7安装SDWebui 1.nvidia显卡驱动安装 #查看显卡编号 lspci | grep -i vga#查询显卡型号 http://pci-ids.ucw.cz/mods/PC/10de?actionhelp?helppci#安装依赖包 yum install kernel-devel gcc -y #查看nouveau是否已禁用&#xff0c;如果有内容说明没有禁用 lsmod | gre…

记录一下2023.2kali的默认密码和修改root用户密码的方法

要水一篇博客了…… 默认登录用户名/密码&#xff1a; kali/kali 切换root用户&#xff1a; sudo su 这时输入的密码是kali 然后就切换到了root用户 输入passwd root 提示修改新密码 根据提示输入两遍新密码就修改了root用户的密码啦 &#xff08;感觉改不改的其实也……无所…

大华监控前端实时预览(踩坑)

难点在后端&#xff0c;前端主要是文档太少了&#xff0c;前端难点主要是接入摄像头&#xff0c;摄像头接入了&#xff0c;剩下什么对讲、调整方向、变焦之类的就简单了。 大华官网&#xff1a;https://open-icc.dahuatech.com/#/home 1.到官网下载插件或者demo&#xff0c;我是…

Xamarin.Android实现界面自动添加控件

目录 1、背景说明2、效果3、代码3.1、UI代码3.2、实现代码 4、代码下载5、相关知识点5.1、原理说明5.2、其他说明 6、参考资料 1、背景说明 有时需要在APP中动态的添加控件&#xff0c;因此记录下在Xamarin中的实现步骤。 VS2022社区版 2、效果 3、代码 3.1、UI代码 UI的代…

文件块读写

写文件&#xff1a; size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); 功能&#xff1a;以数据块的方式给文件写入内容 参数&#xff1a; &#xff1a;准备写入文件数据的地址ptr &#xff1a; 为 类型&#xff0c;此参数指定写入文件内容的块数据大…

面试官:说说Redis的持久化以及主从同步呗

目录 1、秃顶面试官&#xff1a;今天我们聊了聊redis的主从模式啊~ 2、秃顶面试官&#xff1a;Redis有哪几种方式进行数据的持久化&#xff1f; 3、秃顶面试官&#xff1a;RDB持久化是什么呢&#xff1f;触发机制又是什么呢&#xff1f; 4、秃顶面试官&#xff1a;嗯&#…

海外问卷调查怎么做?要准备什么?

科思创业汇 大家好&#xff0c;这里是科思创业汇&#xff0c;一个轻资产创业孵化平台。赚钱的方式有很多种&#xff0c;我希望在科思创业汇能够给你带来最快乐的那一种&#xff01; 海外问卷调查业务一直存在。与国内不同&#xff0c;国外有大量的支付问卷资源&#xff0c;所…

一招永久解决github上不去问题,秒开

步骤 进入如下路径&#xff0c;把hosts复制到桌面 在桌面将hosts以记事本方式打开&#xff0c;复制下面内容&#xff0c;退出保存 20.205.243.166 github.com # GitHub Start 140.82.114.4 github.com 199.232.69.194 github.global.ssl.fastly.net # GitHub End3. 将修改好…

S7-200 SMART PLC PID向导详细介绍(如何实现P、PD、PID控制器)

这篇博客主要介绍SMART PLC PID向导的使用,PID控制相关的其它内容请查看专栏系列文章,常用链接如下: SMART PLC PID负压控制(过程量为负数)_负压控制pid控制程序_RXXW_Dor的博客-CSDN博客1、如何实现PID反作用调节? 在有些控制中需要PID反作用调节。例如:在夏天控制空调…

doubletrouble1靶场详解

doubletrouble1靶场复盘 首先扫描到ip后对ip单独一个全面扫描。 nmap -sP 192.168.102.0/24同时扫描一下目录&#xff0c;扫到一个secret&#xff0c;打开看一下。 dirsearch -u http://192.168.102.165发现里面是一个图片&#xff0c;下载到我们kali 中去&#xff0c;因为都…

关于E-PGM+ 烧录器烧录失败的原因分析

最近在调试A96L416方案的一款产品&#xff0c;发现有时候无法烧录成功&#xff0c;当然多数时候你可以通过&#xff1a; 1.多试几次 2.替换烧录线 3. 替换烧录器 予以解决。 但我试了上述方法发现问题依旧&#xff0c;该设备A之前还烧录过&#xff0c;所以我并没有怀疑设…