photourl为验证码图片路径
import org.apache.http.impl.client.DefaultHttpClient;
import java.awt.image.BufferedImage;
DefaultHttpClient httpclient = = new DefaultHttpClient();
BufferedImage bi = cracktest.getPhotoFromIntenet(httpclient,photourl);
String code = cracktest.crack(bi);
类cracktest .java
package com.test;
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
/**
* 验证码破解类
*
*/
public class CrackTest {
final private int[] firstNum = new int[] { 11, 3, 19, 15 };
final private int[] secondNum = new int[] { 26, 3, 34, 15 };
final private int[] thirNum = new int[] { 41, 3, 49, 15 };
final private int[] fourNum = new int[] { 56, 3, 64, 15 };
final private int[][] totalNum = new int[][] { firstNum, secondNum,thirNum, fourNum };
final private String Y5 = "6789111234567891112133456789111213143478131434781314347891011121314348910111213349101112";
final private String Y1 = "78678567345678910111213143456789101112131434567891011121314";
final private String Y3 = "5111245611121334561112131434891314348913143456789101112131445678910111213567101112";
final private String Y7 = "343434121314349101112131434789101112131434678910345634";
final private String Y4 = "9101189101167891011456710114561011345678910111213143456789101112131434567891011121314";
final private String Y9 = "5678124567891213345678910121314349101113143491213143456789101112131445678910111213467891011";
final private String Y6 = "678910114567891011121334567891011121314345813143478131434578910111213143458910111213459101112";
final private String Y8 = "567101112456789101112133456789101112131434891314348913143456789101112131445678910111213567101112";
final private String Y2 = "561314456121314345611121314341011121314349101113143456789101314456789131456781314";
final private String Y0 = "567891011124567891011121334567891011121314341314341314345678910111213144567891011121356789101112";
final private String[] totalY = new String[]{Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9};
public BufferedImage gray2(InputStream in) {
BufferedImage sr = null;
try {
BufferedImage src = ImageIO.read(in);
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorConvertOp op = new ColorConvertOp(cs, null);
sr = op.filter(src, null);
// ImageIO.write(src, "JPEG", new File(result));
} catch (IOException e) {
e.printStackTrace();
}
return sr;
}
public String crack(BufferedImage src) throws CrackFailException{
StringBuffer result = new StringBuffer();
for (int ti = 0; ti < totalNum.length; ti++) {
StringBuffer sb = new StringBuffer();
int xs = totalNum[ti][0];
int ys = totalNum[ti][1];
int xe = totalNum[ti][2];
int ye = totalNum[ti][3];
int co = 0;
for (int i = xs; i < xe; i++) {
for (int j = ys; j < ye; j++) {
if (src.getRGB(i, j) <= -7000000) {
sb.append(j);
}
}
}
for (int i = 0; i < totalY.length; i++) {
if(compareString(totalY[i], sb+"")){
result.append(i);
break;
}
}
}
if(result.length()<4){
throw new CrackFailException();
}
return result+"";
}
public static boolean compareString(String str1,String str2){
return str1.substring(0, 10).equals(str2.subSequence(0, 10)) || str1.substring(0, 10).indexOf(str2.substring(0,10))>=0
|| str2.substring(0, 10).indexOf(str1.substring(0,10))>=0;
}
public BufferedImage getPhotoFromIntenet(DefaultHttpClient httpclient,String photourl){
BufferedImage bi = null;
try {
HttpPost httpost1 = new HttpPost(photourl);
HttpResponse response1 = httpclient.execute(httpost1);
HttpEntity entity = response1.getEntity();
if (entity != null){
bi = gray2(entity.getContent());
}
} catch (Exception e) {//e.printStackTrace();
System.out.println(e.getMessage());
}finally{
}
return bi;
}
}
class CrackFailException extends Exception{
public String toString(){
return "<007>Crack Fail!!!!!!!!!";
}
}
分享到:
相关推荐
角色游戏随笔:警察转业.doc
随笔:高龄产妇思考女性的角色.docx
这篇文档虽然标题为“教学随笔:开学新气象”,但其中并未涉及具体的信息技术(IT)相关知识。描述和标签为空,部分内容主要描述了教师与学生们开学第一天的互动以及一起打扫教室卫生的情景,体现的是教育管理和班级...
幼儿园教育随笔:图书宝宝不哭了.doc
幼儿教师教育随笔:垃圾的有效利用.doc
幼儿教师教育随笔:垃圾桶里的饼干.doc
学习教育随笔:如何介入幼儿融合性游戏.docx