avatar

目录
Python脚本搭配Mac自动操作登录学校热点

这个登录也用了有一段时间了,现在就总结下具体的操作过程。

Mac自带了一款应用,叫自动操作,可以自己定义多种操作,方便使用。这里要用自动操作登录Wifi,首先还是要写脚本,写脚本就要分析网页的登录请求是什么样的,以便构造。

连接Wifi以后,登录页面的IP固定。界面很简单,输入学号和密码,再选择运营商即可登录。

输入学号为account,密码为123456,运营商中国移动。然后打开BurpSuite,开启浏览器代理,点击登录,抓取登录请求的包。在BurpSuite看到请求包的内容如下,参数还是比较多的。user_account是账户名@运营商(@的URL编码为%40),user_account是密码,wlan_user_ip是当前IP。

然后,其他的参数意义我就不知道了,然后找到了室友给路由器写的脚本,发现很多参数是固定的,一些参数是时间戳,其他参数不用管,然后账户名,密码和运营商一选定,就可以登录Wifi了。感觉学校的一些东西做得还是不太讲究,2333。登录请求后,服务器会返回一个json数据,反映登录状态,脚本可根据这个判断是否出错。

整体的Python脚本如下:

import time
import json
import base64
import requests

# 登录热点
def login(user, pwd, provider, ip, mac, stamp):
    url = "http://10.2.5.251:801/eportal/?c=Portal&a=login&callback=dr1594111093261&login_method=1"
    # user_account=05171759%40unicom&user_password=060534&wlan_user_ip=10.4.58.64&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=3.0&_=1594111654
    # 添加账户信息
    url += "&user_account={0}@{1}&user_password={2}".format(user, provider, pwd)
    # 添加wlan信息
    # 貌似登录热点并不需要wlan_user_ip和wlan_user_mac,所以删去了
    # url += "&wlan_user_ip=10.4.58.64&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name="
    url += "&wlan_ac_ip=&wlan_ac_name="
    # 添加js版本和时间戳
    url += "&jsVersion=3.0&_={0}".format(stamp)
    res = requests.get(url)
    res_text = res.content.decode("utf-8")
    # 获取纯json格式数据
    res_json = json.loads(res_text.split('(')[1].split(')')[0])
    # 登录结果
    result = res_json.get("result")
    if result == '1':
        print("登陆成功")
    else:
        msg = base64.b64decode(res_json.get('msg')).decode()
        if msg == 'userid error1':
            print('不存在此用户,请检查用户名是否填写错误,或者运行商选择错误')
        elif msg == 'userid error2':
            print('用户密码错误')
        elif msg:
            print('未知错误:', msg)
        else:
            print('无错误', msg)

if __name__ == "__main__":
    # 账户信息,自己的账户、密码
    user = "********"
    pwd = "********"
    # 供应商  移动:cmcc, 联通:unicom, 电信:telecom
    provider = "********" 
    ip = ""
    mac = "000000000000"
    # 生成时间戳
    time_stamp = str(int(time.time() * 1000))
    # 登录
    login(user, pwd, provider, ip, mac, time_stamp)

找个位置保存好上面的脚本,打开Mac上的自动操作,新建“快速操作”,在资源库中选择“运行Shell脚本”。工作流程收到“没有输入”,位于“任何应用程序”。在右下方的文本框,输入/usr/bin/python3 /Users/crownz/Code/VsCode/loginNetwork/school_network.py,以启动脚本,这个根据自己放置的位置而有所不同。

若现在连接了Wifi,可以点击运行来测试下。运行无误后,保存为“热点登陆.workflow”文件,这里把它放到了~/Library/Services目录下,这样就可以在左上方的“服务”下拉栏中看到我们的自动操作选项。如果想去掉,可以在服务偏好设置里面自定义。这个东西是全局的,在任何应用的“服务”下拉栏都可以使用。

参考

[1] 给 Mac 添加自定义服务

文章作者: crownZ
文章链接: https://crownz-sec.github.io/2020/09/05/mac_automatic_login/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 crownZ's Blog

评论