FinalCrypt - The No¹ One-Time Pad Encryption
Revision | e60eb2f3e13c864e156c284aca0716413d4c5fbc (tree) |
---|---|
Time | 2019-11-13 12:39:33 |
Author | ron <ronuitzaandam@gmai...> |
Commiter | ron |
Date: 2019-11-13 Version: 5.6.3
Brute Force password dictionary testing 10 x faster
Previously: 950 pass/sec. Currently: 9950 pass/sec
@@ -1,4 +1,9 @@ | ||
1 | -Date: 2019-10-04 Version: 5.6.2 | |
1 | +Date: 2019-11-13 Version: 5.6.3 | |
2 | + | |
3 | +Brute Force password dictionary testing 10 x faster | |
4 | +Previously: 950 pass/sec. Currently: 9950 pass/sec | |
5 | + | |
6 | +Date: 2019-11-04 Version: 5.6.2 | |
2 | 7 | |
3 | 8 | Cleaned up action-buttons to improve usage clarity |
4 | 9 |
@@ -62,4 +62,4 @@ Parameters: | ||
62 | 62 | <[-t "file/dir"]> Target items (files or directories) you want to encrypt (recursive). |
63 | 63 | <[-b "batchfile"]> Batchfile with targetfiles you want to encrypt (only files). |
64 | 64 | |
65 | -FinalCrypt 5.6.2 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019 | |
\ No newline at end of file | ||
65 | +FinalCrypt 5.6.3 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019 | |
\ No newline at end of file |
@@ -76,4 +76,4 @@ Key Device Examples (Linux): | ||
76 | 76 | java -cp finalcrypt.jar rdj/CLUI --encrypt -k /dev/sdc1 -t myfile |
77 | 77 | java -cp finalcrypt.jar rdj/CLUI --decrypt -k /dev/sdc1 -t myfile |
78 | 78 | |
79 | -FinalCrypt 5.6.2 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019 | |
\ No newline at end of file | ||
79 | +FinalCrypt 5.6.3 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019 | |
\ No newline at end of file |
@@ -8,7 +8,7 @@ application.homepage=http://www.finalcrypt.org/ | ||
8 | 8 | application.splash= |
9 | 9 | application.title=FinalCrypt |
10 | 10 | application.vendor=FinalCrypt |
11 | -application.implementation.version=5.6.2 | |
11 | +application.implementation.version=5.6.3 | |
12 | 12 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs=false |
13 | 13 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width=4 |
14 | 14 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab=4 |
@@ -122,7 +122,10 @@ public class CLUI implements UI | ||
122 | 122 | protected boolean test = false; |
123 | 123 | protected String testAnswer = ""; |
124 | 124 | protected FCPath keyFCPath; |
125 | - | |
125 | + protected FCPath bruteForceFCPathTargetPrint; | |
126 | + private int bfcounter; | |
127 | + private int bflines; | |
128 | + private Stats bruteForceDataStats; | |
126 | 129 | |
127 | 130 | public CLUI(String[] args) |
128 | 131 | { |
@@ -451,14 +454,21 @@ public class CLUI implements UI | ||
451 | 454 | FCPath dictFileFCPath = Validate.getFCPath(ui, "NA", Paths.get(dictionaryFilePathString), false, Paths.get(dictionaryFilePathString), false, true); |
452 | 455 | if ( ( dictFileFCPath.exist ) && (dictFileFCPath.isValidFile) && (dictFileFCPath.isReadable) && ( dictFileFCPath.size > 0) ) |
453 | 456 | { |
454 | - int lines = 0; | |
455 | - try { lines = Files.readAllLines(dictFileFCPath.path).size(); } catch (IOException ex) { log("Files.readAllLines(" + dictFileFCPath.path.toAbsolutePath().toString() + ").size();" + ex.getMessage(), false, true, true, true, false); } | |
456 | - | |
457 | - long counter = 1; | |
458 | - Stats allDataStats = new Stats(); allDataStats.reset(); | |
459 | - allDataStats.setAllDataStartNanoTime(); allDataStats.clock(); | |
460 | - | |
461 | - log("\r\nStart Brute Force testing " + lines + " passwords...\r\n\r\n", false, true, true, false, false); | |
457 | + bflines = 0; | |
458 | + try { bflines = Files.readAllLines(dictFileFCPath.path).size(); } catch (IOException ex) { log("Files.readAllLines(" + dictFileFCPath.path.toAbsolutePath().toString() + ").size();" + ex.getMessage(), false, true, true, true, false); } | |
459 | + | |
460 | + bfcounter = 1; | |
461 | + bruteForceDataStats = new Stats(); bruteForceDataStats.reset(); | |
462 | + bruteForceDataStats.setAllDataStartNanoTime(); bruteForceDataStats.clock(); | |
463 | + | |
464 | + TimerTask printTask = new TimerTask() { @Override public void run() | |
465 | + { | |
466 | + if ( bruteForceFCPathTargetPrint != null ) { log("Brute Force testing target: \"" + bruteForceFCPathTargetPrint.path.toAbsolutePath().toString() + "\" password count: " + bfcounter + " " + (bfcounter / (bflines / 100 )) + "% \r\n", false, true, false, false, false); } | |
467 | + }}; | |
468 | + Timer printTimer = new java.util.Timer(); printTimer.schedule(printTask, 1000L, 1000L); | |
469 | + | |
470 | + log("\r\nStart Brute Force testing " + bflines + " passwords...\r\n\r\n", false, true, true, false, false); | |
471 | + log("Brute Force testing target: \"" + targetFCPathList.get(0).path.toAbsolutePath().toString() + "\" password count: " + 1 + " " + (bfcounter / (bflines / 100 )) + "%\r\n", false, true, false, false, false); | |
462 | 472 | try |
463 | 473 | { |
464 | 474 | boolean pwdFound = false; |
@@ -477,23 +487,27 @@ public class CLUI implements UI | ||
477 | 487 | Validate.buildSelection(this, targetPathList, keyFCPath, targetFCPathList, symlink, pattern, negatePattern, finalCrypt.disabledMAC, false); |
478 | 488 | pathlistloop: for (FCPath fcPathItem : targetFCPathList) |
479 | 489 | { |
480 | - log(counter + " testing target: \"" + fcPathItem.path.toAbsolutePath().toString() + "\" password: \"" + pwd + "\" result: " + fcPathItem.isDecryptable + "\r\n", false, true, true, false, false); | |
490 | + bruteForceFCPathTargetPrint = fcPathItem; | |
491 | +// log(bfcounter + " testing target: \"" + fcPathItem.path.toAbsolutePath().toString() + "\" password: \"" + pwd + "\" result: " + fcPathItem.isDecryptable + "\r\n", false, true, false, false, false); | |
492 | + bfcounter++; | |
481 | 493 | if (fcPathItem.isDecryptable) { pwdFound = true; break pwloop; } |
482 | - counter++; | |
483 | 494 | } |
484 | 495 | } |
496 | + | |
497 | + if ( bruteForceFCPathTargetPrint != null ) { log("Brute Force testing target: \"" + bruteForceFCPathTargetPrint.path.toAbsolutePath().toString() + "\" password count: " + (bfcounter - 1) + " " + (bfcounter / (bflines / 100 )) + "%\r\n", false, true, false, false, false); } | |
485 | 498 | if (pwdFound) |
486 | 499 | { |
487 | - log("\r\nPassword found: \"" + pwd + "\"\r\n", false, true, true, false, false); | |
500 | + log("\r\nPassword found: \"" + pwd + "\"\r\n", false, true, false, false, false); | |
488 | 501 | } |
489 | 502 | else |
490 | 503 | { |
491 | - log("\r\nPassword not found\r\n", false, true, true, false, false); | |
504 | + log("\r\nPassword not found\r\n", false, true, false, false, false); | |
492 | 505 | } |
493 | 506 | } |
494 | 507 | catch (IOException ex) { log("Files.readAllLines(" + dictFileFCPath.path + ");" + ex.getMessage(), false, true, true, true, false); } |
495 | - allDataStats.setAllDataEndNanoTime(); allDataStats.clock(); | |
496 | - log("\r\nFinished Brute force testing " + (counter - 1) + " / " + lines + " passwords in " + allDataStats.getElapsedTime(allDataStats.getAllDataEndEpoch() - allDataStats.getAllDataStartEpoch()) + " " + allDataStats.getBruteForceThroughPut(counter, allDataStats.getAllDataEndEpoch() - allDataStats.getAllDataStartEpoch()) + "\r\n\r\n", false, true, true, false, false); | |
508 | + bruteForceDataStats.setAllDataEndNanoTime(); bruteForceDataStats.clock(); | |
509 | + printTimer.cancel(); printTimer.purge(); | |
510 | + log("\r\nFinished Brute force testing " + (bfcounter - 1) + " / " + bflines + " passwords in " + bruteForceDataStats.getElapsedTime(bruteForceDataStats.getAllDataEndEpoch() - bruteForceDataStats.getAllDataStartEpoch()) + " " + bruteForceDataStats.getBruteForceThroughPut(bfcounter, bruteForceDataStats.getAllDataEndEpoch() - bruteForceDataStats.getAllDataStartEpoch()) + "\r\n\r\n", false, true, true, false, false); | |
497 | 511 | } |
498 | 512 | else |
499 | 513 | { |
@@ -177,8 +177,9 @@ public class Stats | ||
177 | 177 | { |
178 | 178 | String returnString = new String(); |
179 | 179 | double throughput = ( ((double)(items) / (((double)nanosecs / 1000000000.0))) ); // *1000 from mSec to Sec |
180 | - String throughputString = String.format("%.1f", throughput); | |
181 | - returnString = "(average: " + getHumanSize(throughput,1,"Passwords") + "/s)\r\n"; | |
180 | + String throughputString = String.format("%.0f", throughput); | |
181 | +// returnString = "(average: " + getHumanSize(throughput,1,"Passwords") + "/s)\r\n"; | |
182 | + returnString = "(average: " + throughputString + " passwords/sec)\r\n"; | |
182 | 183 | |
183 | 184 | return returnString; |
184 | 185 | } |
@@ -1 +1 @@ | ||
1 | -5.6.2 | |
\ No newline at end of file | ||
1 | +5.6.3 | |
\ No newline at end of file |
@@ -1,4 +1,4 @@ | ||
1 | -[Version] = {5.6.2} | |
1 | +[Version] = {5.6.3} | |
2 | 2 | [] = {} ================================================================ |
3 | 3 | [Release Notes] = {You are using a very old version of FinalCrypt} |
4 | 4 | [Release Message] = {Please visit the website and download the latest} |
@@ -19,9 +19,10 @@ | ||
19 | 19 | [Upgrade Notes] = {Brute Force only works on the Command Line Interface} |
20 | 20 | [Upgrade Notes] = {} |
21 | 21 | [] = {} ---------------------------------------------------------------- |
22 | -[Update Notes] = {Update 2} | |
22 | +[Update Notes] = {Update 3} | |
23 | 23 | [Update Notes] = {} |
24 | -[Update Notes] = {Cleaned up action-buttons to improve usage clarity} | |
24 | +[Update Notes] = {Brute Force password dictionary testing 10 x faster} | |
25 | +[Update Notes] = {Previously: 950 pass/sec. Currently: 9950 pass/sec} | |
25 | 26 | [] = {} -------------------------------------------------------------------------------------------------------- |
26 | 27 | [Alert Subject_] = {} |
27 | 28 | [Alert Notes_] = {} |