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,47 +87,57 @@ 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) {
System.out.println("\t" + databaseLocation.getName()); if(databaseLocation.isFile()) {
amtPreviousSignaturesMD5 = amtSignaturesAddedMD5; System.out.println("\t" + databaseLocation.getName());
amtPreviousSignaturesSHA1 = amtSignaturesAddedSHA1; amtPreviousSignaturesMD5 = amtSignaturesAddedMD5;
amtPreviousSignaturesSHA256 = amtSignaturesAddedSHA256; amtPreviousSignaturesSHA1 = amtSignaturesAddedSHA1;
try { amtPreviousSignaturesSHA256 = amtSignaturesAddedSHA256;
BufferedReader reader; try {
if (databaseLocation.getName().endsWith(".gz")) { BufferedReader reader;
reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(databaseLocation)))); if (databaseLocation.getName().endsWith(".gz")) {
} else { reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(databaseLocation))));
reader = new BufferedReader(new FileReader(databaseLocation)); } else {
} reader = new BufferedReader(new FileReader(databaseLocation));
String line; }
if (databaseLocation.getName().endsWith(".hdb") //.hdb/.hsb format: hash:size:name:version String line;
|| databaseLocation.getName().endsWith(".hsb")) { if (databaseLocation.getName().endsWith(".hdb") //.hdb/.hsb format: hash:size:name:version
while ((line = reader.readLine()) != null) { || databaseLocation.getName().endsWith(".hsb")) {
if (line.length() > 0 && line.contains(":")) { while ((line = reader.readLine()) != null) {
String[] lineS = line.trim().toLowerCase().split(":"); if (line.length() > 0 && line.contains(":")) {
addChecked(lineS[0].trim()); String[] lineS = line.trim().toLowerCase().split(":");
} addChecked(lineS[0].trim(), true);
} }
} else if (databaseLocation.getName().endsWith(".md5") }
|| databaseLocation.getName().endsWith(".sha1") } else if (databaseLocation.getName().endsWith(".md5")
|| databaseLocation.getName().endsWith(".sha256") || databaseLocation.getName().endsWith(".sha1")
|| databaseLocation.getName().endsWith(".hashes")) {//one signature per line || databaseLocation.getName().endsWith(".sha256")
while ((line = reader.readLine()) != null) { || databaseLocation.getName().endsWith(".hashes")) {//one signature per line
addChecked(line.trim().toLowerCase()); while ((line = reader.readLine()) != null) {
} addChecked(line.trim().toLowerCase(), true);
} else if (databaseLocation.getName().endsWith(".loki")) {//.loki format: hash;comment }
while ((line = reader.readLine()) != null) { } else if (databaseLocation.getName().endsWith(".loki")) {//.loki format: hash;comment
if (line.length() > 0 && line.contains(";")) { while ((line = reader.readLine()) != null) {
String[] lineS = line.trim().toLowerCase().split(";"); if (line.length() > 0 && line.contains(";")) {
addChecked(lineS[0].trim()); String[] lineS = line.trim().toLowerCase().split(";");
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();
System.out.println("\t\tmd5: " + (amtSignaturesAddedMD5 - amtPreviousSignaturesMD5) + ", sha1: " + (amtSignaturesAddedSHA1 - amtPreviousSignaturesSHA1) + ", sha256: " + (amtSignaturesAddedSHA256 - amtPreviousSignaturesSHA256));
} catch (Exception e) {
e.printStackTrace();
} }
reader.close();
System.out.println("\t\tmd5: " + (amtSignaturesAddedMD5 - amtPreviousSignaturesMD5) + ", sha1: " + (amtSignaturesAddedSHA1 - amtPreviousSignaturesSHA1) + ", sha256: " + (amtSignaturesAddedSHA256 - amtPreviousSignaturesSHA256));
} catch (Exception e) {
e.printStackTrace();
} }
} }
@ -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);
} }
} }
} }