关于A-BLOG验证码扰码的修改

发现BLOG开始被垃圾评论群发软件盯上了~~无比郁闷,那个软件好像还是使用的OCR技术识别生成的图形验证码。。。看看现在这个BLOG使用的验证码都没有扰码的~~很容易被OCR识别了~~在想着怎么修改这个东西~~昨天找到一段代码,周末回去修改BLOG的验证,已在本地测试成功。

修改include目录下面的validatecode.asp文件为以下代码,注意最后的sesson值Session("L-Blog_ValidateCode") = mCode.Create(),当然你要是愿意可以修改为别的,不过要修改一下原BLOG的主程序部分。

CODE:


<%

Option Explicit ' 显示声明



Class Com_GifCode_Class



Public Noisy, Count, Width, Height, Angle, Offset, Border



Private Graph(), Margin(3)



Private Sub Class_Initialize()

Randomize

Noisy = 17 ' 干扰点出现的概率

Count = 4 ' 字符数量

Width = 56 ' 图片宽度

Height = 18 ' 图片高度

Angle = 0 ' 角度随机变化量

Offset = 2 ' 偏移随机变化量

Border = 2 ' 边框大小

End Sub



Public Function Cr&#101;ate()



Const cCharSet = &#34;123456789&#34;



Dim i, x, y



Dim vValidCode : vValidCode = &#34;&#34;

Dim vIndex



ReDim Graph(Width-1, Height-1)



For i = 0 To Count - 1

vIndex = Int(Rnd * Len(cCharSet))

vValidCode = vValidCode + Mid(cCharSet, vIndex+1 , 1)

SetDraw vIndex, i

Next



Cr&#101;ate = vValidCode



End Function



Sub SetDot(pX, pY)

If pX * (Width-pX-1) >= 0 And pY * (Height-pY-1) >= 0 Then

Graph(pX, pY) = 1

End If

End Sub



Public Sub SetDraw(pIndex, pNumber)



' 字符数据

Dim DotData(8)

DotData(0) = Array(30, 15, 50, 1, 50, 100)

DotData(1) = Array(1 ,34 ,30 ,1 ,71, 1, 100, 34, 1, 100, 93, 100, 100, 86)

DotData(2) = Array(1, 1, 100, 1, 42, 42, 100, 70, 50, 100, 1, 70)

DotData(3) = Array(100, 73, 6, 73, 75, 6, 75, 100)

DotData(4) = Array(100, 1, 1, 1, 1, 50, 50, 35, 100, 55, 100, 80, 50, 100, 1, 95)

DotData(5) = Array(100, 20, 70, 1, 20, 1, 1, 30, 1, 80, 30, 100, 70, 100, 100, 80, 100, 60, 70, 50, 30, 50, 1, 60)

DotData(6) = Array(6, 26, 6, 6, 100, 6, 53, 100)

DotData(7) = Array(100, 30, 100, 20, 70, 1, 30, 1, 1, 20, 1, 30, 100, 70, 100, 80, 70, 100, 30, 100, 1, 80, 1, 70, 100, 30)

DotData(8) = Array(1, 80, 30, 100, 80, 100, 100, 70, 100, 20, 70, 1, 30, 1, 1, 20, 1, 40, 30, 50, 70, 50, 100, 40)



Dim vExtent : vExtent = Width / Count

Margin(0) = Border + vExtent * (Rnd * Offset) / 100 + Margin(1)

Margin(1) = vExtent * (pNumber + 1) - Border - vExtent * (Rnd * Offset) / 100

Margin(2) = Border + Height * (Rnd * Offset) / 100

Margin(3) = Height - Border - Height * (Rnd * Offset) / 100



Dim vStartX, vEndX, vStartY, vEndY

Dim vWidth, vHeight, vDX, vDY, vDeltaT



Dim vAngle, vLength



vWidth = Int(Margin(1) - Margin(0))



vHeight = Int(Margin(3) - Margin(2))



' 起始坐标

vStartX = Int((DotData(pIndex)(0)-1) * vWidth / 100)



vStartY = Int((DotData(pIndex)(1)-1) * vHeight / 100)



Dim i, j

For i = 1 To UBound(DotData(pIndex), 1)/2



If DotData(pIndex)(2*i-2) <> 0 And DotData(pIndex)(2*i) <> 0 Then



' 终点坐标

vEndX = (DotData(pIndex)(2*i)-1) * vWidth / 100



vEndY = (DotData(pIndex)(2*i+1)-1) * vHeight / 100



' 横向差距

vDX = vEndX - vStartX

' 纵向差距

vDY = vEndY - vStartY



' 倾斜角度

If vDX = 0 Then

vAngle = Sgn(vDY) * 3.14/2

Else

vAngle = Atn(vDY / vDX)

End If



' 两坐标距离

If Sin(vAngle) = 0 Then

vLength = vDX

Else

vLength = vDY / Sin(vAngle)

End If



' 随机转动角度

vAngle = vAngle + (Rnd - 0.5) * 2 * Angle * 3.14 * 2 / 100



vDX = Int(Cos(vAngle) * vLength)



vDY = Int(Sin(vAngle) * vLength)



If Abs(vDX) > Abs(vDY) Then vDeltaT = Abs(vDX) Else vDeltaT = Abs(vDY)



For j = 1 To vDeltaT

SetDot Margin(0) + vStartX + j * vDX / vDeltaT, Margin(2) + vStartY + j * vDY / vDeltaT

Next



vStartX = vStartX + vDX



vStartY = vStartY + vDY

End If

Next

End Sub



Public Sub Output()



Response.Expires = -9999

Response.AddHeader &#34;pragma&#34;, &#34;no-cache&#34;

Response.AddHeader &#34;cache-ctrol&#34;, &#34;no-cache&#34;

Response.ContentType = &#34;image/gif&#34;



' 文件类型

Response.BinaryWrite ChrB(Asc(&#34;G&#34;)) & ChrB(Asc(&#34;I&#34;)) & ChrB(Asc(&#34;F&#34;))

' 版本信息

Response.BinaryWrite ChrB(Asc(&#34;8&#34;)) & ChrB(Asc(&#34;9&#34;)) & ChrB(Asc(&#34;a&#34;))

' 逻辑屏幕宽度

Response.BinaryWrite ChrB(Width Mod 256) & ChrB((Width  256) Mod 256)

' 逻辑屏幕高度

Response.BinaryWrite ChrB(Height Mod 256) & ChrB((Height  256) Mod 256)



Response.BinaryWrite ChrB(128) & ChrB(0) & ChrB(0)

' 全局颜色列表

Response.BinaryWrite ChrB(255) & ChrB(255) & ChrB(255)



Response.BinaryWrite ChrB(0) & ChrB(100) & ChrB(164)



' 图象标识符

Response.BinaryWrite ChrB(Asc(&#34;,&#34;))



Response.BinaryWrite ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0)

' 图象宽度

Response.BinaryWrite ChrB(Width Mod 256) & ChrB((Width  256) Mod 256)

' 图象高度

Response.BinaryWrite ChrB(Height Mod 256) & ChrB((Height  256) Mod 256)



Response.BinaryWrite ChrB(0) & ChrB(7) & ChrB(255)



Dim x, y, i : i = 0

For y = 0 To Height - 1

For x = 0 To Width - 1

If Rnd < Noisy / 100 Then

Response.BinaryWrite ChrB(1-Graph(x, y))

Else

If x * (x-Width) = 0 o&#114; y * (y-Height) = 0 Then

Response.BinaryWrite ChrB(Graph(x, y))

Else

If Graph(x-1, y) = 1 o&#114; Graph(x, y) o&#114; Graph(x, y-1) = 1 Then

Response.BinaryWrite ChrB(1)

Else

Response.BinaryWrite ChrB(0)

End If

End If

End If

If (y * Width + x + 1) Mod 126 = 0 Then

Response.BinaryWrite ChrB(128)

i = i + 1

End If

If (y * Width + x + i + 1) Mod 255 = 0 Then

If (Width*Height - y * Width - x - 1) > 255 Then

Response.BinaryWrite ChrB(255)

Else

Response.BinaryWrite ChrB(Width * Height Mod 255)

End If

End If

Next

Next

Response.BinaryWrite ChrB(128) & ChrB(0) & ChrB(129) & ChrB(0) & ChrB(59)

End Sub

End Class



Dim mCode

Set mCode = New Com_GifCode_Class

<span style=\"color: Red;\">Session(&#34;L-Blog_ValidateCode&#34;) = mCode.Cr&#101;ate()</span>

mCode.Output()

Set mCode = Nothing

%>



此段代码的作者为:

Author: Layen support@ssaw.net

Thanks: Laomi, Laomiao, NetRube
引用通告地址: http://www.anycc.com/blog/trackback.php?tbID=39&extra=24badb
标签:  ASP
评论: 20 | 引用: 6 | 阅读: 3689
出会い [ 2008-11-22 11:37 网址 | 回复 | 编辑 删除 ]
無料アダルトと言えば、無料アダルト動画が見られるサイトがオススメ。無料動画なので安心して動画が見られます。アダルト動画をお探しの方は今すぐココへ。
出会い [ 2008-11-22 11:37 网址 | 回复 | 编辑 删除 ]
不倫を求めた人妻たち、浮気願望がある熟女たちが逆援助で男を買う。逆援お小遣いをゲットしたい男性は是非ご利用ください。
出会い [ 2008-11-22 11:36 网址 | 回复 | 编辑 删除 ]
熟女が全国から集まる熟女出会い系サイトです。熟女動画が期間限定で公開中!熟女DVDも無料で閲覧できます。熟女画像を自由に検索して好みの女性を探してください。
出会い [ 2008-11-22 11:36 网址 | 回复 | 编辑 删除 ]
アダルトな出会いを体験してみませんか?無料アダルト動画が満載のサイトで楽しみましょう。アダルト動画はココで無料でダウンロードできます。アダルトビデオアダルトグッズも多数取り扱っております。
出会い [ 2008-11-22 11:36 网址 | 回复 | 编辑 删除 ]
熟女が全国から集まる熟女出会い系サイトです。熟女動画が期間限定で公開中!熟女DVDも無料で閲覧できます。熟女画像を自由に検索して好みの女性を探してください。
出会い [ 2008-11-22 11:36 网址 | 回复 | 编辑 删除 ]
風俗で童貞を捨てるなら、広い風俗情報が必要です。良い風俗店を選んで、綺麗な風俗嬢を選びましょう。人気のある風俗街へ行くことをお勧めします。
出会い [ 2008-11-22 11:35 网址 | 回复 | 编辑 删除 ]
人妻とエッチな出会いをしてみませんか。人妻出会い系サイトで風俗よりも良い体験をしましょう。人妻系熟女女性が多数登録しています。
发表评论
昵 称: 密 码:
网 址: 邮 箱:
验证码: 验证码图片 选 项:
头 像:
内 容: