吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1948|回复: 12
收起左侧

[Web逆向] 异型滑块算法解决思路

[复制链接]
UncleMing 发表于 2024-1-17 17:21
本帖最后由 UncleMing 于 2024-1-17 17:30 编辑

网站:   aHR0cHM6Ly9jcmVkaXQuYWNsYS5vcmcuY24vY3JlZGl0L2xhd0Zpcm0/cmVmZXJfXzE3MTE9bjRBeFJEeURnRzBRaVFORHNEN21OZVBXVFR4ajJpTW9oYkQmYWxpY2hsZ3JlZj1odHRwcyUzQSUyRiUyRmNyZWRpdC5hY2xhLm9yZy5jbiUyRg==
该网站存在无限debugger和ob混淆,不过逆向难度不高

简单分享思路,不涉及逆向部分,这种解决方法也未必是最好的解决方法,有大佬有更好的算法解决方法望多多交流

该网站存在有两种滑块,一种为标准滑块:
558c9dd6529bff468a640edd4ce2fce.png
另一种为异型滑块:
35c75122f1042a0511262467e7b79a5.png

第二种可以通过训练模型实现,也可以通过纯算法实现


思路为:
图像转灰度,横向切割后的图片转置出来然后做了下缩放,到0-9,然后余弦相似度做了图片像素间连续性判断
不过算法实现有个缺点就是碰到颜色相近的图片会导致结果错误,总体准确度在70%


代码实现:
[Python] 纯文本查看 复制代码
import math
import numpy as np
from PIL import Image

#余弦相似度计算
def cosine_similarity(vector1, vector2):
    dot_product = sum(x * y for x, y in zip(vector1, vector2))

    magnitude1 = math.sqrt(sum(x ** 2 for x in vector1))
    magnitude2 = math.sqrt(sum(x ** 2 for x in vector2))

    similarity = dot_product / (magnitude1 * magnitude2)

    return similarity



#缩放
def normalize_list(np_array):
    min_value = np.min(np_array)
    max_value = np.max(np_array)

    normalized_array = (np_array - min_value) / (max_value - min_value)

    return [round(i * 10) for i in normalized_array]

#主要方法
def convert_to_black_and_white(input_path, split, output_path='out.jpg'):
    image = Image.open(input_path)

    grayscale_image = image.convert("L")

    max_score = 1
    max_index = 0
   
    np_array = np.asarray(grayscale_image)[:360 - split - 10]
    np_array = np.transpose(np_array)
    
    for i in range(1, round(len(np_array) / 2)):
        forward = normalize_list(np_array[i * 2 - 1])
        rear = normalize_list(np_array[i * 2 + 1])
        similarity_score = cosine_similarity(forward, rear)
        if similarity_score < max_score and 50 < i * 2 < 550:
            max_score = similarity_score
            max_index = i * 2
 
    print(max_index, max_score)
    grayscale_image.save(output_path)

#参数为图片路径,切割的y轴像素
#从响应中提取
convert_to_black_and_white("./img/269.jpeg", 269)


免费评分

参与人数 4吾爱币 +9 热心值 +4 收起 理由
涛之雨 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
cJc9555 + 1 用心讨论,共获提升!
liuxuming3303 + 1 + 1 热心回复!
yenfenwo + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

IT大小白 发表于 2024-1-18 19:47
Python使用dddddOCR库,识别率高
刘大富 发表于 2024-1-18 22:17
willgoon 发表于 2024-1-18 22:29
IT大小白 发表于 2024-1-18 19:47
Python使用dddddOCR库,识别率高

的确,之前在内网环境使用过这个库,很nice!
anidelong 发表于 2024-1-19 00:50
学习学习
soughing 发表于 2024-1-19 07:32
谢谢楼主分享
feiniao8 发表于 2024-1-19 08:41
学习一下,不是很懂
Pwaerm 发表于 2024-1-19 10:47
第二种用第一种接口也可以识别
左上角截取一块和原图对比
Light紫星 发表于 2024-1-19 11:34
很牛,感谢楼主分享
跑得快有糖吃 发表于 2024-1-19 13:27
还得是吾爱老哥,就是牛
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表