某某星图sign参数解密分析

大家好,我是TheWeiJun,欢迎来到我的公众号。今天给大家带来星图sign参数的解密分析,希望大家能够喜欢。如果你觉得我的文章内容有价值,记得点赞👍🏻+关注!

特别声明:本公众号文章只作为学术研究,不用于其他用途!

 

逆向与爬虫的故事公众号

专注于网络爬虫、JS逆向、APP逆向、安全攻防实战经验分享及总结。

目录

一、参数分析

二、JS断点调试

三、算法还原

四、思路总结

一、参数分析

    打开目标网站,进行模拟登录,然后fn+f12快捷键打开调试界面。对指定页面json进行参数分析,如下:

定位到json的原始地址,我们发现参数sign值为加密。计算长度为32位,初步怀疑为md5加密,找到加密参数后,进行断点调试。


 

二、JS断点调试

    确定好需要还原的加密值sign之后,我们可以根据发送get请求发起的params参数,进行参数js参数定位,最后确定到加密的js地址如下:

对js代码打上断点,关注入参和出参,进行调试,展示的效果如下:

进入y函数,我们会发现y函数的结果值重新定位到了如下的函数地址:

将断点定位到113023行,选择return后面的返回值,可以看到加密后的结果值为:

"dbe3db84b5559fc87ca43fe4e48842c7"

如下所示:

因为我们怀疑sign值生成和MD5算法有关联,我们将加密的值:也就是:

c+"e39539b8836fb99e1538974d3ac1fe98"

此刻e的值即为他们拼接后的结果,如下:

最后我们将e通过md5加密查看结果:

通过分析,可以确定和js调试的sign值结果一致,接下来进行算法还原!

三、算法还原

查看原始的url地址如下:

可以确定,刚刚的js调试的sign值和请求的url的sign值一致,那么我们对所有的js算法进行还原成python代码吧!完整代码如下:

"""    var c = s.sort().map((function(t) {                var n = e[t];                return function(e) {                    return null == e                }(n) ? "" : t + (!a.includes(t) && function(e) {                    return ["string", "number"].includes(Object(m["a"])(e))                }(n) ? n : t)            }    加密前的值n = c + "e39539b8836fb99e1538974d3ac1fe98""""
params = (    ('resource_id', '1012'),    ('limit', '1'),    ('service_name', 'marketing.AdStarMarketingService'),    ('service_method', 'GetBannerList'),    ('sign_strict', '1'),)data = list(params)data.sort()c = ""ori_c = "limit1resource_id1012service_methodGetBannerListservice_namemarketing.AdStarMarketingServicesign_strict1"for item in data:    c += item[0] + item[1]print(c)  # 还原的cprint(ori_c)  # js调试的c
打印还原的c参数和js调试的c参数,结果如下:limit1resource_id1012service_methodGetBannerListservice_namemarketing.AdStarMarketingServicesign_strict1limit1resource_id1012service_methodGetBannerListservice_namemarketing.AdStarMarketingServicesign_strict1

经过分析,我们发现初始化的c值结果一致,那么接下来进行md5计算吧:​​​

# md5加密import hashlib
ori_sign = "dbe3db84b5559fc87ca43fe4e48842c7"c = f"{c}e39539b8836fb99e1538974d3ac1fe98"  # 需要拼接指定的keysign = hashlib.md5(c.encode()).hexdigest()print(sign)print(ori_sign)
打印的结果如下:dbe3db84b5559fc87ca43fe4e48842c7dbe3db84b5559fc87ca43fe4e48842c7结果完全一致。

四、思路总结

    从入参到出参去进行算法还原,对比入参和出参是否与结果值一致。

本篇分享到这里就结束了,欢迎大家关注下期,我们不见不散☀️☀️😊


往期推荐

猿人学逆向比赛第四题-gRPC题解 | Go版本

DX滑块验证码别乱捅!一不小心就反爬了。

某安网别逆向,一不小心就......

微信自动聊天机器狗,配置chatGPT,比Siri还智能!

被魔改md5加密坑了?某网站魔改md5加密逆向还原 (多种语言还原)

爬虫最快框架collyx,今天开源了...

某站弹幕Protobuf协议逆向分析  |  Go语言版本

某游戏社区App | So层逆向分析

推荐一个干货满满的公众号:

逆向与爬虫的故事

专注于网络爬虫、JS逆向、APP逆向、安全攻防实战经验分享及总结。

作者简介

我是TheWeiJun,有着执着的追求,信奉终身成长,不定义自己,热爱技术但不拘泥于技术,爱好分享,喜欢读书和乐于结交朋友,欢迎加我微信与我交朋友。

分享日常学习中关于爬虫、逆向和分析的一些思路,文中若有错误的地方,欢迎大家多多交流指正☀️

文章来源:逆向与爬虫的故事(公众号)

原文链接:某某星图sign参数解密分析

微信搜:逆向与爬虫的故事;给我一个关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆向与爬虫的故事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值