`
灵雨飘零
  • 浏览: 34965 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
文章分类
社区版块
存档分类
最新评论

彩色校验码的制作

 
阅读更多

要读懂这些代码主要是要了解ASP中操作二进制数据的对象ADODB.Stream!本程序主要用的就是Adodb.Stream,如果你有这个基础,就可以进一步添加更多的功能如加入杂点,渐变底色,数字行列错位,笔画短点,提高被ocr识别的不可能。目前还没有好的识别引擎,昨天下载了个号称能识别图像验证码90%的!把4321识别成 89910,所以图像码还是比较安全的。

在网上看到有暴力破解的方法,如果我用图像附加码+禁止外部提交+10次密码错误封帐号 +50次密码错误琐死IP+10秒的防刷新间隔注册页,登陆页均要加上+禁止外部提交,这样,暴力破解应该就没戏了。

ASP文件:Code.Asp
数据文件:body.Fix , Head.Fix
用法:<img src="http://blog.netbei.com/code.ASP">

Response.buffer = true
NumCode

Function NumCode()
Response.Expires = -1
Response.AddHeader "Pragma","no-cache"
Response.AddHeader "cache-ctrol","no-cache"
dim zNum,i,j
dim Ados,Ados1
Randomize timer
生成随机四位数字:
zNum = cint(8999*Rnd+1000)
传递给session
Session("GetCode") = zNum
该for循环是将随机数字放入一个下标3的数组,便于提供给后面的阵列变换
dim zimg(3),NStr
NStr=cstr(zNum)
For i=0 to 3
zimg(i)=cint(mid(NStr,i+1,1))
Next
dim Pos

'定义二个 ADODB.Stream binary对象,作图像数据操作之用:

set Ados=Server.CreateObject("Adodb.Stream")
Ados.Mode=3
Ados.Type=1
Ados.Open
set Ados1=Server.CreateObject("Adodb.Stream")
Ados1.Mode=3
Ados1.Type=1
Ados1.Open
'载入0~9的数字数据10x100的,Gbr的阵列数据,每个320字节,10个数字3200byte
'BGR一个点,10x10个点一个数字,一个点三个字节(二进制8位,16进制 00~FF)
'一行10个点 30字节 + 行结束标记 00 00 二字节 32字节,所以一个10x100宽小于长的图像每个数字10x10是320字节
'长大于宽的则无行结束标记 0000,直接是300字节
这些就是BMP 24bit的数据详细信息了
‘至于头部,也很简单,包含长宽,图像开始标记等等~~才54字节,远没jpg什么的复杂

Ados.LoadFromFile(Server.mappath("body.Fix"))
Ados1.write Ados.read(1280)
'第一个for循环,按生成的随机数字顺序从 10X100的数字阵列中提取出相应的四个数字
但是竖排的数字阵列
for i=0 to 3
Ados.Position=(9-zimg(i))*320
Ados1.Position=i*320
Ados1.write ados.read(320)
next
'清空已经用完的ADOS的数据,调入替换新的图像头54字节的头文件
Ados.LoadFromFile(Server.mappath("head.fix"))
Pos=lenb(Ados.read())
Ados.Position=Pos '指定Pos位置,即可再偏移54字节的位置添加图形数据
第二个for循环,进行数字的阵列变换,由竖排的块转换为横排的数字块
方法是隔320字节抽取4次30字节写入ados对象,再抽取偏移第二行的图像数据
30字节是因为bmp 宽大于长时无00 00的行结束标记
for i=0 to 9 step 1
for j=0 to 3
Ados1.Position=i*32+j*320
Ados.Position=Pos+30*j+i*120
Ados.write ados1.read(30)
next
next
Ados.Position=0
response.BinaryWrite直接向客户端发送图像数据
Response.ContentType = "image/BMP"
Response.BinaryWrite Ados.read()
Ados.Close:set Ados=nothing
Ados1.Close:set Ados1=nothing
End Function

分享到:
评论

相关推荐

    ASP彩色校验码的制作

    要读懂这些代码主要是要了解ASP中操作二进制数据的对象ADODB.Stream!本程序主要用的就是Adodb.Stream,如果你有这个基础,就可以进一步添加更多的功能如加入杂点,...把4321识别成 89910,所以图像码还是比较安全的。

    asp常用实例CHM

    asp的各种常用实例电子书 彩色校验码的制作 在记录集中加入判断使之灵活 在ASP网站设计中表单验证

    彩色二维码生成器,带logo文字和中心文字

    彩色二维码生成器是一种创新的二维码制作工具,它不仅能够生成基本的黑白二维码,还能通过自定义颜色、添加Logo以及中心文字来提升二维码的视觉效果,使其更具吸引力和辨识度。这种工具在现代营销、品牌推广和信息...

    万能学习型红外遥控器制作

    其中,NEC协议是一种广泛使用的红外遥控编码方式,它采用38kHz的载波频率,每个脉冲代表0或1,并且有固定的头码、地址码、命令码和校验码,确保数据的准确传输。 RC-5协议则是飞利浦公司开发的一种开放性标准,同样...

    二维码的扫描和制作

    周围还有校验区域,用于错误检测和纠正,确保数据的准确性。 二、二维码的制作 1. **在线生成器**: 制作二维码最简单的方法是使用在线二维码生成器,如草料二维码、微信小程序等。只需输入要编码的信息(如网址、...

    什么是条码技术.doc

    在中国,通用商品条码主要采用EAN码结构,由前缀码、制造厂商代码、商品代码和校验码组成,其中前缀码标识国家,我国为690。一维条码的特点在于其图形结构简单,但信息容量有限,而二维条码则能在小面积内存储大量...

    居民身份证申领登记表-1页.pdf

    - **公民身份证号码**:18位数字的唯一身份识别码,由地区码、出生日期码、顺序码和校验码组成。 2. **证件有效期**: - 身份证的有效期限分为5年、10年、20年和长期四种,根据申请人的年龄来确定。 - **签发...

    51单片机辅助开发软件系列

    它可以显示接收到的数据,发送数据到单片机,并支持设置波特率、数据位、停止位和校验位等参数,帮助开发者快速验证串口通信功能。 2. **图片取模软件**:在制作51单片机驱动的显示界面时,可能需要将图片转换为...

    各种文件后缀名格式

    - **.class**: Java Class File(Java类文件),是Java编译器生成的二进制文件格式,包含了Java虚拟机可以执行的字节码。 以上只是部分常见的文件后缀名及其含义,实际上还有许多其他类型的文件格式。掌握这些基本...

    winrar3.7 Beta8

    用户身份校验信息可作为附加安全特性被添加,并且 WinRAR 将保存最后更新和压缩文件名的信息。 &lt;br&gt; WinRAR - 最新版本的最新更新 &lt;br&gt; 版本 3.70 beta 8 &lt;br&gt; 1. 错误修正: &lt;br&gt; a) WinRAR ...

Global site tag (gtag.js) - Google Analytics