是人也看不清的动态验证码生成与破解

真的很抽象很抽象,想到我曾经想拿这个去申请专利我就想笑(21年已经有人注册了类似方法技术[1])。
建议桌面端浏览,建议看看长什么样就行了。
还有有什么很好的wordpress Latex方案嘛。现在使用md转HTML加入,加载又慢,效果又差。

生成方法的数学模型 仅文章

生成方法的数学模型

(1) 均匀噪声背景

Ibase(x,y,t)U(0,1)

其中 (x,y) 是像素坐标,U 为均匀分布。

(2) 字符蒙版

  • 静态字符蒙版 对每个字符 c,定义其像素矩阵 C{0,1}Hc×Wc,其中:

    C(y,x)={1实心部分0透明部分
  • 字符蒙版随机化

    Cr(x,y,t)=C(y,x)Ibase(x,y,0)

蒙版随时间,以给定速度(vx(t),vy(t))运动,运动的蒙版为。

Mglobal(x,y,t)=Cr(x0tvx(t)dtt,y0tvy(t)dt)

2. 图像合成公式

最终图像 在时间 t 的合成:

Iresult(x,y,t)=Mglobal(x,y,t)字符蒙版Ibase(x,y,0)初始随机噪声+(1Mglobal(x,y,t))背景保留Ibase(x,y,t)背景噪声

其中 是逐元素乘法。

直线匀速运动下的破解方法

1. 引言

动态验证码作为一种增强安全性的技术手段,通过在时间维度引入变化来抵抗自动化攻击。然而,其设计原理可能引入新的安全漏洞。本文研究一类特殊的动态验证码,其生成过程可表述为:

Iresult(x,y,t)=Mglobal(x,y,t)Ibase(x,y,0)+(1Mglobal(x,y,t))Ibase(x,y,t)

其中 Mglobal(x,y,t) 为字符蒙版,Ibase(x,y,t) 为背景图像。本文旨在从观测图像序列 {Iresult(x,y,ti)}i=1N 中恢复任意时刻 t 的字符蒙版 Mglobal(x,y,t)

2. 问题建模与特性分析

2.1 动态验证码生成模型

考虑动态验证码图像序列 {Iresult(x,y,ti)}i=1N,其中每个时刻的图像由字符区域和背景区域组合而成:

  • 字符区域Mglobal(x,y,t)=1):像素值保持初始时刻不变,即 Ibase(x,y,0)

  • 背景区域Mglobal(x,y,t)=0):像素值随时间独立随机变化,服从均匀分布 U(0,1)

2.2 时空特性分析

字符蒙版做匀速直线运动:

Mglobal(x,y,t+Δt)=Mglobal(xvxΔt,yvyΔt,t)

同一字符点在相邻帧间满足:

Iresult(x,y,t)字符点=Iresult(x+vx,y+vy,t+1)同一字符点

3. 逆问题求解算法

3.1 运动速度估计

对于正确速度 (vx,vy),字符区域(平移后对齐)的差值为0,背景区域差值较大(因为独立随机)。定义互相关(Cross-Correlation)如下。

R(u,v)=t=1N1x,yIresult(x,y,t)Iresult(x+u,y+v,t+1)

因此,正确的 (vx,vy) 会使 R(u,v)最小。

(vx,vy)=argmaxu,vR(u,v)

3.2 参考坐标系对齐

将所有帧变换到 t=0 时刻的坐标系:

J(x,y,ti)=Iresult(x+vxti,y+vyti,ti)

其中 J(x,y,ti) 表示在参考坐标系 (x,y) 处、时刻 ti 的像素值。

3.3 字符区域识别

基于时间序列方差分析区分字符区域和背景区域。对于每个参考系位置 (x,y)

Var(x,y)=1N1i=1N[J(x,y,ti)J¯(x,y)]2

其中 J¯(x,y)=1Ni=1NJ(x,y,ti) 为时间序列均值。

通过阈值分割生成参考系蒙版:

Mglobal(x,y,0)={1if Var(x,y)<τ0otherwise

阈值 τ 选择理论值 α12(均匀分布方差为 112)或经验值 0.010.05

3.4 任意时刻蒙版重建

从参考系蒙版 Mglobal(x,y,0) 重建任意时刻 t 的蒙版:

Mglobal(x,y,t)=Mglobal(xvxt,yvyt,0)

4. 算法流程

本文提出的逆问题求解算法流程如下:

  1. 输入:图像序列 {Iresult(x,y,ti)}i=1N

  2. 速度估计:通过帧间配准估计 (vx,vy)

  3. 坐标对齐:生成参考系图像序列 {J(x,y,ti)}i=1N

  4. 方差计算:计算每个位置的时间序列方差 Var(x,y)

  5. 阈值分割:生成参考系蒙版 Mglobal(x,y,0)

  6. 运动补偿:重建任意时刻蒙版 Mglobal(x,y,t)

5. 实验分析与讨论

5.1 实验结果

针对本次测试的验证码文本为"ZAdx"动态验证码。从GIF动画中成功提取了100帧图像(索引范围0:100,步长为1),帧尺寸为250×100像素。经过运动估计算法处理,准确识别出字符蒙版的运动速度为水平方向vx=-3像素/帧,垂直方向vy=0像素/帧,表明字符蒙版沿水平向左匀速运动。

在坐标系对齐和方差分析阶段,算法获得了以下关键统计信息:时间序列方差的最小值为1892.23,最大值为16256.25,平均值为14582.21,中位数为15319.89。基于这些统计特征,选择了11515.00作为方差阈值,成功识别出占总面积7.7%的字符区域。

由于字符蒙版从图像边界外开始运动,恢复效果呈现明显的时序特征:先进入视野的字符"ZA"因观察到了较长的运动周期,蒙版恢复较为清晰完整;而后出现的字符"d"和"x"因在观测时间窗口中在图像区域内时间较短,导致恢复的蒙版较为残破不全。这一现象符合运动蒙版的物理特性,也证明了运动估计的准确性。

 

 

参考文献

  1. 基于混沌干扰与动态视觉暂留的抗再训练视频验证码生成方法及系统 雷扬
  2. 高效的验证码识别技术与验证码分类思想 文晓阳
  3. 基于PHP的中文GIF动态验证码生成器的设计与实现 唐乾林
  4. 视觉注意力检测综述 王文冠

本文采用 共享-署名-非商用-相同方式共享 4.0 国际许可协议

3 thoughts on “是人也看不清的动态验证码生成与破解

  1. 破解方法其实很简单,方法很多种,不然国内国外早都用了,就不会使用现在的行为验证码了,这玩意说起来就是拦截人类的,非常费眼睛,还不如用行为验证,像我评论区都用行为验证了😏

    1. 是啊是啊,主要是防人的,笑死了。从当年彩六不允许直播的时候来的灵感。
      复现了下这篇专利“基于混沌干扰与动态视觉暂留的抗再训练视频验证码生成方法及系统 雷扬”,人家做的更好一些,人能看清楚一些。破解就没尝试了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注