您的位置:首页 > 编程语言 > Java开发

java实现各种密码破解---包括wifi,登录密码,验证码等等。

2018-02-15 10:50 1006 查看
该篇文章只介绍破解数字密码,其他字符密码的破解待下一篇文章再细说。

暴力破解密码系统
破解六位,七位,八位,九位,十位密码,先假设密码中只有数字
六位从000000一直尝试到999999直至是正确后终止,若不中途终止,则共执行10的6次方次,即
1000000,一百万次
七位从0000000尝试到9999999直至是正确密码后终止,若不中途终止,则共执行10的7次方次,即
10000000,一千万次
八位从00000000尝试到99999999直至是正确密码后终止,若不中途终止,则共执行10的8次方次,即100000000,一亿次
九位从000000000尝试到999999999直至是正确密码后终止,若不中途终止,则共执行10的9次方次,即1000000000,十亿次
十位从0000000000尝试到9999999999直至是正确密码后终止,若不中途终止,则共执行10的10次方次,即10000000000,一百亿次

为了保证0能够正常显示,这些数要是一个字符串,但要随时转化为整型以便加1自执行
//该方法实现如果字符串s的位数不够l个,则在其前补0,以够位数
//s:字符串,l字符串的长度,如s为1,l=6应写成000001,s=20,l=8应写成00000020
public String addZero(String s,int l){
if(s.length!=l){
for(int i=0;i<l-s.length;i++){
s="0"+s;
}
}
return s;
}
//之所以将各位数分开,而不是直接用
//0-999999999是因为当六位数到999999后,直接
//是七位字符1000000,而实际还要经过0000000等
public static void main(String []args){
//打印所有 可能的 六位数密码000000-999999
String real ="303030";//用户设的密码
String s="";//破解出的密码,
String p;//破解过程中产生的各位数
for(int i=0;i<=999999;i++){//暴力遍历出用户密码
//整型转为字符串可直接在其后加""
p= addZero(i+"",6);
if (p.equals (real)){
s=p;
System.out.println("执行"+(i+1)+"已破解该密码,为"+s);
break; //退出循环
}
System.out.println(p);
}
//六位数遍历完,同样方法遍历七位数
if(s.equals("")){//说明在六位数中未找到
for(int i=0;i<=9999999;i++){//暴力遍历出用户密码
//整型转为字符串可直接在其后加""
p= addZero(i+"",7);
if (p.equals (real)){
s=p;
System.out.println("执行"+(i+1)+"已破解该密码,为"+s);
break; //退出循环
}
System.out.println(p);
}
}
//......其他位数与以上类似,在此不再一一赘述。其中如果是验证码的话,常见的有四位验证码和六位验证码,只需要执行
//对应位数的循环即可。
}


需要注意的是,方法有了,问题是怎么将程序与其他软件系统比如QQ,微信,wifi相结合?我初步想了一下。如果是手机app的话,可以做一个类似于输入法之类的软件,当点击需要破解的密码框时,弹出该程序,进行遍历,最终遍历出密码打破循环后登录,实现破解密码登录。当然现如今像包括QQ微信在内这样的软件通过这样的方法破解密码几乎不可能,因为他们登录账户需要输入的信息不止密码这么简单,有时需要图片验证码等等的验证方式。我写这个也纯属在娱乐中学习尝试,并没有真正去盗号的想法。如果想看包括非纯数字密码的破解方法,请见下一篇文章,谢谢! 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java
相关文章推荐