- A+
所属分类:系统文档
文章目录
前言
很早就研究过了,也用于计量便民平台上,这里我写个文章重新再演示下
环境配置
随便找个模拟器抓包,这里我直接用 mumu 新建了个
装好云莓智能后打开
打开 fiddler,记录电脑本机 ip
然后模拟器进入 WiFi 设置代理
fiddler 有所变化就说明成功了
然后打开浏览器(建议先打开浏览器再设置代理,mumu 似乎通过上面那个接口与后端通信,设置代理后就会出现点击无反应问题) 输入 ip:8888 (8888 是 fiddler 默认端口,可以修改)
下载 Root 证书
安卓 12 不能直接点击证书安装
我一开始在 设置-安全 中没能找到安装证书的选项
搜了一下才知道安卓12把安装证书放到 设置-网络与互联网-互联网-网络偏好设置 里来了
我们安装好证书
抓包分析
云莓智能输好账密,点击登录
查看 fiddler 的包
登录部分很简单,没有验签什么的,只有一个用户名(手机号)和密码(MD5)的参数 登录成功便可获得 token
header 中携带 token 去访问用户信息(测试只有 tokenData 和 tokenUserId 是必要的)
然后便可获得新的 token
使用新的 token 去获取门锁信息(注:如果没有权限是获取不到的,比如假期非留校人员)
可以获得门锁蓝牙地址、链接密钥、电量等信息 再使用新 token 去获取室友信息
里面学院、专业、班级、手机号啥的都有
开源库
我已经用 php 写了个库:
各位可直接使用 composer 安装:
composer require foskytech/yunmei-auth
演示文件:
<?php
require_once '../vendor/autoload.php';
use FoskyTech\YunmeiAuth;
$yunmei = new YunmeiAuth; // 登录
$login = $yunmei->login('手机号', '密码');
# print_r($login);
$userId = $login['data']['userId'];
$token = $login['data']['token'];
// 使用登录返回的参数获取学校信息
$school_info = $yunmei->schoolInfo($userId, $token);
# print_r($school_info);
$schoolNo = $school_info['data']['schoolNo'];
$serverUrl = $school_info['data']['serverUrl'];
$token = $school_info['data']['token']; // 服务器返回了新的token
// 获取宿舍信息及门锁信息
$dorm_info = $yunmei->dormInfo($serverUrl, $userId, $token, $schoolNo);
# print_r($dorm_info);
$areaNo = $dorm_info['data']['areaNo'];
$buildNo = $dorm_info['data']['buildNo'];
$dormNo = $dorm_info['data']['dormNo'];
// 获取室友列表
$roommate = $yunmei->getRoommate($serverUrl, $userId, $token, $schoolNo, $areaNo, $buildNo, $dormNo);
print_r($roommate);
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫