某校家园登录 如有侵权 深感抱歉,找我删除:
wx : abcEGF618
本文章仅供学习 如有 非法获动 与本人无关
壳
本程序是加壳的 直接找好心人脱一下
抓包
抓包检测 客户端证书校验 某安 或者 某巴克 文章中有讲
抓包分析
请求头 信息
请求体 信息
请求头参数逆向
token
全局搜索 发现有这么多 尝试 hook了 几个 发现没有我想要的
看抓包 在第一个数据包里 返回了个 token
猜测是不是 登录用的这个 token 通过对比 确实是的
那么 可以看到 在返回 token 的数据包 里 也有 sign token 的值 怎么来的呢
猜测 当前 token 是 下一次 打开app获取token 用的
因为在发的第一个请求包里 就有加密 然后 通过 frida hook 又无收获
其实猜测是对的
当前token
在次打开app 请求头的token
突发好奇 如果app清除数据打开 他是怎么 加密的 会不会是固定值呢
下图可以看到 清除数据 打开 没了token
sign值呢 我多清除数据 打开app 发现他固定
下面就是写请求获取token 不要懒 自己写 请求
sign
搜索一下 没多少 定位到这个方法
进去 看
CameraQuirks.m3016q(obj3 + c) 这个方法出的值 sign
接着往里进 成功找到加密方法
hook方法 加密值 和 登录的sign 值进行对比 (包一样的)
看入参 前面的是 请求体的值 后面是之前拿的token
使用 SHA-256 哈希函数计算 HMAC 值 之后 每个字节转换为两位小写十六进制字符串,然后将这些字符串连接成一个完整的十六进制字符串
加密代码
import hmac
import hashlib
import json
def Login_Sign(phone,password_encrypt,Token):
key = "Anything_2023"
data = json.dumps({"phone":phone,"password":password_encrypt,"dtype":6,"dToken":"0"}) + Token
hmac_result = hmac.new(key.encode('utf-8'), data.encode('utf-8'), hashlib.sha256).digest()
hex_result = ''.join(format(x, '02x') for x in hmac_result)
return hex_result
请求体参数逆向
请求体 就一个 password 是密文 其他都是明文 具体可以看抓包分析
PassWord
一看就是哈希 只是不知道是不是 无加盐的哈希
通过工具 对我输入的密码 进行hash计算 然后就对上了
md5加密代码
import hashlib
def MD5(password):
m = hashlib.md5()
m.update(password.encode("utf8"))
return m.hexdigest()
然后本次 登录 圆满结束