某江app算法分析

简介: 某江app算法分析

一、抓包分析

1、数据包

GET  http://m.api.zt.jsw.com.cn/v2/member?password=a123456&clientid=1&device_id=010067028741939&ip=1.1.1.1&system_name=android&sign=e96e177e2b9ed89680ac754916333527&siteid=10001&time=1630198142862&type=android&account=15836353612&modules=cloudlogin%3A1 HTTP/1.1
Content-Length: 0
Host: m.api.zt.jsw.com.cn
Connection: Keep-Alive
Accept-Encoding: gzip

2、分析参数,只有sign是密文

0a2653c851af460fa595bd959398a8f1.png

二、将app拖进jeb分析

1、搜索关键词"sign"

0eacb84100b54626af849e6b562bf92a.png

2、tab键转换成java代码,需要查看b.a方法

public RequestParams a(RequestParams params, Context context) {
        params.put("device_id", PhoneInfoUtils.getDeviceId(context));
        params.put("clientid", "1");
        params.put("ip", AppUtil.getLocalIP());
        long timestamp = System.currentTimeMillis();
        params.put("siteid", "10001");
        params.put("system_name", "android");
        params.put("type", "android");
        params.put("sign", b.a(params.getURLHashMap(), timestamp + ""));
        params.put("time", timestamp + "");
        return params;
    }

3、双击进入b.a方法,倒着看,v4是最终结果,v9_2是第一次md5,v6是第二次md5,v9_1是md5的参数

public static String a(HashMap arg14, String time) {
        LinkedHashMap sortParams = new LinkedHashMap();
        Object[] key_arr = arg14.keySet().toArray();
        Arrays.sort(key_arr);
        int v10;
        for(v10 = 0; v10 < key_arr.length; v10 = (((int)v9)) + 1) {
            Object key = key_arr[v10];
            try {
                String v12 = key.toString();
                String v9 = URLEncoder.encode(((String)arg14.get(key)).toString(), "UTF-8");
                sortParams.put(v12, v9);
            }
            catch(UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        StringBuilder result = new StringBuilder();
        for(Object v1: sortParams.entrySet()) {
            Map.Entry entry = (Map.Entry)v1;
            if(result.length() > 0) {
                result.append("&");
            }
            result.append(((String)entry.getKey()));
            result.append("=");
            result.append(((String)entry.getValue()));
        }
        String v9_1 = result.toString().replace("*", "%2A").replace("%7E", "~").replace("+",  "%20");
        crack.log(v9_1);
        String v6 = MD5.md5(v9_1);
        crack.log(v6);
        String v9_2 = v6 + "1fa50ba25ed527f3fd1eb9467686f2bb" + time;
        crack.log(v9_2);
        String v4 = MD5.md5(v9_2);
        crack.log(v4);
        return v4;
    }

4、在上面三处处下断

2d65d23f6d4748949b924e4057485923.png

5、动态调试,触发断点

v9=account=15836353612&clientid=1&device_id=010067028741939&ip=1.1.1.1&modules=cloudlogin%3A1&password=a123456789&siteid=10001&system_name=android&type=android

2e9b90b2ca334476abebe75bafe6eeaa.png

V6=585179fa211c64189ef1cfb45b8b5e52

6、v6是v9的md5值

4cebaac233b3433da32a72337a77fc60.png

7、第二个

v9=2db65aefd5f993ee290b7b709edc8f46+1fa50ba25ed527f3fd1eb9467686f2bb+1630223825602,再进行一次md5加密,记得去了+,这里只是让大家看清楚

4cebaac233b3433da32a72337a77fc60.png

禁止非法,后果自负

目录
相关文章
|
24天前
|
数据采集 机器学习/深度学习 算法
|
20天前
|
人工智能 算法 BI
第一周算法设计与分析 D : 两面包夹芝士
这篇文章介绍了解决算法问题"两面包夹芝士"的方法,通过找出两个数组中的最大最小值,计算这两个值之间的整数个数,包括特判不存在整数的情况。
|
12天前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。
|
20天前
|
算法
算法设计与分析作业
这篇文章是关于算法设计与分析的作业,其中包含了两个算法实现:一个是使用分治算法实现的十进制大整数相乘(包括加法、减法和乘法函数),并进行了正确性和健壮性测试;另一个是使用快速排序思想实现的分治查找第K小元素的程序,并分析了其平均和最坏时间复杂度。
算法设计与分析作业
|
14天前
|
安全
【Azure App Service】App service无法使用的情况分析
App Service集成子网后,如果子网网段中的剩余IP地址非常少的情况下,会在App Service实例升级时( 先加入新实例,然后在移除老实例 )。新加入的实例不能被分配到正确的内网IP地址,无法成功的访问内网资源。 解决方法就是为App Service增加子网地址, 最少需要/26 子网网段地址。
|
1月前
|
算法 Java 测试技术
算法分析(蛮力法与减治算法应用实验报告)
这篇文章是关于算法分析的实验报告,介绍了如何使用蛮力法解决背包问题,并通过伪代码和Java代码实现,同时分析了其时间效率;还介绍了基于减治法思想实现的二叉查找树的插入与查找,同样提供了伪代码、Java源代码实现和时间效率分析,最后展示了测试结果截图。
算法分析(蛮力法与减治算法应用实验报告)
|
16天前
|
编解码 算法 图形学
同一路RTSP|RTMP流如何同时回调YUV和RGB数据实现渲染和算法分析
我们播放RTSP|RTMP流,如果需要同时做渲染和算法分析的话,特别是渲染在上层实现(比如Unity),算法是python这种情况,拉两路流,更耗费带宽和性能,拉一路流,同时回调YUV和RGB数据也可以,但是更灵活的是本文提到的按需转算法期望的RGB数据,然后做算法处理
|
20天前
|
人工智能 算法
第一周算法设计与分析:C : 200和整数对之间的情缘
这篇文章介绍了解决算法问题"200和整数对之间的情缘"的方法,通过统计数组中每个数模200的余数,并计算每个同余类中数的组合数来找出所有满足条件的整数对(i, j),使得\( A_i - A_j \)是200的整数倍。
|
20天前
|
人工智能 算法
第一周算法设计与分析 G : 排队援救
这篇文章介绍了解决算法问题"排队援救"的方法,通过使用队列和映射来模拟救援点的排队过程,并确定最终得到救援的人的顺序和编号。
|
20天前
|
算法 C++
第一周算法设计与分析 E : 构造回文串
这篇文章介绍了解决算法问题"构造回文串"的方法,即判断给定的整数N(视为字符串)是否可以通过在前面添加任意个0(或不添加)来构造一个回文串,并给出了相应的C++代码实现。