极验反混淆调用w值图片还原记录

极验反混淆调用w值图片还原记录极验滑块图片还原 缺口识别 ast 反混淆

大家好,欢迎来到IT知识分享网。

2022年6月3日22:07:35
[地址]: https://www.geetest.com/demo/slide-popup.html
如下是返混淆的js
在这里插入图片描述
以9.10为例子
返混淆前 6771行代码
在这里插入图片描述
反混淆后
在这里插入图片描述
返混淆流程大概就这样:(好像不能直接贴代码,不然过不了)
在这里插入图片描述
剩下的流程大概就是找加密位置,扣代码咯。
w1:
在这里插入图片描述w2:
在这里插入图片描述
长度和浏览器计算的一样,就是请求的时候需要模拟鼠标点击,和点击时间,这应该就是所谓的风控,一些浏览器的值也加入了计算,如果指纹少了,node和浏览器计算的长度不一样。
w3:
自己摸索。算法一样。网上挺多的。

首先是图片还原:
还原前图片
在这里插入图片描述还原后的图片

还原后有图片
图片还原代码javascript版本:

const { 
   createCanvas, loadImage} = require('canvas') const webp = require("webp-converter"); const fs = require('fs'); function bg_image_path(input_path, out_path, bg_path) { 
    const webp = require('webp-converter'); const result = webp.dwebp(input_path, out_path, "-o", logging = "-v"); result.then((response) => { 
    const canvas1 = createCanvas(312, 160) const canvas2 = createCanvas(260, 160) const o = canvas1.getContext('2d') const s = canvas2.getContext('2d') loadImage(out_path).then(image => { 
    o.drawImage(image, 0, 0) let Ut = [ 39, 38, 48, 49, 41, 40, 46, 47, 35, 34, 50, 51, 33, 32, 28, 29, 27, 26, 36, 37, 31, 30, 44, 45, 43, 42, 12, 13, 23, 22, 14, 15, 21, 20, 8, 9, 25, 24, 6, 7, 3, 2, 0, 1, 11, 10, 4, 5, 19, 18, 16, 17 ] for (var a = 80, _ = 0; _ < 52; _ += 1) { 
    var c = Ut[_] % 26 * 12 + 1, u = 25 < Ut[_] ? a : 0, l = o.getImageData(c, u, 10, a); s.putImageData(l, _ % 26 * 10, 25 < _ ? a : 0) } const buffer = canvas2.toBuffer('image/png') fs.writeFileSync(bg_path, buffer) }) }); return bg_path } bg_image_path('./bg.webp', './bg.jpg', './bg.png') 

图片还原python版本(这是网上的)

# -*- coding: utf-8 -*- # @Time : 2022/5/21 18:20 # @Author : Mint..lv # @Site :  # @File : imgCover.py # @Software: PyCharm # -*- coding: utf-8 -*- import io from pathlib import Path from PIL import Image def parse_bg_captcha(img, im_show=False, save_path=None): """ """ if isinstance(img, (str, Path)): _img = Image.open(img) elif isinstance(img, bytes): _img = Image.open(io.BytesIO(img)) else: raise ValueError(f'输入图片类型错误, 必须是<type str>/<type Path>/<type bytes>: { 
     type(img)}') # 图片还原顺序, 定值 _Ge = [39, 38, 48, 49, 41, 40, 46, 47, 35, 34, 50, 51, 33, 32, 28, 29, 27, 26, 36, 37, 31, 30, 44, 45, 43, 42, 12, 13, 23, 22, 14, 15, 21, 20, 8, 9, 25, 24, 6, 7, 3, 2, 0, 1, 11, 10, 4, 5, 19, 18, 16, 17] w_sep, h_sep = 10, 80 # 还原后的背景图 new_img = Image.new('RGB', (260, 160)) for idx in range(len(_Ge)): x = _Ge[idx] % 26 * 12 + 1 y = h_sep if _Ge[idx] > 25 else 0 # 从背景图中裁剪出对应位置的小块 img_cut = _img.crop((x, y, x + w_sep, y + h_sep)) # 将小块拼接到新图中 new_x = idx % 26 * 10 new_y = h_sep if idx > 25 else 0 new_img.paste(img_cut, (new_x, new_y)) if im_show: new_img.show() if save_path is not None: save_path = Path(save_path).resolve().__str__() new_img.save(save_path) return new_img if __name__ == '__main__': parse_bg_captcha("./test.webp", im_show=True, save_path='bg.jpg') 

使用cv2 识别一下缺口:

# -*- coding: utf-8 -*- # @Time : 2022/5/21 23:33 # @Author : Mint..lv # @Site :  # @File : identify_gap.py # @Software: PyCharm import cv2 def identify_gap(bg, tp, out): """ :param bg: 背景图片 :param tp: 缺口图片 :param out: 输出图片 :return: """ # 读取背景图片和缺口图片 bg_img = cv2.imread(bg) # 背景图片 tp_img = cv2.imread(tp) # 缺口图片 # 识别图片边缘 bg_edge = cv2.Canny(bg_img, 100, 200) tp_edge = cv2.Canny(tp_img, 100, 200) # 转换图片格式 bg_pic = cv2.cvtColor(bg_edge, cv2.COLOR_GRAY2RGB) tp_pic = cv2.cvtColor(tp_edge, cv2.COLOR_GRAY2RGB) # 缺口匹配 res = cv2.matchTemplate(bg_pic, tp_pic, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) # 寻找最优匹配 # 绘制方框 th, tw = tp_pic.shape[:2] tl = max_loc # 左上角点的坐标 br = (tl[0] + tw, tl[1] + th) # 右下角点的坐标 cv2.rectangle(bg_img, tl, br, (0, 0, 255), 2) # 绘制矩形 cv2.imwrite(out, bg_img) # 保存在本地 # 返回缺口的X坐标 return tl, br if __name__ == '__main__': print(identify_gap('./origin.jpg', './key.png', './result.jpg')) 

结果:
在这里插入图片描述

以上仅为初次实战ast反混淆的记录,仅为个人观点。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/141301.html

(0)
上一篇 2025-05-18 14:15
下一篇 2025-05-18 14:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信