鉴于很多朋友的意思,再补充说一下,
希望大家参考一下有关神经网络的技术资料,模式识别的文章。
我的网站已经服务到期,程序在这里
最近实在太忙,没时间写完。大家凑合着看吧。希望大家给我建议。谢谢。
图形识别技术与网上安全
(关键字:图形识别 安全 黑客 破解 OICQ 登陆)
作者:主 人
版
权
所
有
金
葵
花
工
作
室
2004-1-4 V1.0
Home
11602011
Tel
(86)028-87311227
§1.1 目录
§1.2 前言
申明:
1、 本文章并不怂恿大家做什么有害计算机网络安全的任何活动!仅作研究讨论使用。
2、 写得不好,望大家指正。
如今,太多的网站使用了图形附加码,如http://love.qq.com/left1.shtml,以求Internet的安全,然而,真是如此吗?
§1.3 图形识别的梦想
每个程序员、每个系统架构师、每个IT人,谁没有梦想,谁没有作为的梦?我,就是这样的一个人,这个图形附加码的识别就算是我踏出图形识别之路的第一步吧,同时也希望专家们把网上的图形附加码做得更好。
§1.4 图形识别的原理
§1.4.1 图形类型
§1.4.1.1. 常规图形的识别
常规图形是指图形附加码没有经过任何特殊的处理,如7564. 这中图形一般每个数字占的宽度、高度都一致。因此,其识别是很容易的,只要先采集0 ~ 9的数字特征码存于数据库,用的时候拿出来作一个扫描比较,取出最接近的一个就是了。特征码的采集见[识别原理]
§1.4.1.2. 一般效果图形
不同颜色、背景色、随机杂点,通常只用了两种颜色:前景色、背景色两种。如:
,这种图形的识别分析原理是,先扫描一遍整个图形,统计出颜色最多的一种:就是背景色,定义为待去除的背景色。然后在扫描一遍,把背景色还原为白色,以便识别方便,同时去除杂点,去除杂点的原理是,用GetPixel取出一点与背景色比较,如果不同,然后取其附近的点比较,如果没有连续的点,证明是杂点,所以就用SetPixel设置他。最后在用常规图形的识别方法处理他。样例程序就是采用这样的方法。(样例图来自:http://verify.qq.com/getimage?"%2CMath.random()%2C”)§1.4.1.3. 特殊图形的识别
这样的图形通常有不同的背景色、背景点、背景图、渐变背景色、网格背景等等,而前景图形(通常是数字、字符、汉字等)则采用倾斜、膨化、波浪化、风化、背景图形凹凸、球状扭曲等等效果来形成。如:(以下图形来自http://edit.bjs.yahoo.com/config/eval_register?.ea=35NB3rPjpNEH191O8w9OLjUE_Nn8b16EhPzXz1BMMqq6pMb53YlmWfnAjJdcnHvar9NxW_XbmgVJsJqrxNY2ntMqZ4QY7G.1.ciCd_U.zUGUChdS9DNFevwgs3LzTTxuawVbRaoEZCggdLcEm02UCHCdaJUnb.6JSdeMyfx7Gg9eVx5mu4UH8pAiE07_yEE4doLEhWunjA--,每刷新一次变一次)
如上的图形,通常用笔迹流向法(见下面)解决,但是,在识别之前应该用用水流还原法还原由背景色网格分隔开的前景图形。
§1.4.2 识别原理
§1.4.2.1. 特征码法
特征码就是统计单个图形字显示时占的宽、高度像数,在统计每横行、竖行像数占的比例数,当然,也可以把宽高平分为n等份来记录,以减少特征码数据库的体积。如:
去除多余的部分后,各数字宽为6 Pix,高 9 Pix,0数字图形的横向统计是:0, 1, 2, 2, 2, 2, 2, 2, 1。也就是说比例为:0,1/6,1/3,1/3,1/3,1/3,1/3,1/3,1/6;竖向统计:4, 2, 2, 2, 4, 0,比例:4/9,2/9,2/9,2/9,4/9,0。下为C/C++描述
// 横向Pix统计( 0 ~ 9)
int narrNumCharacterH[10][9] = {
{0, 1, 2, 2, 2, 2, 2, 2, 1},
{0, 1, 2, 2, 1, 1, 1, 1, 5},
{0, 3, 2, 1, 1, 1, 1, 1, 5},
{0, 3, 2, 1, 2, 1, 1, 2, 3},
{0, 1, 2, 2, 2, 2, 5, 1, 1},
{0, 5, 1, 4, 2, 1, 1, 2, 3},
{0, 3, 1, 1, 4, 2, 2, 2, 3},
{0, 5, 1, 1, 1, 1, 1, 1, 1},
{0, 3, 2, 2, 3, 2, 2, 2, 3},
{0, 3, 2, 2, 2, 4, 1, 1, 3}
};
// 竖向Pix统计( 0 ~ 9)
int narrNumCharacterS[10][6] = {
{4, 2, 2, 2, 4, 0},
{2, 2, 8, 1, 1, 0},
{3, 3, 3, 3, 3, 0},
{2, 2, 3, 3, 5, 0},
{3, 2, 2, 8, 1, 0},
{5, 3, 3, 3, 5, 1},
{5, 3, 3, 3, 4, 0},
{1, 3, 3, 3, 2, 0},
{5, 3, 3, 3, 5, 0},
{4, 3, 3, 3, 5, 0}
};
§1.4.2.2. 笔迹流向法
笔记流向法就是当GetPixel取出一个点后,想四周漫游出7 ~ 8 个点,寻找正确的流向,如果四周都没有
§1.4.2.3. 水流还原法
sgfdg
§1.5 样例程序
§1.5.1 下载地址
http://m9m.nease.net/d/LoadPic.exe
§1.5.2 操作步骤
运行后,点击[取得图片]按钮,程序会自动从http://verify.qq.com/getimage?"%2CMath.random()%2C"下载类似
这样的图片,并在当前目录保存为dl.gif,然后在点击[分析]按钮,就会在[这里将显示分析的结果]的Edit中得到图形识别后的结果。