<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
首先看一下目標的驗證形態是什麼樣子的
是一種通過驗證推理的驗證方式,用來防人機破解的確是很有效果,但是,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:對於極度複雜的原始圖片建立的拼圖,在還原之後,誤差會挺大的。
到此這篇關於詳解Python結合Genetic Algorithm演演算法破解網易易盾拼圖驗證的文章就介紹到這了,更多相關Python Genetic Algorithm內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45