lab multi thread

12

Click here to load reader

Upload: benj-del-mundo

Post on 12-Jul-2015

259 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Lab multi thread
Page 2: Lab multi thread

● An exhaustive search that tries all possible

combinations to discover the secret key.

Page 3: Lab multi thread

● The resources required for a brute-force attack grow

exponentially with increasing key size, not linearly.

key oflength valuespossible ofnumber nscombinatio of #

Page 4: Lab multi thread

Characters # Values Length 2 Length 3 Length 4

Numeric 10 100 1,000 10,000

Alphabet (case insensitive)

26 676 17,576 456,976

Alphabet (case sensitive)

52 2704 140,608 7,311,616

Alphanumeric 62 3884 238,328 14,776,336

Alphanumeric + symbols

92 8464 778,688 71,639,296

Page 5: Lab multi thread

● 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.

Page 6: Lab multi thread

Thread 1 Thread 2

Length = 1 Length = 2

Length = 3

Length = 4

Length = 5

Length = 6

Length = 7

Length = 8

Length = 9

Length = 10

TIME

Page 7: Lab multi thread

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

Page 8: Lab multi thread

● 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

Page 9: Lab multi thread

public class SecretKey {

private String key;

public SecretKey(String key) {

this.key = key;

}

public boolean verify(String query){

return query.equals(key);

}

}

Page 10: Lab multi thread

public class BruteForce {

public char characters[] =

("ABCDEFGHIJKLMNOPQURSTUVWXYZabcdefghijklmnopqurstuvwkyz"

+ "\"" +

"1234567890" +

"~!@#$%^&*()_+|`[]{};:,.<>/?'|\\")

.toCharArray();

SecretKey key;

public void initializeKey(){

key = new SecretKey("H!ndiM0Alam"); //sample

}

}

Page 11: Lab multi thread

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

}

Page 12: Lab multi thread

● Submit your ME to [email protected] 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