web3项目网站 sc_item_list_page列表sign、content参数,data数据还原

在之前公司抓取过一段时间web3相关数据,昨天研究记录下,结果今天就增加登录,跑下程序发下还好,网站逻辑和参数没有变化,抓紧记录下,要不改完,思路全网了。

每次点击翻页能看到如下的数据,sign、content参数不知道是啥。概率是加密了,搜索明文内容找不返回数据。

返回数据如下:内容很长一个都看不懂

查找sign,好多,最后一点点跟。总算找到 content: (0, u.encryptData)(n)

t的明文应该是url参数,通过他的加密生成相应的加密参数。进入到方法中看到具体的加密方法

从控制台执行结果看,应该是一个参数,具体是哪个,可以后面如何赋值。

通过下面可以判断上面是content,通过content生成一个md5值。传入md5值,生成sign值。

在分析具体的加密解密方式。如下第一个是公钥加密,下面是私钥加密,sha1算法,熟悉常用加密算法能猜到这是rsa,下面有秘钥定义和秘钥内容,这个在页面第一次初始化时候生成。

data数据的还原

AES_ECB模式实现
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
# pad 填充, unpad 解填充
from base64 import b64encode, b64decode
import execjs

def encrypt_ecb(key,data):
    # 随机生成密钥
    aes = AES.new(key, AES.MODE_ECB)  # (密钥, 加密模式)
    res = aes.encrypt(pad(data, 16))
    return res
 
 
def decrypt_ecb(key,data):
    aes = AES.new(key, AES.MODE_ECB)  # (密钥, 解密模式)
    res = aes.decrypt(b64decode(data))
    # 如果不进行解填充,后面就会有奇怪的字符
    return unpad(res, 16,'pkcs7').decode()

def aes_data(data):
    key =b'秘钥'
    decrypt_data = decrypt_ecb(key,data)
    return json.loads(decrypt_data)

def encrypt_md5(text):
    # 创建一个MD5对象
    md5 = hashlib.md5()
    
    # 将文本转换为字节类型并更新到MD5对象中
    md5.update(text.encode('utf-8'))
    
    # 获取加密后的结果(16位十六进制表示)
    encrypted_result = md5.hexdigest()
    
    return encrypted_result

def get_content(data):
    js_str = """
    const NodeRSA = require('node-rsa');
    function get_content(data){
        const publicKey = "-----BEGIN PUBLIC KEY-----  秘钥 -----END PUBLIC KEY-----"
        const encrypt = new NodeRSA(publicKey,'pkcs8-public');
        encrypt.setOptions({ encryptionScheme: 'pkcs1' })
        const encryptedData = encrypt.encrypt(data, 'base64');
        console.log('Encrypted Data:', encryptedData);
        return encryptedData
    }
    """
    js_obj = execjs.compile(js_str)
    res = js_obj.call('get_content',data)
    return res

如有问题可以联系我删帖,或者交流

微信号:liu_yue_yang

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值