diff --git a/BBEncryptionCracker/.classpath b/BBEncryptionCracker/.classpath new file mode 100644 index 0000000..b15feb3 --- /dev/null +++ b/BBEncryptionCracker/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/BBEncryptionCracker/.gitignore b/BBEncryptionCracker/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/BBEncryptionCracker/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/BBEncryptionCracker/.project b/BBEncryptionCracker/.project new file mode 100644 index 0000000..5def989 --- /dev/null +++ b/BBEncryptionCracker/.project @@ -0,0 +1,17 @@ + + + BBEncryptionCracker + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/BBEncryptionCracker/src/de/mrbesen/Crack.java b/BBEncryptionCracker/src/de/mrbesen/Crack.java new file mode 100644 index 0000000..6a9b520 --- /dev/null +++ b/BBEncryptionCracker/src/de/mrbesen/Crack.java @@ -0,0 +1,27 @@ +package de.mrbesen; + +import Job.Jobsrc; +import Job.Result; +import Job.Result.ResultType; + +public class Crack extends Jobsrc { + + private final int start = 0; + private final int end = 0; + private int modul = 1; + private int publicKey = 0; + + @Override + public Result run() { + Result out = new Result(1); + for(int i = start; i < end; i++) { + out.add(out.new PartialResult(ResultType.Value, i + ":" + try_to_crack(i))); + } + return out; + } + + public boolean try_to_crack(int i) { + //encryption dependend. - for testing: modular multiplication + return (publicKey * i) % modul == 1; + } +} \ No newline at end of file diff --git a/BBEncryptionCracker/src/de/mrbesen/CryptCrack.java b/BBEncryptionCracker/src/de/mrbesen/CryptCrack.java new file mode 100644 index 0000000..ccba893 --- /dev/null +++ b/BBEncryptionCracker/src/de/mrbesen/CryptCrack.java @@ -0,0 +1,52 @@ +package de.mrbesen; + +import java.io.FileWriter; + +import Core.Program; +import Job.Job; +import Job.Result.PartialResult; + +public class CryptCrack extends Program { + + long testing = 1; + long public_key = 14012539;//valid private key: 2597832237 + long mod = 4862802614L; + //long public_key = 12600;//valid private key = 5042 + //long mod = 151621; + int testsperrun = 5000000; + + @Override + public void run() { + requestnewjobs(100000); + } + + @Override + public void HandlePartialResult(PartialResult pres) { + String in = (String) pres.obj; + System.out.println(in); + if(in.split(":",2)[1] == "true") {//match! + String key = in.split(":",2)[0]; + //write to file + try { + FileWriter fw = new FileWriter("saved"); + fw.write(key); + fw.close(); + } catch(Exception e) { + e.printStackTrace(); + System.out.println("Error while saving progress"); + } + + System.out.println("KEY FOUND!\nkey = " + key); + jobmanager.clear();//stop this job + } + } + + @Override + public void requestnewjobs(int amount) { + for(long i = testing; i < testing+(amount*testsperrun); i+= testsperrun) { + String code = "import Job.Jobsrc;\nimport Job.Result;\nimport Job.Result.ResultType;\npublic class Crack" + i + " extends Jobsrc {\n private final long start = " + i + "L; private final long end = " + (i + testsperrun) + "L; private long modul = " + mod + "L; private long publicKey = " + public_key + "L; \n @Override\n public Result run() {\n Result out = new Result(" + (jobmanager.jobs_total() +1) + ");\n for(long i = start; i < end; i++) {\n if(try_to_crack(i))\n {out.add(out.new PartialResult(ResultType.Value, i + \":true\"));\n}\n }\n return out;\n }\n public boolean try_to_crack(long i) {\n /*System.out.println(\"Testing\"+i);*/ return (publicKey * i) % modul == 1;\n }\n}"; + jobmanager.enque(new Job(code)); + } + testing += (amount*testsperrun); + } +} \ No newline at end of file diff --git a/Server/BesenBoincServer/src/Comunication/Server.java b/Server/BesenBoincServer/src/Comunication/Server.java index 74bb304..acf4799 100755 --- a/Server/BesenBoincServer/src/Comunication/Server.java +++ b/Server/BesenBoincServer/src/Comunication/Server.java @@ -60,7 +60,6 @@ public class Server implements PacketHandler { programthread = new Thread(prog, "Programm Thread"); programthread.start(); System.out.println("Programm execution started"); - } catch (IOException e) { e.printStackTrace(); } @@ -96,7 +95,6 @@ public class Server implements PacketHandler { try { ssoc.close();//close server socket ssoc = null; - Runtime.getRuntime().gc();//delete ssoc } catch (IOException e) { e.printStackTrace(); } diff --git a/Server/BesenBoincServer/src/Core/Program.java b/Server/BesenBoincServer/src/Core/Program.java index 7bd6a3c..82804a6 100755 --- a/Server/BesenBoincServer/src/Core/Program.java +++ b/Server/BesenBoincServer/src/Core/Program.java @@ -6,17 +6,21 @@ import Job.Result.PartialResult; public abstract class Program implements Runnable{ - public JobManager jobmanager = new JobManager(); + public JobManager jobmanager = new JobManager(this); public void HandleResult(Result r) { + jobmanager.setdone(r.getJobId()); + while(r.hasnext()) { PartialResult pres = r.next(); switch(pres.type) { - case Console: System.out.println((String) pres.obj); + case Console: System.out.println((String) pres.obj); break; case Value: HandlePartialResult(pres); } } } public abstract void HandlePartialResult(PartialResult pres); + + public abstract void requestnewjobs(int amount); } \ No newline at end of file diff --git a/Server/BesenBoincServer/src/Core/Starter.java b/Server/BesenBoincServer/src/Core/Starter.java index a2db57f..4e5dcea 100755 --- a/Server/BesenBoincServer/src/Core/Starter.java +++ b/Server/BesenBoincServer/src/Core/Starter.java @@ -54,7 +54,7 @@ public class Starter { run = false; } else if(in.equalsIgnoreCase("stats")) { JobManager jm = server.getProgram().jobmanager; - System.out.println("\nStats:\nTasks done : " + jm.jobs_done() + "\nTasks compiled: " + jm.jobs_compiled() + "/" + jm.jobs_compiledtarget() + "\nCurrently Compiling: " + jm.isCompiling() + "\nTasks enqued : " + jm.jobs_enqued() + "\n--------------------\ntotal : " + jm.jobs_total()+ "\nConnections: " + server.getConnectionCount()); + System.out.println("\nStats:\nTasks done : " + jm.jobs_done() + "\nTasks send : " + jm.jobs_send() + "\nTasks compiled: " + jm.jobs_compiled() + "/" + jm.jobs_compiledtarget() + "\nCurrently Compiling: " + jm.isCompiling() + "\nTasks enqued : " + jm.jobs_enqued() + "\n--------------------\ntotal : " + jm.jobs_total()+ "\nConnections: " + server.getConnectionCount()); } else { System.out.println("unknown Command."); } diff --git a/Server/BesenBoincServer/src/Job/Job.java b/Server/BesenBoincServer/src/Job/Job.java index 01233f3..583c901 100755 --- a/Server/BesenBoincServer/src/Job/Job.java +++ b/Server/BesenBoincServer/src/Job/Job.java @@ -22,7 +22,7 @@ public class Job implements Serializable{ public void setId(int id) { this.id = id; -// code.replace("[[Jobid]]",""+ id); +// code.replace(Pattern.quote("§JOBID§"),""+ id); } public int getId() { diff --git a/Server/BesenBoincServer/src/Job/JobManager.java b/Server/BesenBoincServer/src/Job/JobManager.java index f03f1fd..8f34a77 100755 --- a/Server/BesenBoincServer/src/Job/JobManager.java +++ b/Server/BesenBoincServer/src/Job/JobManager.java @@ -10,15 +10,23 @@ import java.util.List; import java.util.Scanner; import Comunication.Server; +import Core.Program; import Utils.StringUtils; public class JobManager implements Iterator{ private List enqued = new ArrayList();//enqued jobs private List todo = new ArrayList();//compiled jobs + private List send = new ArrayList();//assigned jobs private List done = new ArrayList();//done jobs - int jobcount = 0; + private int jobcount = 0; + + private Program prog; + + public JobManager(Program prog) { + this.prog = prog; + } private boolean isCompiling = false; @@ -35,7 +43,7 @@ public class JobManager implements Iterator{ public void run() { isCompiling = true;//doppelt hält besser // System.out.println("Compilingque started!"); - while(enqued.size() > 0 & todo.size() < 15) { + while(enqued.size() > 0 & todo.size() < 15 & isCompiling) { Job j = enqued.get(0); //compile script try { @@ -63,28 +71,6 @@ public class JobManager implements Iterator{ scan.close(); process.waitFor(); - /*BufferedReader br = new BufferedReader(new FileReader(classfile));//save the file to the String - String line = null; - StringBuilder strb = new StringBuilder(); - String linesep = System.getProperty("line.seperator"); - String out = ""; - - while((line= br.readLine()) != null) { - out += (line + linesep); - } - - j.code = out;*/ - /* - Scanner scanner = new Scanner(classfile); - j.code = ""; - String out = ""; - while(scanner.hasNext()) { - out = out + scanner.next(); - } - scanner.close(); - j.code = out; - System.out.println("File Readed size: " + j.code.length() + " " + out.length()); - */ RandomAccessFile f = new RandomAccessFile(classfile, "r"); j.classfile = new byte[(int)f.length()]; @@ -122,10 +108,11 @@ public class JobManager implements Iterator{ @Override public Job next() { - done.add(todo.get(0)); + send.add(todo.get(0)); todo.remove(0); update(); - return done.get(done.size()-1); + System.out.println("" + ((int) (((float) done.size()) / ((float)jobs_total()))*100) + "% Done"); + return send.get(send.size()-1); } @Override @@ -136,6 +123,9 @@ public class JobManager implements Iterator{ public void update() {//called from Server on new Client Connection if(enqued.size() > 0 & !isCompiling & todo.size() < jobs_compiledtarget()) {//7 für jede connection vorrätig startCompile(); + } else if(enqued.size() < jobs_compiledtarget()) { + System.out.println("All jobs done."); + prog.requestnewjobs(jobs_compiledtarget() * 15);//mal nen par generieren } } @@ -143,6 +133,10 @@ public class JobManager implements Iterator{ return done.size(); } + public int jobs_send() { + return send.size(); + } + public int jobs_compiled() { return todo.size(); } @@ -165,8 +159,46 @@ public class JobManager implements Iterator{ } } + /** + * Drop all jobs + */ + public void clear() { + //posible bug: when the Compiler is running, an then the que is cleared, its posible that the compiler adds a job. + //work around: add a wait, or save the Thread object and wait for it + isCompiling = false; + enqued.clear(); + done.clear(); + send.clear(); + todo.clear(); + jobcount = 0; + } public boolean isCompiling() { return isCompiling; } + + + /** + * Mark a job as done + * @param jobId + */ + public void setdone(int jobId) { + //find yob + Job j = null; + int pos = -1; + for(int i = 0; i < send.size(); i++) { + if(send.get(i).getId() == jobId) { + j = send.get(i); + pos = i; + break; + } + } + + if(j != null) { + send.remove(pos); + done.add(j); + } else { + System.out.println("Job id " + jobId + " not found"); + } + } } \ No newline at end of file diff --git a/Server/BesenBoincServer/src/Job/Result.java b/Server/BesenBoincServer/src/Job/Result.java index 19a69fd..6af98d6 100755 --- a/Server/BesenBoincServer/src/Job/Result.java +++ b/Server/BesenBoincServer/src/Job/Result.java @@ -14,6 +14,10 @@ public class Result implements Serializable{ private List list = new ArrayList(); private int jobid; + public Result(int job) { + jobid = job; + } + public void OutputConsole(String out) { list.add(new PartialResult(ResultType.Console, out)); } diff --git a/Server/BesenBoincServer/src/Job/Worker.java b/Server/BesenBoincServer/src/Job/Worker.java index 5d1a0e9..920b0f5 100755 --- a/Server/BesenBoincServer/src/Job/Worker.java +++ b/Server/BesenBoincServer/src/Job/Worker.java @@ -43,7 +43,9 @@ public class Worker implements PacketHandler, Runnable{ } while (run) { if(jobs.size()>0) { + System.out.print("Executing Job: " + jobs.get(0).getId()); Result r = justrun(jobs.get(0)); + System.out.println("Done."); if(r != null) { client.send(new Data(r)); jobs.remove(0); @@ -52,6 +54,7 @@ public class Worker implements PacketHandler, Runnable{ System.err.println("Result ist null!"); } } else {//derzeit kein job in petto + System.out.println("Idle"); try { Thread.sleep(200); requestnewjob(); @@ -61,20 +64,12 @@ public class Worker implements PacketHandler, Runnable{ } private Result justrun(Job j) { -// System.out.println("recived code:" + srccode); Result r = null; try { File classfile = new File(j.classname+".class");//remove class file if(classfile.exists()) classfile.delete(); - - System.out.println("File: " + classfile.getAbsolutePath()); - /* System.out.println("Writing file size:" + j.code.length()); - FileWriter fw = new FileWriter(classfile);//file writing - fw.write(j.code); - fw.close(); - */ FileOutputStream fos = new FileOutputStream(classfile); fos.write(j.classfile); fos.close(); diff --git a/test-factorial/BBTestprogram/src/Test.java b/test-factorial/BBTestprogram/src/Test.java index 7c3e1b7..cb4da21 100755 --- a/test-factorial/BBTestprogram/src/Test.java +++ b/test-factorial/BBTestprogram/src/Test.java @@ -14,4 +14,7 @@ public class Test extends Program { @Override public void HandlePartialResult(PartialResult pres) {}//unused + + @Override + public void requestnewjobs(int amount) {} } \ No newline at end of file diff --git a/test-primefinder/BBPrimeFinder/mrbesen/A.java.txt b/test-primefinder/BBPrimeFinder/src/mrbesen/A.java.txt similarity index 100% rename from test-primefinder/BBPrimeFinder/mrbesen/A.java.txt rename to test-primefinder/BBPrimeFinder/src/mrbesen/A.java.txt diff --git a/test-primefinder/BBPrimeFinder/mrbesen/PrimeFinder.java b/test-primefinder/BBPrimeFinder/src/mrbesen/PrimeFinder.java similarity index 97% rename from test-primefinder/BBPrimeFinder/mrbesen/PrimeFinder.java rename to test-primefinder/BBPrimeFinder/src/mrbesen/PrimeFinder.java index 43f9ac6..0918ab6 100755 --- a/test-primefinder/BBPrimeFinder/mrbesen/PrimeFinder.java +++ b/test-primefinder/BBPrimeFinder/src/mrbesen/PrimeFinder.java @@ -97,4 +97,7 @@ public class PrimeFinder extends Program { } } -} + + @Override + public void requestnewjobs(int amount) {} +} \ No newline at end of file