我目前正在研究一种强力密码破解方法,因为我想尝试一下并做一些新的事情。我正在提供下面我正在研究的方法,但这是我要做的第一件事。最初,我正在生成密码的可能值的哈希值,并将其与我的“sample.txt”文件中的密码进行比较,该文件包含散列密码列表。所以基本上我的目标是从该外部文件读取散列密码值,并将其与所有可能的3/4哈希密码值进行比较。
当我运行该程序时,我意外地将“BruteForce”方法中while语句的条件保持为true并且无休止地运行,但是当我设置条件以保持生成的密码值为3时只有4,程序突然终止我不知道为什么,我已经尝试调试程序,看看出了什么问题,但我无法推断出任何东西。
这是我的主要方法和“强力”方法中的内容:
public TestClass(char[] characterSet, int guessLength) {
cs = characterSet;
cg = new char[guessLength];
Arrays.fill(cg, cs[0]);
}
public static void bruteForce(String username, String hashed_pw) {
//username is the username from the input
//hashed_pw is the hashed value of password
String chars = "0123456789abcdefghijklmnopqrstuvwxyz";
char[] charset = chars.toCharArray();
TestClass bf = new TestClass(charset, 1); //random generation of possible pw value
String attempt = bf.toString();
while ((attempt.length() == 3) || (attempt.length() == 4)) {
String hashed_input = doHash(attempt); //hash the possible pw value
System.out.println("");
System.out.println("Attempt result is: " + attempt);
System.out.println("Hashed of attempt: " + hashed_input);
System.out.println("Hashed Password is : " + hashed_pw);
System.out.println("");
if (hashed_input.equals(hashed_pw)) {
System.out.println("Password Found: " + attempt);
System.out.println(username + "'s password is: " + attempt);
break;
} else {
attempt = bf.toString();
bf.increment();
}
// attempt = bf.toString();
// System.out.println("" + attempt);
// bf.increment();
// return attempt;
}
// return attempt;
}
public char[] cs;
public char[] cg;
public void increment() {
int index = cg.length - 1;
while (index >= 0) {
if (cg[index] == cs[cs.length - 1]) {
if (index == 0) {
cg = new char[cg.length + 1];
Arrays.fill(cg, cs[0]);
break;
} else {
cg[index] = cs[0];
index--;
}
} else {
cg[index] = cs[Arrays.binarySearch(cs, cg[index]) + 1];
break;
}
}
}
@Override
public String toString() {
return String.valueOf(cg);
}
使用bruteForce(s [0],s [1])运行代码时,它不提供任何输出,只提供BUILD SUCCESSFUL消息。
s[0] is the username of the user I'm trying to deduce their password
s[1] is the hashed password I read from an external file
我将s [1]值与bruteForce方法中的hashed_input值进行比较,条件是我的用户可能生成的密码长度只有3或4个字符
答案 0 :(得分:1)
TestClass bf = new TestClass(charset, 3);
将解决你的问题。