Script updates

Signed-off-by: Tavi <tavi@divested.dev>
This commit is contained in:
Tavi 2024-01-18 14:30:54 -05:00
parent c74c223197
commit f02e35523f
No known key found for this signature in database
GPG key ID: E599F62ECBAEAF2E

View file

@ -28,6 +28,7 @@ import java.io.FileReader;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.util.*; import java.util.*;
import java.util.Arrays; import java.util.Arrays;
import java.util.stream.Stream;
import java.util.zip.GZIPInputStream; import java.util.zip.GZIPInputStream;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -86,8 +87,13 @@ public class Main {
System.out.println("Processing signatures:"); System.out.println("Processing signatures:");
File[] databases = new File(args[0]).listFiles(); File[] databases = new File(args[0]).listFiles();
File extras = new File(args[0] + "../extras/");
if(extras.exists()) {
databases = Stream.concat(Arrays.stream(databases), Arrays.stream(extras.listFiles())).toArray(File[]::new);
}
Arrays.sort(databases); Arrays.sort(databases);
for (File databaseLocation : databases) { for (File databaseLocation : databases) {
if(databaseLocation.isFile()) {
System.out.println("\t" + databaseLocation.getName()); System.out.println("\t" + databaseLocation.getName());
amtPreviousSignaturesMD5 = amtSignaturesAddedMD5; amtPreviousSignaturesMD5 = amtSignaturesAddedMD5;
amtPreviousSignaturesSHA1 = amtSignaturesAddedSHA1; amtPreviousSignaturesSHA1 = amtSignaturesAddedSHA1;
@ -105,7 +111,7 @@ public class Main {
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
if (line.length() > 0 && line.contains(":")) { if (line.length() > 0 && line.contains(":")) {
String[] lineS = line.trim().toLowerCase().split(":"); String[] lineS = line.trim().toLowerCase().split(":");
addChecked(lineS[0].trim()); addChecked(lineS[0].trim(), true);
} }
} }
} else if (databaseLocation.getName().endsWith(".md5") } else if (databaseLocation.getName().endsWith(".md5")
@ -113,15 +119,19 @@ public class Main {
|| databaseLocation.getName().endsWith(".sha256") || databaseLocation.getName().endsWith(".sha256")
|| databaseLocation.getName().endsWith(".hashes")) {//one signature per line || databaseLocation.getName().endsWith(".hashes")) {//one signature per line
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
addChecked(line.trim().toLowerCase()); addChecked(line.trim().toLowerCase(), true);
} }
} else if (databaseLocation.getName().endsWith(".loki")) {//.loki format: hash;comment } else if (databaseLocation.getName().endsWith(".loki")) {//.loki format: hash;comment
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
if (line.length() > 0 && line.contains(";")) { if (line.length() > 0 && line.contains(";")) {
String[] lineS = line.trim().toLowerCase().split(";"); String[] lineS = line.trim().toLowerCase().split(";");
addChecked(lineS[0].trim()); addChecked(lineS[0].trim(), true);
} }
} }
} else if (databaseLocation.getName().endsWith(".txt")) {//best effort
while ((line = reader.readLine()) != null) {
addChecked(line.trim().toLowerCase(), false);
}
} }
reader.close(); reader.close();
System.out.println("\t\tmd5: " + (amtSignaturesAddedMD5 - amtPreviousSignaturesMD5) + ", sha1: " + (amtSignaturesAddedSHA1 - amtPreviousSignaturesSHA1) + ", sha256: " + (amtSignaturesAddedSHA256 - amtPreviousSignaturesSHA256)); System.out.println("\t\tmd5: " + (amtSignaturesAddedMD5 - amtPreviousSignaturesMD5) + ", sha1: " + (amtSignaturesAddedSHA1 - amtPreviousSignaturesSHA1) + ", sha256: " + (amtSignaturesAddedSHA256 - amtPreviousSignaturesSHA256));
@ -129,6 +139,7 @@ public class Main {
e.printStackTrace(); e.printStackTrace();
} }
} }
}
System.out.println("Lines read: valid: " + amtLinesValid + ", invalid: " + amtLinesInvalid); System.out.println("Lines read: valid: " + amtLinesValid + ", invalid: " + amtLinesInvalid);
System.out.println("Read count: md5: " + amtSignaturesReadMD5 + ", sha1: " + amtSignaturesReadSHA1 + ", sha256: " + amtSignaturesReadSHA256); System.out.println("Read count: md5: " + amtSignaturesReadMD5 + ", sha1: " + amtSignaturesReadSHA1 + ", sha256: " + amtSignaturesReadSHA256);
@ -160,7 +171,7 @@ public class Main {
return matcher.matches(); return matcher.matches();
} }
private static void addChecked(String potentialHash) { private static void addChecked(String potentialHash, boolean report) {
if (!potentialHash.startsWith("#") && potentialHash.length() >= 4) { if (!potentialHash.startsWith("#") && potentialHash.length() >= 4) {
if (isHexadecimal(potentialHash)) { if (isHexadecimal(potentialHash)) {
if(arrExclusions.contains(potentialHash)) { if(arrExclusions.contains(potentialHash)) {
@ -187,11 +198,11 @@ public class Main {
amtLinesValid++; amtLinesValid++;
} else { } else {
amtLinesInvalid++; amtLinesInvalid++;
System.out.println("\t\tINVALID LENGTH: " + potentialHash); if(report) System.out.println("\t\tINVALID LENGTH: " + potentialHash);
} }
} else { } else {
amtLinesInvalid++; amtLinesInvalid++;
System.out.println("\t\tNOT HEXADECIMAL: " + potentialHash); if(report) System.out.println("\t\tNOT HEXADECIMAL: " + potentialHash);
} }
} }
} }