飞瓜app_sign逆向

API接口:http://appapi.feigua.cn/api/v1/user/loginByPhoneNew

使用charles抓包结果:

在这里插入图片描述

通过抓包可以看到请求头中包含sign参数,点击登录之后发现sign参数发生变化

使用jadx反编译该apk,通过搜索接口关键词查找(loginByPhoneNew),如图所示:

在这里插入图片描述

点进去查看:

在这里插入图片描述

通过观察发现,在com.feigua.androiddy.d.k.e().g(com.feigua.androiddy.b.a.b(“v1/user/loginByPhoneNew”)这里进行了该请求,点击进入:

在这里插入图片描述

通过观察g方法,发现了与请求头相关的信息,

在这里插入图片描述

其中,builder2.addHeader(“Sign”, com.feigua.androiddy.b.a.a(hashMap, d2, currentTimeMillis + “”));该方法实现了sign参数的封装。点击进入a方法。

在这里插入图片描述

到这里我们可以使用frida对a方法进行hook查看出入的参数是什么,frida代码如下:

		var a = Java.use('com.feigua.androiddy.b.a');
        a.a.implementation = function(arg1,arg2,arg3){
            console.log(arg1,arg2,arg3);
            var result = this.a(arg1,arg2,arg3);
            console.log(result);
            return result;
        }

hook结果:

在这里插入图片描述

到这里可以猜测该加密可能是md5加密,返回继续查看a方法其中返回值为i.a(stringBuffer.toString()),继续进入返回值中的a方法:

在这里插入图片描述

这里就很清楚的知道时使用了md5加密,继续用frida hook该方法:

		var i = Java.use('com.feigua.androiddy.d.i');
        i.a.implementation = function(a){
            console.log(a);
            var result = this.a(a);
            console.log(result);
            return result;
        }

hook结果:

在这里插入图片描述

到这里就清楚知道sign参数的生成过程了,对CCd35181!!6445btrrtBBertert===&phone=18235015508&platform=Android&pwd=123456&ts=1672494804进行md5加密并且转大写,其中ts为时间戳,phone和pwd为用户名和密码,其余都为固定参数。

接下来使用python进行模拟请求

import requests,time,execjs

url = 'http://appapi.feigua.cn/api/v1/user/loginByPhoneNew'

ts = int(time.time())
ctx = execjs.compile(open('./sign.js',encoding='utf-8').read())
md5_arg = 'CCd35181!!6445btrrtBBertert===&phone=18235015508&platform=Android&pwd=123456&ts='+str(ts)
sign = (ctx.call('md5',md5_arg)).upper()

headers ={
    "Platform": "Android",
    "Imei": "5277a742-0307-4c35-a995-60626971d081",
    "Version": "162-1.6.2",
    "LoginType": "",
    "LoginId": "",
    "ts": str(ts),
    "Sign": sign,
    "Content-Type": "application/x-www-form-urlencoded",
    "Content-Length": "28",
    "Host": "appapi.feigua.cn",
    "Connection": "Keep-Alive",
    "Accept-Encoding": "gzip",
    "User-Agent": "okhttp/3.12.0"
}

params = {
    'Phone':'18235015508',
    'Pwd' : '123456'
}

response = requests.post(url,headers=headers,data=params).text

print(response)

运行结果:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值