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