非原创,转载收藏学习.非原创,转载收藏学习.非原创,转载收藏学习.

原生帖子传送门: https://www.52pojie.cn//thread-1583574-1-1.html

项目仓库传送门:GitHub - nemanja-m/gaps: A Genetic Algorithm-Based Solver for Jigsaw Puzzles

首先看一下目标的验证形态是什么样子的

是一种通过验证推理的验证方式,用来防人机破解的确是很有效果,但是,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_mappingreturn image_helpers.assemble_image(pieces, self.rows, self.columns)

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

调用:

key为最后的结果标志,value为原始标志。

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

image.png

[Python] 某易易盾—推理拼图验证的安全分析相关推荐

  1. 网易易盾——推理拼图验证码参数逆向分析和调用

    之前发过一篇文章,<对无序的验证码拼图还原>,地址在这里,本篇文章主要是对验证的提交参数进行逆向分析,成功演示结果在最底部 目标网址 aHR0cHM6Ly9kdW4uMTYzLmNvbS9 ...

  2. Python识别验证码----网易易盾推理拼图

    Python识别验证码----网易易盾拼图推理 写在前面 数据特点 获取数据 识别思路 识别结果 改进点 写在前面 近日某众打码平台被跑路的消息一出,脚本圈中一片哗然(我并不是脚本圈的,只是喜欢看群里 ...

  3. 行为式验证码家族再添一员 网易易盾推出推理拼图验证码

    近日,网易易盾正式对外推出推理拼图验证码,通过业内首创的逻辑推理+图块形式,解决找回密码.账号解冻.拉新领券等高安全等级场景下,人机高精准识别的需求. 前台使用上,用户只需要拖动需要交换的2个图块,复 ...

  4. 【愚公系列】2022年12月 .NET CORE工具案例-滑块验证码和拼图验证功能实现

    文章目录 前言 1.滑块验证码的定义 2.滑块验证码的安全性分析 3.滑块验证码的第三方服务 一.滑动验证码和拼图验证功能实现 1.逻辑分析 2.新建项目 3.配置缓存 4.配置跨域 5.后端源码 6 ...

  5. python过京东app图形验证勾股定理_拼图验证勾股定理及勾股定理中的数学思想

    [同步教育信息] 一.本周教学内容: 拼图验证勾股定理及勾股定理中的数学思想 勾股定理是反映自然界基本规律的一条重要结论,在现实世界中有广泛应用.在运用勾股定理解决实际时,若能结合运用一些数学思想,则 ...

  6. 让 Python 代码更易维护的七种武器——代码风格(pylint、Flake8、Isort、Autopep8、Yapf、Black)测试覆盖率(Coverage)CI(JK)...

    让 Python 代码更易维护的七种武器 2018/09/29 · 基础知识 · 武器 原文出处: Jeff Triplett   译文出处:linux中国-Hank Chow    检查你的代码的质 ...

  7. 首信易支付的RSA公钥验证问题(博屎没解决的问题)

    我是谁呀?九十年代的中专生而已! 2007-11-22 15:12 我是谁呀?九十年代的中专生而已!可是,我解决了一个国外在读博士没有解决的问题!我是谁呀?中专生嘛! 关于首信易支付的RSA公钥验证问 ...

  8. 易语言php注册,易语言简单ASP网络验证源码 PHP一键搭建网络验证源码

    说明: 易语言简单ASP网络验证源码 ,很不错的易语言源码,适合易语言爱好者学习, (Easy language simple ASP network verification source code ...

  9. 某盾验证加密参数分析——cb,data参数(终篇)

    文章目录 前言 一.cb参数 二.data参数 总结 前言 话不多说,上次易盾未破解的参数最终篇,因为写个博客详单与重新再追一遍,今天抽了空算是交差了. 上篇文章某盾验证加密参数分析--fp参数(一) ...

最新文章

  1. GO语言Windows下Liteide
  2. python3 赋值 浅拷贝 深拷贝 简介
  3. Haystack 太强了!存 2600 亿图片
  4. Traffic Manager Overview
  5. Visual C++线程同步技术
  6. 【Elasticsearch】改进布尔查询的搜索相关性
  7. Redis学习总结(7)——怎么保持缓存与数据库一致性?
  8. 如何判断过拟合和欠拟合
  9. 咖啡口味介绍及存储方式
  10. 面试归来,感觉无望,下次再战
  11. keli不支持中文,显示中文乱码
  12. SAP MM-MB52 物料库存查询简单操作
  13. 《影响力》读书总结(一):影响力的武器
  14. 关于深度学习人工智能模型的探讨(一)(1)
  15. Python学习笔记---day03 Python基础
  16. lgg7深度详细参数_深度学习显卡参数详细对比
  17. 贝壳找房户外拓展(中等) 扫描线
  18. 串行口数据缓冲寄存器 SBUF 之 初步了解
  19. (CodeForces) D. Kilani and the Game (搜索)
  20. react 中 JSX 语法的转化过程

热门文章

  1. 说说C语言在生活中的应用
  2. Redis添加至windows服务
  3. 了解HTMLCanvasElement.toDataURL()
  4. vs 编译看本地log文件
  5. 人工触发NMI获取Kdump
  6. P2014 [CTSC1997] 选课(树形dp)
  7. C++【对象模型】| 【06】类中各种函数的刨析
  8. 那新人猎头要怎么积累人脉呢?
  9. 努力并不等于优秀,选择更重要
  10. linux安装lldb