lifeform 的 free mint 代码交互思路
March 9th, 2023

给大家分享下之前很火的 lifeform 的 free mint 代码交互思路,如何签名,如何找到数据,如何排查的;现在还能 mint 的

抓包分析

请跟我一样,浏览器打开 mint 网址后,打开你的F12,简单的抓个包;看我的设置,去除杂七杂八的请求

钱包签名

我们先用小狐狸跑一遍流程,连接钱包,提示签名。复制下签名信息,注意签名信息的内容,长这样的 'address=你的钱包地址,chain_id=56' 这里你要学会用 web3库 Account 来签名消息

import web3
from eth_account.messages import encode_defunct

privkey='xxxx' # 你的私钥
account = web3.Account.from_key(privkey)
msg = 'address=%s,chain_id=56' % account.address
signature = account.sign_message(encode_defunct(text=msg)).hex()

查找登陆接口

拿到签名的数据后,我们需要找到请求的登陆接口,大致长这样。注意你的标头信息看到 请求网址 和 请求方法,并且打开旁边的载荷,载荷就是要传输的数据,有3个字段 address: 你的钱包地址 chain_id: bsc chainid sign: 刚才你用 web3 Account签名的消息

获取 access_token

通过预览,我们看到了请求返回的数据,我们就是需要返回的 access_token,这个数据需要加到后续请求的header里

header 添加 authorization = access_token

页面点击 mint 我们可以看看发生了哪些请求,找不一致,发现这个接口。看到接口里的header authorization 字段的值就是刚才通过登录接口拿到的access_token

查看再次签名的字段

再次查看载荷,发现有3个字段 address: 你的钱包地址 affAddress: 邀请地址 它+500分 gender: female 固定参数

查看签名后返回的数据并与tx hash InputData对比

再次查看预览,看到了这些数据,不着急,数据字段有点多,先把数据复制好。小狐狸确认 mint ,广播 tx 后,拿到 tx 的inputdata,我们再来对比,确认需要的参数

通过对比,我们发现之前的接口里的

signCode = InputData [10]

wlSignature = InputData [13] [14]

dataSignature.signature = InputData [17] [18]

这样我们就拿到了 free mint 所需要的参数,InputData 其他的字段数据大家可自行分析下,通过与其 他 tx 对比;拼接成完整的数据后,再通过合约交互,就能实现代码的成功 mint 了;

总结

  • 熟练钱包签名

  • 善用抓包工具

  • 细心排查数据

原理分析教程

往期代码交互教程

我的 推特 Lens Link3 Github

Subscribe to junjie9021
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from junjie9021

Skeleton

Skeleton

Skeleton