3. ●
The resources required for a brute-force attack grow
exponentially with increasing key size, not linearly.
# of combinatio ns number of possible values lengthof key
5. ●
●
Our task is to develop a multi-threaded program that will
distribute the work load into multiple threads.
Each thread will be assigned to a specific length to
break.
7. 1. Main Thread will create Thread 1 and Thread 2
2. Main Thread will assign odd-numbered lengths to
thread 1, even-numbered to thread 2
3. Main Thread will start Thread 1 and Thread 2
1. Threads 1 and 2 will search from shortest length.
4. Main thread waits for both threads. (use join)
5. Main Ends
8. ●
Use the following template as your guide.
– The SecretKey class will be your shared object
– The BruteForce Class will be your main class
– The WorkerThread will try all possible combinations for its
assigned key size
9. public class SecretKey {
private String key;
public SecretKey(String key) {
this.key = key;
}
public boolean verify(String query){
return query.equals(key);
}
}
10. public class BruteForce {
public char characters[] =
+
("ABCDEFGHIJKLMNOPQURSTUVWXYZabcdefghijklmnopqurstuvwkyz"
""" +
"1234567890" +
"~!@#$%^&*()_+|`[]{};:,.<>/?'|")
.toCharArray();
SecretKey key;
public void initializeKey(){
key = new SecretKey("H!ndiM0Alam"); //sample
}
}
11. public class WorkerThread extends Thread {
SecretKey key;
int keylengths[];
WorkerThread(key, int[] keylengths){
this.key = key;
this.keylengths = keylengths;
}
public void run(){
for(int i = 0; i< keylengths.length; i++){
if(crack(key,keylengths[i])){
break;
}
}
}
public boolean crack(SecretKey key,int length){
//generate all possible keys of length
//code here -- use key.verify();
//if key is verified, print key
}
12. ●
Submit your ME to isubmitmycode@gmail.com with the
following details
– Subject : CS140 ME: Password
– Name, and section
●
Specifications
– The limit for key size is 4 (alphanumeric+symbols);
●
Deadline: Feb 4, 2014