某江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

禁止非法,后果自负

目录
相关文章
|
1月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
58 4
|
3月前
|
人工智能 算法 BI
第一周算法设计与分析 D : 两面包夹芝士
这篇文章介绍了解决算法问题"两面包夹芝士"的方法,通过找出两个数组中的最大最小值,计算这两个值之间的整数个数,包括特判不存在整数的情况。
|
9天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
23天前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。
|
29天前
|
算法
PID算法原理分析
【10月更文挑战第12天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
2月前
|
算法 搜索推荐 开发者
别再让复杂度拖你后腿!Python 算法设计与分析实战,教你如何精准评估与优化!
在 Python 编程中,算法的性能至关重要。本文将带您深入了解算法复杂度的概念,包括时间复杂度和空间复杂度。通过具体的例子,如冒泡排序算法 (`O(n^2)` 时间复杂度,`O(1)` 空间复杂度),我们将展示如何评估算法的性能。同时,我们还会介绍如何优化算法,例如使用 Python 的内置函数 `max` 来提高查找最大值的效率,或利用哈希表将查找时间从 `O(n)` 降至 `O(1)`。此外,还将介绍使用 `timeit` 模块等工具来评估算法性能的方法。通过不断实践,您将能更高效地优化 Python 程序。
57 4
|
1月前
|
算法
PID算法原理分析及优化
【10月更文挑战第6天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
2月前
|
算法 程序员 Python
程序员必看!Python复杂度分析全攻略,让你的算法设计既快又省内存!
在编程领域,Python以简洁的语法和强大的库支持成为众多程序员的首选语言。然而,性能优化仍是挑战。本文将带你深入了解Python算法的复杂度分析,从时间与空间复杂度入手,分享四大最佳实践:选择合适算法、优化实现、利用Python特性减少空间消耗及定期评估调整,助你写出高效且节省内存的代码,轻松应对各种编程挑战。
41 1
|
2月前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。
121 19
|
3月前
|
算法
算法设计与分析作业
这篇文章是关于算法设计与分析的作业,其中包含了两个算法实现:一个是使用分治算法实现的十进制大整数相乘(包括加法、减法和乘法函数),并进行了正确性和健壮性测试;另一个是使用快速排序思想实现的分治查找第K小元素的程序,并分析了其平均和最坏时间复杂度。
算法设计与分析作业

热门文章

最新文章