吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5317|回复: 17
收起左侧

[Python 转载] 网易易盾—推理拼图验证的破解

  [复制链接]
timeslover 发表于 2022-2-5 17:28
本帖最后由 timeslover 于 2022-2-5 17:29 编辑

首先看一下目标的验证形态是什么样子的
在这里插入图片描述

是一种通过验证推理的验证方式,用来防人机破解的确是很有效果,但是,But,这里面已经会有一些破绽,比如:
在这里插入图片描述
(以上是原图和二值化之后的结果)
在这里插入图片描述
(这是正常图片)

像划红线的这些地方,可以看到有明显的突变,并且二值化之后边缘趋于直线,但是正常图像是不会有这种这么明显的突变现象。

初识潘多拉

后来,我去翻阅了机器视觉的相关文章和论文,发现了一个牛逼的算法,这个算法就是——Genetic Algorithm遗传算法,最贴心的的是,作者利用这个算法实现了一个功能,“拼图自动还原”(不是像什么A*算法寻找最优路线解那种哈,就是单纯的拼图)项目仓库地址
首先来介绍下如何使用跑起来这个项目吧,坑是真的很多,接下来感受一下pyCham的一路报错!
这里我用的是python3.10的版本,目前是最新的版本
文档中这一步执行是会报错的

pip3 install -r requirements.txt

在这里插入图片描述
解决方案:单独对requirements.txt文件下的每个包单独下载,然后根据当前下载的包的最新版本替换旧版本号。
在这里插入图片描述
在这里插入图片描述
我目前每个包最新使用的是这些版本号
在这里插入图片描述
全部替换完了之后,再执行一次下面的代码,他就不会报错了

pip3 install -r requirements.txt

然后下一步,执行下面代码

pip3 install -e .

在这里插入图片描述

进入潘多拉

然后我们按照官网的提示来执行,先创建一个拼图出来,命令是这样的(这里的文件名我改了)

create_puzzle images/starry.jpg --size=60 --destination=puzzle.jpg

在这里插入图片描述
会发现,好像不行,因为我们没有在正确的位置上执行,他的脚本位置是在bin文件夹下面,你可能会遇到如下问题
在这里插入图片描述
成功之后的话,会在bin目录下生成一个拼图图片
在这里插入图片描述
以上是介绍如何生成图片,接下来是重头戏,如何还原图片

gaps --image=puzzle.jpg --generations=20 --population=600

对于参数的解释官网是这样的:

Option
:  --image        Path to puzzle(需要被还原的图片)
--size        Puzzle piece size in pixels (拼图的大小)
--generations        Number of generations for genetic algorithm (遗传算法的代数)
--population        Number of individuals in population
--verbose        Show best solution after each generation (显示每一代后的最佳解决方案)
--save        Save puzzle solution as image (拼图结果另存为图像)

先按照官方的走一遍
在这里插入图片描述
很好,很舒服,继续报错,而且语法拼写上我们也没有拼写错,没关系!我已经帮你找到解决方案了。

 python gaps --image=puzzle.jpg --generations=20 --population=600 --size=60  --save

或者你不指定遗传代数和人口数

 python gaps --image=puzzle.jpg --size=60 --save

在这里插入图片描述
在这里插入图片描述
这是完全还原的结果,至此,我们披荆斩棘从解决项目报错,一路挖坑填坑到demo成功运行,到这里我们已经成功了60%,接下来就是如何利用这个项目,去破解网易易盾的推理拼图验证。

探究潘多拉的秘密

首先看一下项目目录:
在这里插入图片描述
gaps文件夹下面是所有模块的源码,作者对各个基础功能做了封装,但是我们想要的功能并不存在,就需要自行阅读和理解源码,然后二开实现自己想要的功能。

我们主要关注这个文件individual.py
在这里插入图片描述
我来用大白话给你翻译一下吧,“在所有排列中,帮你找出最优解”
在这里插入图片描述
输出这个映射,结果是这样的,正好是我们想要的东西
在这里插入图片描述
下面会有一个创建图像的方法,这是最后得到最优解图像拼接函数
在这里插入图片描述
那么,我们将最后的索引映射取到就OK了!

以下为最优解的映射值输出实例:

初始化的时候,新增一个变量用来存储最后的结果
在这里插入图片描述

self.pieceMapping = None

自定义一个函数
在这里插入图片描述

# 返回映射值
def getPieceMapping(self):
        return self.pieceMapping

每次执行的时候,将最优解传递出去
在这里插入图片描述

def to_image(self):
    """Converts individual to showable image"""
    pieces = [piece.image for piece in self.pieces]
    self.pieceMapping = self._piece_mapping
    return image_helpers.assemble_image(pieces, self.rows, self.columns)

以上,就把我们想要的结果输出了

调用:
在这里插入图片描述
在这里插入图片描述
key为最后的结果标志,value为原始标志。

PS:对于极度复杂的原始图片创建的拼图,在还原之后,误差会挺大的。
在这里插入图片描述

image.png
image.png
image.png

免费评分

参与人数 3吾爱币 +3 热心值 +2 收起 理由
FenLin + 1 + 1 用心讨论,共获提升!
Snow小乖 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
谷小白 + 1 + 1 用心讨论,共获提升!

查看全部评分

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

 楼主| timeslover 发表于 2023-2-20 23:43
yysn1998 发表于 2023-2-20 22:12
我直接把你的那张黄桃图截图去识别,算法还原不出来。

截图会有偏差,可以到易盾网站上去下一个原图,可以看下这篇文章下面的评论
https://blog.csdn.net/weixin_45307278/article/details/122776869
cbypm1984 发表于 2022-2-5 21:48
zh610902551 发表于 2022-2-6 17:41
什么AI智能机器人的灵魂就是来自强大的算法,而强大的算法却来自人类。
花开叶落本无缘 发表于 2022-2-18 20:31
很高端的样子
三滑稽甲苯 发表于 2022-2-18 22:56
这个算法厉害,是模仿生物界的遗传吗
manxia 发表于 2022-6-29 14:19
插眼 学习了
无息的悲伤 发表于 2022-7-9 03:18
学习一下大佬的思路
qiujw 发表于 2022-7-9 13:26
很高端的样子
qiujw 发表于 2022-7-11 16:27
学习学习一下
头像被屏蔽
rangersxiaoyan 发表于 2022-7-13 22:31
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 14:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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