本篇文章仅用于交流与学习,严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除。
感谢关注!您的关注和点赞就是我的动力
1.逆向目标
aHR0cHM6Ly93d3cuaXNodW1laS5jb20vdHJpYWwvY2FwdGNoYS5odG1s

2.逆向分析
先看发包接口,不需要逆向,把图片下载下来识别缺口距离(最后需要除以2),把返回的rid保存下来,后面的验证接口需要

网页上的图片进行了缩放

python
def verify():
det=ddddocr.DdddOcr(det=False,ocr=False)
with open("bg.png", "rb") as f:
bg_img = f.read()
with open("fg.png", "rb") as f:
slice_img = f.read()
res = det.slide_match(slice_img, bg_img)
return round(res["target"][0]/2)
看验证接口,有三个参数需要逆向,rid是上个接口返回的,

打断点跟栈,到这里的时候参数已经生成,继续往上跟

到这里,找_0x593816的生成位置

在这里

进入方法内部后,找到了目标参数的加密位置,把这三行手动解一下混淆,

解完后如下所示,wi的入参需要滑块滑动的距离,gq的入参需要滑动轨迹,vs的入参需要滑动时间,自己造一个就行,现在主要看getEncryptContent这个方法,

进入方法内,发现是一堆控制流,自己手动解一下混淆再简化一下,现在主要是找_0x1bc64e和_0x504466这两个方法,把这两个方法扣下来,该缺的东西再补上就行了


轨迹代码如下
python
def generate_track(target_distance: int):
"""
【唯一入参】滑动的目标距离(整数,如 90、215、109)
【固定规则】轨迹点数:15~18个(随机)
【轨迹格式】[x偏移, y偏移, 时间戳(毫秒)]
"""
# 1. 严格控制点数:随机15-18个点
total_points = random.randint(20, 22)
track = []
x = 0
timestamp = 0
mid_point = total_points // 2 # 加速/减速分界点
# 2. 生成精准步长(总和=目标距离,前快后慢)
steps = []
for i in range(total_points):
# 前半段加速(大步长),后半段减速(小步长)
if i < mid_point:
step = random.randint(3, 6)
else:
step = random.randint(1, 4)
steps.append(step)
# 调整步长总和,确保刚好等于目标距离
sum_steps = sum(steps)
diff = target_distance - sum_steps
if diff != 0:
steps[-1] += diff # 最后一个点补齐距离
# 3. 生成完整轨迹
for step in steps:
x += step
# Y轴:真人滑动微小波动(-2 ~ 2)
y = random.randint(-2, 2)
# 时间戳:每点递增80-120ms
timestamp += random.randint(99, 102)
track.append([x, y, timestamp])
return track
3.逆向结果
最后返回的结果是pass就是成功通过了
