博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fix是bmp的一种衍生格式,可用于asp生成验证码图形
阅读量:5955 次
发布时间:2019-06-19

本文共 2631 字,大约阅读时间需要 8 分钟。

fix是bmp的一种衍生格式,可用于asp生成验证码图形  

2007-10-10 14:50:36|  分类: |  标签: |字号 

 
 

ASP源码中的body.fix与head.fix文件了。那是与验证码有关的,要完全搞清楚这个就得搞清楚bmp格式的图片文件的编码了。

bmp文件的前54Byte的内容是头部信息,利用程序或工具把这54Bye的内容读出来存为head.fix文件。除这54Byte的数据后就是RGB阵列数据了,这部分内容存为body.fix文件。
CHECKCODE.ASP程序会根据需求,从body.fix中读取一小块陈列数据组合,再与head.fix中的数据合在一起成为一个图片,再发送到浏览器,用来显示图片验证码。
所以这里的.fix文件只是用来保存一堆有用的数据的文件,用CHECKCODE.ASP来读取它里面的数据。
怎么建的文件??

用程序,读取文件的二进制数据,指定从什么地方读,读多少,再保存读取到的数据。

ASP中的   Adodb.Stream   对象就可以出色的完成这个任务。

也就是说*.fix文件   是用程序编写再生成的   。

不是用什么画图工具生成的。

先用图像编辑软件编辑出漂亮的图片,保存,再用再编程读取这个图片并分解成两个文件保存下来。

一个例子:

1 图象绘制完成后,将文件存为24位位图格式的BMP图象文件。
2 去除前54Byte内容.
3 改名为BODY+数字.FIX
4 修改CHECKCODE.ASP,调用你新做的这个文件.
(checkcode.asp 负责生成和输出验证码 1309 byte,head.fix 是54byte的BMP头,body.fix 数字0~9 10X100竖排的RGB阵列数据3200 byte )
就是生成彩色验证码的文件
1、checkcode.ASP 负责生成和输出验证码 1309 byte。
2、head.fix 是54byte的BMP头
3 、body.fix 数字0~9 10X100竖排的RGB阵列数据3200 byte

fix是bmp的一种衍生格式,可用于asp生成验证码图形。

一个例子:
1 图象绘制完成后,将文件存为24位位图格式的BMP图象文件。
2 去除前54Byte内容.
3 改名为BODY+数字.FIX
4 修改CHECKCODE.ASP,调用你新做的这个文件.
(checkcode.asp 负责生成和输出验证码 1309 byte,head.fix 是54byte的BMP头,body.fix 数字0~9 10X100竖排的RGB阵列数据3200 byte )
就是生成彩色验证码的文件
1、checkcode.ASP 负责生成和输出验证码 1309 byte。
2、head.fix 是54byte的BMP头
3 、body.fix 数字0~9 10X100竖排的RGB阵列数据3200 byte
程序代码
<%Option Explicit
Response.buffer = True
NumCode (14)
Function NumCode(CodeType)
Response.Expires = -1
Response.AddHeader "Pragma", "no-cache"
Response.AddHeader "cache-ctrol", "no-cache"
On Error Resume Next
Dim zNum, rNum, i, j, listnum, listcode
Dim Ados, Ados1
listcode = "0123456789abcdefghijklmnopqrstuvwxyz"
Randomize Timer
Dim zimg(6), NStr
For i = 0 To 5
rNum = CStr(CInt(9 * Rnd))
zimg(i) = rNum
listnum = listnum & Mid(listcode, rNum + 1, 1)
Next
Session("CheckCode") = listnum
Dim Pos
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
Ados.LoadFromFile (Server.mappath("body" & CodeType & ".Fix"))
Ados1.write Ados.read(2880) 这后面的2880
For i = 0 To 5
Ados.Position = (35 - zimg(i)) * 480 这里的480,35-zimg(i)起什么作用,他们有什么关系
Ados1.Position = i * 480
Ados1.write Ados.read(480)
Next
Ados.LoadFromFile (Server.mappath("head.fix"))
Pos = LenB(Ados.read())
Ados.Position = Pos
For i = 0 To 15 Step 1 为什么循环只到15,而下面到5,又出现32,480,270,30这些数字搞的东西我都搞不懂!请哪位高手能给讲一下吗?
For j = 0 To 5
Ados1.Position = i * 32 + j * 480
Ados.Position = Pos + 30 * j + i * 270
Ados.write Ados1.read(30)
Next
Next
Response.ContentType = "image/BMP"
Ados.Position = 0
Response.BinaryWrite Ados.read()
Ados.Close: Set Ados = Nothing
Ados1.Close: Set Ados1 = Nothing
'If Err Then Session("CheckCode") = "999999"
End Function
%>

 

转载地址:http://eoexx.baihongyu.com/

你可能感兴趣的文章
<气场>读书笔记
查看>>
web安全问题分析与防御总结
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
从前后端分离到GraphQL,携程如何用Node实现?\n
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
jquery 操作iframe、frameset
查看>>
解决vim中不能使用小键盘
查看>>
jenkins权限管理,实现不同用户组显示对应视图views中不同的jobs
查看>>
我的友情链接
查看>>
CentOS定时同步系统时间
查看>>
批量删除用户--Shell脚本
查看>>
如何辨别android开发包的安全性
查看>>