破解校内的图片识别码。

原创 2007年10月06日 21:46:00

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;

namespace XiaoNei.VerifyImage
{
    
public static class Verify
    
{
        
private static int[,] imageDatas;
        
private static String code;
        
private static Bitmap image;

        
/**//// <summary>
        
/// 获取验证码
        
/// </summary>
        
/// <param name="filename">输入文件名</param>
        
/// <returns>验证码</returns>

       
        
public static String getCode(String filename)      
        
{
            Bitmap image 
= new Bitmap(filename);
            readDatas(image);
            code 
= "" + getBestCode(getSimple(35)) +
                    getBestCode(getSimple(
313)) +
                    getBestCode(getSimple(
321)) +
                    getBestCode(getSimple(
329));
            Console.WriteLine(code);

            
//测试识别是否正确,文件名中含有验证码
            
//if (filename.IndexOf(code) < 0)
               
// Console.WriteLine("Error");
            return code;
        }


        
/**//// <summary>
        
/// 初始化数据
        
/// </summary>

        private static void readDatas(Bitmap image)
        
{

            imageDatas 
= new int[image.Height, image.Width];
            Color pixelColor;
            
for (int h = 0; h < image.Height; h++)
            
{
                
for (int w = 0; w < image.Width; w++)
                
{
                    pixelColor 
= image.GetPixel(w, h);

                    imageDatas[h, w] 
= pixelColor.R > 0 ? 1 : 0;
                }
//for
            }
//for
        }

        
/**//// <summary>
        
/// 取数字块
        
/// </summary>
        
/// <param name="x">横坐标</param>
        
/// <param name="y">纵坐标</param>
        
/// <returns>一维数组</returns>

        private static int[] getSimple(int x, int y)
        
{
            
int[] simple = new int[9 * 6];
            
int count = 0;
            
for (int h = x; h < x + 9; h++)
            
{
                
for (int w = y; w < y + 6; w++)
                
{
                    simple[count
++= imageDatas[h, w];
                }

            }

            
return simple;
        }

        
/**//// <summary>
        
/// 最和谐的数字
        
/// </summary>
        
/// <param name="x">数字块</param>
        
/// <returns>结果</returns>

        private static int getBestCode(int[] x)
        
{
            
int bestNumber = -1;
            
double bestVal = 0.0;
            
for (int index = 0; index < 10; index++)
            
{
                
double val = compareSimple(NumberData.getNumber(index), x);
                
if (bestVal <= val)
                
{
                    bestVal 
= val;
                    bestNumber 
= index;
                }

            }

            
return bestNumber;
        }

        
/**//// <summary>
        
/// 获取两个数字图像数组的和谐百分比
        
/// </summary>
        
/// <param name="t">匹配数字数组</param>
        
/// <param name="x">待匹配数字数组</param>
        
/// <returns>和谐百分比</returns>

        private static double compareSimple(int[] t, int[] x)
        
{
            
int count = 0;
            
int val = 0;
            
for (int i = 0; i < t.Length; i++)
            
{
                
if (1 == t[i])
                
{
                    count
++;
                    
if (1 == x[i])
                    
{
                        val
++;
                    }

                }

            }

            
return (val + 0.0/ count;
        }

    }



}


最近在做一个校内刷人气的小工具,顺便把图像识别搞了一下。 把源代码贴出来。请高手指教。

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Net; 
using System.IO;
using System.Text;

namespace XiaoNei.VerifyImage
{
   
public  class DownLoadImage
    
{
        
/// <summary>
        
/// 从图片地址下载图片到本地磁盘
        
/// </summary>
        
/// <param name="ToLocalPath">图片本地磁盘地址</param>
        
/// <param name="Url">图片网址</param>
        
/// <returns></returns>

        public static bool SavePhotoFromUrl(string FileName, string Url)
        
{
            
bool Value = false;
            WebResponse response 
= null;
            Stream stream 
= null;

            
try
            
{
                HttpWebRequest request 
= (HttpWebRequest)WebRequest.Create(Url);

                response 
= request.GetResponse();
                stream 
= response.GetResponseStream();

                
if (!response.ContentType.ToLower().StartsWith("text/"))
                
{
                    Value 
= SaveBinaryFile(response, FileName);

                }


            }

            
catch (Exception err)
            
{
                
string aa = err.ToString();
            }

            
return Value;
        }

        
/// <summary>
        
/// Save a binary file to disk.
        
/// </summary>
        
/// <param name="response">The response used to save the file</param>

        // 将二进制文件保存到磁盘
        private static bool SaveBinaryFile(WebResponse response, string FileName)
        
{
            
bool Value = true;
            
byte[] buffer = new byte[1024];

            
try
            
{
                
if (File.Exists(FileName))
                    File.Delete(FileName);
                Stream outStream 
= System.IO.File.Create(FileName);
                Stream inStream 
= response.GetResponseStream();

                
int l;
                
do
                
{
                    l 
= inStream.Read(buffer, 0, buffer.Length);
                    
if (l > 0)
                        outStream.Write(buffer, 
0, l);
                }

                
while (l > 0);

                outStream.Close();
                inStream.Close();
            }

            
catch
            
{
                Value 
= false;
            }

            
return Value;
        }



    }

}

 

 

using System;
using System.Collections.Generic;
using System.Text;

namespace XiaoNei.VerifyImage
{
    
public class NumberData
    
{

        
public static int[] getNumber(int n)
        
{
            
switch (n)
            
{
                
case 0return num0; }
                
case 1return num1; }
                
case 2return num2; }
                
case 3return num3; }
                
case 4return num4; }
                
case 5return num5; }
                
case 6return num6; }
                
case 7return num7; }
                
case 8return num8; }
                
case 9return num9; }
                
defaultreturn num0; }
            }

        }





        
public static int[] num0 = {
        
0,0,1,1,0,0,
        
0,1,0,0,1,0,
        
1,0,0,0,0,1,
        
1,0,0,0,0,1,
        
1,0,0,0,0,1,
        
1,0,0,0,0,1,
        
1,0,0,0,0,1,
        
0,1,0,0,1,0,
        
0,0,1,1,0,0
    }
;

        
public static int[] num1 = {
        
0,0,1,1,0,0,
        
0,1,0,1,0,0,
        
0,0,0,1,0,0,
        
0,0,0,1,0,0,
        
0,0,0,1,0,0,
        
0,0,0,1,0,0,
        
0,0,0,1,0,0,
        
0,0,0,1,0,0,
        
0,1,1,1,1,1
    }
;

        
public static int[] num2 = {
        
1,1,1,1,0,0,
        
0,0,0,0,1,0,
        
0,0,0,0,1,0,
        
0,0,0,0,1,0,
        
0,0,0,1,0,0,
        
0,0,1,0,0,0,
        
0,1,0,0,0,0,
        
1,0,0,0,0,0,
        
1,1,1,1,1,0
    }
;

        
public static int[] num3 = {
        
1,1,1,1,0,0,
        
0,0,0,0,1,0,
        
0,0,0,0,1,0,
        
0,0,0,1,0,0,
        
0,1,1,0,0,0,
        
0,0,0,1,0,0,
        
0,0,0,0,1,0,
        
0,0,0,0,1,0,
        
0,1,1,1,0,0
    }
;

        
public static int[] num4 = {
        
0,0,0,0,1,0,
        
0,0,0,1,1,0,
        
0,0,1,0,1,0,
        
0,1,0,0,1,0,
        
1,0,0,0,1,0,
        
1,1,1,1,1,1,
        
0,0,0,0,1,0,
        
0,0,0,0,1,0,
        
0,0,0,0,1,0
    }
;

        
public static int[] num5 = {
        
1,1,1,1,1,0,
        
1,0,0,0,0,0,
        
1,0,0,0,0,0,
        
1,1,1,0,0,0,
        
0,0,0,1,0,0,
        
0,0,0,0,1,0,
        
0,0,0,0,1,0,
        
0,0,0,1,0,0,
        
1,1,1,0,0,0
    }
;
        
public static int[] num6 = {
        
0,0,1,1,1,1,
        
0,1,0,0,0,0,
        
1,0,0,0,0,0,
        
1,0,1,1,0,0,
        
1,1,0,0,1,0,
        
1,0,0,0,0,1,
        
1,0,0,0,0,1,
        
0,1,0,0,1,0,
        
0,0,1,1,0,0
    }
;
        
public static int[] num7 = {
        
1,1,1,1,1,1,
        
0,0,0,0,0,1,
        
0,0,0,0,1,0,
        
0,0,0,1,0,0,
        
0,0,0,1,0,0,
        
0,0,1,0,0,0,
        
0,0,1,0,0,0,
        
0,1,0,0,0,0,
        
0,1,0,0,0,0
    }
;

        
public static int[] num8 = {
        
0,1,1,1,1,0,
        
1,0,0,0,0,1,
        
1,0,0,0,0,1,
        
0,1,0,0,1,0,
        
0,1,1,1,1,0,
        
1,0,0,0,0,1,
        
1,0,0,0,0,1,
        
1,0,0,0,0,1,
        
0,1,1,1,1,0
    }
;

        
public static int[] num9 = {
        
0,0,1,1,0,0,
        
0,1,0,0,1,0,
        
1,0,0,0,0,1,
        
1,0,0,0,0,1,
        
0,1,0,0,1,1,
        
0,0,1,1,0,1,
        
0,0,0,0,0,1,
        
0,0,0,0,1,0,
        
1,1,1,1,0,0
    }
;

    }


}


 

 

 

校内局域网破解(经典!!!!!)

校内局域网破解工具下载地址:请点击这里! 首先声明这个校内局域网破解软件不是本人写的,本人只专注于嵌入式开发和web前端,这个软件是用c#写的,挺厉害的,下面请看我的详细叙述。 这个软件是我校计算...
  • qq_21792169
  • qq_21792169
  • 2016年03月01日 17:43
  • 5557

第五届蓝桥杯(校内选拔赛)

1. 输入一个字符串,求它包含多少个单词。单词间以一个或者多个空格分开。 第一个单词前,最后一个单词后也可能有0到多个空格。 比如:” abc xyz” 包含两个单词,”ab c ...
  • qq_32792879
  • qq_32792879
  • 2017年03月28日 17:24
  • 600

java 中通用唯一识别码的生成

import java.util.UUID; public class GeneralKey { public static String getGeneralKey(){ UUID uuid...
  • wangdianyong
  • wangdianyong
  • 2015年03月09日 16:33
  • 1364

android 获取手机唯一识别码

//如果获取不到imsi号,就拼接其它信息获取唯一码: 结论是,依然有部分手机获取不到。 final TelephonyManager tm = (TelephonyManager) ge...
  • hualizide
  • hualizide
  • 2014年11月27日 14:20
  • 3523

Android设备获取唯一识别码

Android系统以及设备都有很多的“标识”号,比如常见的IMEI,SerizalNumber,UUID等概念,但是这些都存在一定程度上的不可靠性,到底如何标记一台Android设备? DEVI...
  • u012917700
  • u012917700
  • 2016年09月20日 14:25
  • 2560

通过校内服务器实现免费上网

网络环境如下: 1. 实验室有几台24小时运转的服务器; 2. 所有服务器通过一个路由器采用静态ip的方式接入校园网,并且可以直接访问外网; 3. 学生通过校园网上网需要账号认证(花钱去买);...
  • geyalu
  • geyalu
  • 2015年11月16日 19:18
  • 821

破解图片防盗链方法

很多网站都对自己的图片做了防止盗链的处理,目的是减轻服务器的压力,方式方法也都是大同小异。对于想直接通过来访问人家的链接的网站来说的症状就是,人家显示一个警告图片,你想看的图片莫名奇妙的变成了提示页面...
  • qq_27113373
  • qq_27113373
  • 2016年04月19日 10:58
  • 1520

手机设备身份识别码之IMEI

文章来源:http://baike.baidu.com/view/90099.htm  前言   IMEI(International Mobile Equipment Identity)是国际移...
  • hudashi
  • hudashi
  • 2011年12月03日 17:09
  • 9358

破解防盗链的图片的一些方法总结

为什么要处理这些东西,在做网站采集的时候,有时候我们并不想吧网站的图片全部下载下来,而是希望可以引用它原本网站上的图片,这样可以我们既可以拿到资源,又可以节约我们的磁盘空间,不过坏处就是被抓取的网站如...
  • quuqu
  • quuqu
  • 2016年10月29日 17:38
  • 4471

获取机器识别码

systeminfo.deviceuniqueidentifier()
  • qq_34678199
  • qq_34678199
  • 2016年12月08日 15:31
  • 306
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:破解校内的图片识别码。
举报原因:
原因补充:

(最多只允许输入30个字)