X壳找房登录 如有不良影响 深感抱歉,找我删除:
wx : abcEGF618
本文章仅供学习与娱乐 如有 非法获动 与本人无关
抓包
算法助手 直接秒了, 这里就不提了
请求体
请求头
请全体逆向
看着挺唬人 其实不用管他里面的内容
请求头逆向
username 和 password
直接进行 jadx 反编译
先进行搜索 username 发现有点多 暂时放弃
搜索 password 去 瞬间少很多
看重复的 也就是 最后 那几个 往里进
可以看到是在 map 里加东西 进去看
frida hook 一下测测
没想到他反 frida 头疼
通过 LSPosed (XP) 框架 用算法助手 hook 试试
结果 账号密码加密 都走这个函数 直接出了
进去看 参数一: 手机号 参数二: 类似于base64
结合 加密方法 可以看到 参数二: 进行了base64 解码 变 字节数组
最后 创建了 RSA/ECB 的加密 拿解码的字节数组 创建个加密的 公钥
之后把 手机号 进行RSA加密 转 base64字符串
python还原加密
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
def RSA_encrypt(public_key_str, data_str):
public_key_bytes = base64.b64decode(public_key_str)
public_key = serialization.load_der_public_key(public_key_bytes)
data_bytes = data_str.encode('utf-8')
encrypted_data = public_key.encrypt(
data_bytes,
padding.PKCS1v15()
)
encrypted_data_base64 = base64.b64encode(encrypted_data)
return encrypted_data_base64
def RSA_txt(user_paword):
public_key_str = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCCB81pk1Go/d7K8unYqeB6YyQdDgIRsLji7BxlBfMC2U8/0lyOLxJ6sQb1R" \
"mKaILuxN0hRci4zWPfkkPhttWaogq3XABYiDYbx0843ge4D79pG21+qWplw43uHZNs0B6iUChJW1O3DDJPXGwj50L1ySTVt7" \
"G7iqsIr9PLZVRSZmQIDAQAB"
data_str = user_paword
encrypted_data_base64 = RSA_encrypt(public_key_str, data_str)
return encrypted_data_base64.decode('utf-8')
至此 账号密码 加密结束了
发起登录请求 显示 登录状态过期
不卖关子了 这里其实是 请求头中的 loginTicketId 搞的鬼
loginTicketId 分析
搜索 url 看看 查看用例
随便点一个看看
可以在 login 放了个 buildparams 这个东西 源于上面 Jsonparamsbuilder.buildparams 传了个 hashmap 接下来看 hashmap
看最后一个 put 进去的 key 和 val
点进去看看 key 是啥 看起来好像没啥问题 就是这里了
看 val
这里我就不看了 因为 点进去分析的话 都是获取 没有生成的地方
这时我就想 他都是获取 有没有可能是请求返回的呢 看请求包 成功找到
然后写请求 啥都不校验 直接发包 就可以获取
开始组装请求 发送登录看看 成功
由于我玩的太多 导致 这个app 登录加了 滑块验证 有兴趣大家去玩玩滑块吧