在此之前我收到了一些读者对我的反应,他们期望我能够在文中解说相关解析器的开发流程。为了满意我们的需求,我决议和你们共享一个我非常重要的项目的完好施行进程。话不多说,让我们现在就开端!
当我开发这些脚本时,我对图画处理或其间的算法没有任何的了解或认知。最开端时我所能想到的便是:
图画根本上是一个矩阵,像素作为独自的单元格。
五颜六色图画具有每个像素的元组(红,绿,蓝)值,灰度图画具有单个值,而且一般图画中每个像素值的范围在(0,255)。
以下是我大学网站的登录界面:
首要,我对验证码做了开始的调查剖析。总结如下:
验证码中的字符位数一直为6位,而且是灰度图画;
字符之间的距离看起来一直保持相同的距离;
每个字符都是彻底界说的;
图画有许多杂散的暗像素,以及穿过图画的线条
我决议下载一个图片验证码,并凭借这款东西以二进制可视化图画(0表明黑色,1表明白色像素)。
我的调查是正确的 – 图画尺度为45×180,每个字符被分配一个30像素的空间来拟合,从而使它们均匀距离。
因而,我的第1步是
将图画裁剪成6个不同的部分,每部分的宽度为30像素。
这儿我挑选运用Python作为我的开发言语,由于它的库最易运用和完成。
经过简略的搜索后,我找到了PIL库。我决议运用Image模块,由于我的操作仅限于裁剪并将图画作为矩阵加载。
所以,依据文档,裁剪图画的根本语法如下:
from PIL import Image
image = Image.open("filename.xyz")
cropped_image = image.crop((left, upper, right, lower))
在本例中,假如你想裁剪榜首个字符,
from PIL import Image
image = Image.open("captcha.png").convert("L") # Grayscale conversion
cropped_image = image.crop((0, 0, 30, 45))
cropped_image.save("cropped_image.png")
被裁剪保存的图画:
我将其包装在一个循环中,写了一个简略的脚本,从该站点获取500个验证码图画,并将一切裁剪后的字符保存到一个文件夹中。
第三次调查 – 每个字符都有明晰的界说。为了“整理”图画中的裁剪字符(删去不必要的线和点),我运用了以下办法。
字符中的一切像素都是纯黑色(0)。我用了一个简略的逻辑 – 假如它不是彻底黑色的,就视为白色。因而,关于值大于0的每个像素,将其重新分配为255。运用load()函数将图画转换为45×180矩阵,然后对其进行处理。
pixel_matrix = cropped_image.load()
for col in range(0, cropped_image.height):
for row in range(0, cropped_image.width):
if pixel_matrix[row, col] != 0:
pixel_matrix[row, col] = 255
image.save("thresholded_image.png")
为了愈加明晰,我将代码使用至原始图画上。
原图:
处理后:
能够看到处理后的图画中的非纯黑像素都已被移除,其间包含交叉图画的线条。
直到项目完成后,我才知道上述办法被称为图画处理中的阈值处理。
第四次调查 – 图画中有许多杂散像素。
循环遍历图画矩阵,假如相邻像素为白色,与相邻像素相对的像素也为白色,且中心像素为黑色的,则使中心像素为白色。
for column in range(1, image.height - 1):
for row in range(1, image.width - 1):
if pixel_matrix[row, column] == 0
and pixel_matrix[row, column - 1] == 255 and pixel_matrix[row, column + 1] == 255 :
pixel_matrix[row, column] = 255
if pixel_matrix[row, column] == 0
and pixel_matrix[row - 1, column] == 255 and pixel_matrix[row + 1, column] == 255:
pixel_matrix[row, column] = 255
输出:
能够看到,此刻图画中的字符根本已被独自分离出来了。
[1] [2] [3] 黑客接单网
导语:近来,腾讯游戏安全中心捕获一款网吧内传达的歹意软件。原以为是惯例的网吧盗号木马,但详细剖析之后发现并非如此。经证明该歹意软件是现在发现的首款运用Windows SMB缝隙传达,开释虚拟钱银矿机挖...
在逻辑缝隙中,恣意用户暗码重置最为常见,或许出现在新用户注册页面,也或许是用户登录后重置暗码的页面,或许用户忘掉暗码时的暗码找回页面,其间,暗码找回功用是重灾区。我把日常浸透过程中遇到的事例作了缝隙成...
经过第一节给咱们简略介绍了一下代码审计简略运用,那么第二节,咱们来介绍一下,使用东西和手艺进行缝隙发掘。为了咱们能对sql注入有更好的学习和收成。引荐咱们几个学习php根底的网站 Imooc.co...
每天都有不计其数的鱼叉式垂钓邮件发送给全世界的受害者。 进犯有许多不同的途径,不管怎样进犯,都会对您的网络形成损伤。 所以,精确的、有针对性的进行剖析和履行是至关重要的。 在本指南中,咱们将介绍鱼叉式...
一、前语 在MySQL 5.7.5之前的所有主版别存在一个BUG,该或许导致影响POC/EXP需求从头编写或批改的问题。 BUG信息链接: https://bugs.mysql.com/bug.ph...