开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 8819|回复: 9
收起左侧

[技术文章] pdd商家发布商品validate_message算法分析

[复制链接]
结帖率:67% (2/3)
发表于 2023-1-22 03:53:22 | 显示全部楼层 |阅读模式   广西壮族自治区南宁市





    • 2023兔年吉祥,新年快乐。
    • 新的一年,新的开始,祝大家"兔"然暴富,"兔"个平安


    最近折腾pdd商家的接口,遇到了anti_content,virtual_mobile等算法,都逐一攻破了,多半都是运气跟到的;这次又遇到了个算法,validate_message,这个就比较简单,简单来分享一下我是怎么把算法拿出来调用的。


    • 算法定位
      抓包时我们可以看到

      如图所示的validate_message和validate_message_v2,以为v2是另一个版本的算法,但其实都是一个算法,只是传进去的加密文本不一样而已
      直接F12控制台,搜索关键字,就能快速定位到代码

      下了断点后

      分别看到p和g传进去的参数是
      p = goods_commit_id、cat_id、goods_type;
      g =  goods_commit_id、cat_id、mall_id、id
      他们用^符号隔开,我们看到h.a是一个方法,直接跳进去查看代码

      下了断点,并且断下来之后,在控制台输入h.a回车,就能看到,双击箭头处,就可以跳到代码位置。

      进来之后,这个断点的位置t.a = function(o)就是它的入口,o就是传进去的p或者g变量,返回的结果即是加密结果。
      所以用的都是一个算法。
      我们直接把75.74f33ab2.chunk.js整个文件代码拿出来,用nodejs调试。
    • 复制粘贴

      拿到js代码后,nodejs环境必须得装,这里去查阅相关资料就可以了,我们直接运行这份js代码先看看有无报错

      提示window不存在,因为window是浏览器才有的对象,所以nodejs里没有,直接定义一个空的window给它,在顶部加上
      [JavaScript] 纯文本查看 复制代码
      var window={};


      再次运行没有发现报错,但是这个时候你肯定疑惑,应该怎么触发执行t.a = function(o)函数,而且这个函数是在1601: function(o, t, e)里面的。
    • 调试
      这里其实它执行的代码是给window.webpackJsonp_mfns_goods赋值
      如果不懂怎么修改的话,我们其实直接访问window.webpackJsonp_mfns_goods变量就好了,如下图所示

      我在最底部输出了window.webpackJsonp_mfns_good变量,发现它1601函数是在[[[,1601:function]]]里面,所以调用的方法应该是
      window.webpackJsonp_mfns_goods[0][1]
      我们再次输出看看结果

      这个时候我们就需要调用1601的函数了,因为我们真正需要的算法在这个函数里面。

      报错了,前往报错的地方,分析下原因

      我们看到,1601需要传递3个参数的,我们调用的时候一个参数没有传递
      其次就是我们需要的算法函数,它是给t.a进行赋值,而t正是我们应该传入进去的第2个参数,也没有传。
      为了弄清楚这3个参数是什么,我们直接给1601这里下断点,然后**网页,让这个断点触发
      (PS:**网页是因为有可能它之前已经执行过1601函数了,你现在去触发算法,这个1601并不会触发调用的,可能断不到)

      断点已经触发了,我们看看o,t,e它都传的什么参数,我们直接照搬传就好了。
      我们发现t是一个空的{}对象,可以直接新建空的传进去作为第二个参数。
      第一个参数是一个空的object,也可以直接复制出来使用
      第三个参数它是一个函数,但是仔细看了下代码,它好像并没有用到,也可以传空


    最后我们把代码改成如下:


    最后就能拿到t.a的函数进行调用了。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
结帖率:0% (0/1)

签到天数: 2 天

发表于 4 天前 | 显示全部楼层   广西壮族自治区桂林市
大佬写得很详细..
回复 支持 反对

使用道具 举报

结帖率:88% (23/26)

签到天数: 9 天

发表于 2024-5-5 21:53:28 | 显示全部楼层   福建省泉州市
感谢大佬分享
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 3 天

发表于 2024-4-18 02:44:58 | 显示全部楼层   香港特别行政区*
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2024-4-3 10:53:46 | 显示全部楼层   上海市上海市
感谢大佬分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 4 天

发表于 2023-12-29 01:54:23 | 显示全部楼层   山东省聊城市
谢谢分享
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2023-12-25 01:57:26 | 显示全部楼层   浙江省台州市
提示: 该帖被管理员或版主屏蔽
回复 支持 反对

使用道具 举报

签到天数: 3 天

发表于 2023-3-12 10:37:33 | 显示全部楼层   广东省揭阳市
老哥,这个validate_message ,系统好像并不认证这个加密的结果,随意传随机字符都可以上哦
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)

签到天数: 2 天

 楼主| 发表于 2023-2-25 06:48:56 | 显示全部楼层   广西壮族自治区南宁市
773500774 发表于 2023-2-8 05:02
能留给联系方式吗

私我吧··
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 6 天

发表于 2023-2-8 05:02:28 | 显示全部楼层   广东省云浮市
能留给联系方式吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表