yolov5实现CTF自动解题之----字符密码

Aman
评论:0 阅读:1429
时间:2022-11-27 10:00:17 分类:

最近学习了go语言。
打算开发个ctf自动解题脚本作为golang的处女作。
其中图片解密中有一个功能是自动识别图片内容并分析,如果发现类似猪圈密码、军旗、手语、埃及字符之类的可以自动识别。
首先想到的是opencv的模板识别,根据百度的资料
先把图片二值化然后生成一个个的模板

原图

二值化

模板(因为都删了这个是写文章时生成的案例,实际操作需要每个字符都拆分出来)

识别结果

看效果图识别效果简直完美,但是假如换了下面这张图,就GG了,模板识别的弊端看效果图 识别效果简直完美,但是假如换了下面这张图,就GG了

然后又开始用yolov5识别。
按照百度安装、踩坑、爬坑、踩坑、爬坑
终于能成功运行了。

用之前使用opencv生成的单个元素,生成了300多张训练集。最终跑出来了


识别效果如下



然后总结下过程中遇到的坑,希望大家或者以后自己犯错的时候能够来爬坑。
坑1、

opencv的模板识别的可变性不强,识别的图片必须是被识别图片中的一部分。

坑2、生成yolov训练集的时候 标注的坐标

0 0.125000 0.125000 0.078125 0.078125
第一个是标签ID从0开始 对应训练项目的yaml文件中的name。
第二个是标注的x坐标,注意这x坐标不是标注的左上角而是标注的中心,然后用标注的中心坐标除以图片的宽度
第三个是标注的y坐标,和x坐标一样 是标注的中心 然后除图片的高度
第四个是标注的宽度,然后除以图片宽度
第五个是标注的高度,然后除以图片的高度


坑3、

#如果训练的时候发现慢检查是不是cpu在跑,我下载yolov5运行默认就是cpu
#输入库
import torch
#查看版本
print(torch.__version__)
#查看gpu是否可用 true gpu  false cpu
#修改方法自行百度,过程耗时1-2小时。需要下载安装大量数据

坑4、

识别的时候发现yolov会吧对称的图形识别成一个。
这是训练的时候开启了训练增强,默认是开着的,如不需要关掉

坑5、...
坑6、...
坑7、...
坑8、..
坑9、.
坑N、吃饭了,后续写(我了解我,说后续写基本上不会写了。反正搞这个玩意一直就是爬坑踩坑爬坑踩坑。 而这句话说不定也是一个隐藏的坑,说不定以后啥时候又踩了坑,回来翻博客,发下自己因为懒没写全。GG)

补充

深渊巨坑

最大的坑就是,我尼玛找的猪圈密码竟然是不标准的,我曰,我说怎么有几个字符怎么训练识别率还是不高,艹服了

Powered by emlog pro © 主题Aman 豫ICP备16010520号-1