mercari 电商平台ECDSA解密 dpop参数

概要

ECDAS说明

ECDSA(‌椭圆曲线数字签名算法)的参数主要包括:

  1. 椭圆曲线‌:通常表示为
    E : y 2 = x 3 + a x + b ( m o d p ) E: y² = x³ + ax + b (mod p) E:y2=x3+ax+b(modp)
    ,其中p是一个大素数,a、b、x和y均在有限域GF§中取值,且要求4a³ + 27b² ≠ 0。曲线的选择决定了算法的安全性,曲线的阶(即曲线上离散点的数量)越大,安全性越高。

  2. 基点G‌:椭圆曲线上的一个点,用于生成公钥。

  3. 私钥k‌:一个整数,小于基点G的阶n,用于生成公钥K=kG。

  4. 公钥K‌:由私钥k和基点G通过椭圆曲线上的乘法运算生成的一个点,表示为K=(x, y)。公钥用于验证签名,而私钥用于生成签名。

生成ECDSA 密钥对官方示例
const { subtle } = globalThis.crypto;

async function generateEcKey(namedCurve = 'P-521') {
  const {
    publicKey,
    privateKey,
  } = await subtle.generateKey({
    name: 'ECDSA',
    namedCurve,
  }, true, ['sign', 'verify']);

  return { publicKey, privateKey };
}

声明

本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除!

整体架构流程

查找数据源
分析接口
判断接口是否加密
JS解密
查找参数来源
设置XHR断点
跟栈查找加密函数
将加密函数还原
结束

技术细节

1.查找数据源接口

在这里插入图片描述
接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5Czhang%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20241217234313878.png&pos_id=img-9D3q4F0y-1734452218268)](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https://github.com/user-attachments/assets/9a8bf2db-c398-4581-bc08-3fdc9314f273&pos_id=img-OIAYZU6q-1734452241131#pic_center)

2.分析加密参数

在这里插入图片描述

全局搜索"Dpop"发现全部都有"Dpop"且都不同

3.分析接口加密类型

常见的加密类型:
  • 线性散列算法(签名算法)MD5

  • 对称性加密算法AES DES

  • 非对称性加密算法 RSA

但是这个参数不在这常见的加密类型里面,很伤,搞我一手

第一次遇到这种结构的,查看启动器也没分析到什么东西

4.上XHR断点

有些网站会有无限debug,可以用替换法或者hook

在这里插入图片描述

跟栈的时候发现个很像的给上断点结果不停
在这里插入图片描述

历经四小时终于找到这个加密生成的方法了

小技巧:

异步方法直接调用返回空可以在后面加then

在这里插入图片描述

进去之后就能看到是怎么生成的了把他还原就好了

一共需要四个参数,数字签名算法和加密哈希函数(官网使用的是512这里用的256) 私钥和代加密文本

直接扣在python使用有个问题就是他是异步函数但是execjs不支持异步函数返回就返回了空给我,我找遍百度都没有可用的方法,可能太菜了,最后用python还原了这个加密函数

小结

源代码 GitHub:https://github.com/chengguo1/mercari-dpop-

麻烦点个小星星,谢谢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值