某某星图sign参数解密分析

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

    特别声明:本公众号文章只作为学术研究,不作为其他不法用途;如有侵权请联系作者删除。

 目录

一、参数分析

二、JS断点调试

三、算法还原

四、思路总结

逆向与爬虫的故事(公众号

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

一、参数分析

    打开目标网站,进行模拟登录,然后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)  # 还原的c
print(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"  # 需要拼接指定的key
sign = hashlib.md5(c.encode()).hexdigest()
print(sign)
print(ori_sign)
​
打印的结果如下:
dbe3db84b5559fc87ca43fe4e48842c7
dbe3db84b5559fc87ca43fe4e48842c7
结果完全一致。

四、思路总结

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

往期推荐

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

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

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

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

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


作者简介

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

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

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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

逆向与爬虫的故事

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

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

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

打赏作者

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

抵扣说明:

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

余额充值