mirror of
https://github.com/MaintainTeam/Hypatia.git
synced 2025-03-01 13:58:21 +03:00
Formatting and cleanup
This commit is contained in:
parent
1eb5055b50
commit
6933ca294b
3 changed files with 24 additions and 32 deletions
|
@ -6,32 +6,28 @@ import android.widget.TextView;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Scanner;
|
|
||||||
|
|
||||||
public class Database {
|
public class Database {
|
||||||
|
|
||||||
private static Context context = null;
|
|
||||||
private static TextView log = null;
|
private static TextView log = null;
|
||||||
private static File databasePath = null;
|
private static File databasePath = null;
|
||||||
|
|
||||||
public static ArrayList<SignatureDatabase> signatureDatabases = new ArrayList<SignatureDatabase>();
|
public static ArrayList<SignatureDatabase> signatureDatabases = new ArrayList<>();
|
||||||
|
|
||||||
public static HashMap<String, String> signaturesMD5 = new HashMap<String, String>();
|
public static HashMap<String, String> signaturesMD5 = new HashMap<>();
|
||||||
public static HashMap<String, String> signaturesSHA1 = new HashMap<String, String>();
|
public static HashMap<String, String> signaturesSHA1 = new HashMap<>();
|
||||||
public static HashMap<String, String> signaturesSHA256 = new HashMap<String, String>();
|
public static HashMap<String, String> signaturesSHA256 = new HashMap<>();
|
||||||
|
|
||||||
public Database(Context context, TextView log) {
|
public Database(Context context, TextView log) {
|
||||||
this.context = context;
|
Database.log = log;
|
||||||
this.log = log;
|
databasePath = new File(context.getFilesDir() + "/signatures/");
|
||||||
this.databasePath = new File(context.getFilesDir() + "/signatures/");
|
databasePath.mkdir();
|
||||||
this.databasePath.mkdir();
|
|
||||||
|
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/clamav-main.hdb", "clamav-main.hdb"));
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/clamav-main.hdb", "clamav-main.hdb"));
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/clamav-main.hsb", "clamav-main.hsb"));
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/clamav-main.hsb", "clamav-main.hsb"));
|
||||||
|
@ -62,7 +58,7 @@ public class Database {
|
||||||
try {
|
try {
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(databaseLocation));
|
BufferedReader reader = new BufferedReader(new FileReader(databaseLocation));
|
||||||
String line;
|
String line;
|
||||||
while((line = reader.readLine()) != null) {
|
while ((line = reader.readLine()) != null) {
|
||||||
String[] lineS = line.split(":");
|
String[] lineS = line.split(":");
|
||||||
signaturesMD5.put(lineS[0], lineS[2]);
|
signaturesMD5.put(lineS[0], lineS[2]);
|
||||||
}
|
}
|
||||||
|
@ -74,7 +70,7 @@ public class Database {
|
||||||
try {
|
try {
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(databaseLocation));
|
BufferedReader reader = new BufferedReader(new FileReader(databaseLocation));
|
||||||
String line;
|
String line;
|
||||||
while((line = reader.readLine()) != null) {
|
while ((line = reader.readLine()) != null) {
|
||||||
String[] lineS = line.split(":");
|
String[] lineS = line.split(":");
|
||||||
if (lineS[0].length() == 32) {
|
if (lineS[0].length() == 32) {
|
||||||
signaturesSHA1.put(lineS[0], lineS[2]);
|
signaturesSHA1.put(lineS[0], lineS[2]);
|
||||||
|
|
|
@ -42,7 +42,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
if (!scanner.isScannerRunning()) {
|
if (!scanner.isScannerRunning()) {
|
||||||
scanner.startScanner(scanSystem, scanApps, scanInternal, scanExternal);
|
MalwareScanner.startScanner(scanSystem, scanApps, scanInternal, scanExternal);
|
||||||
} else {
|
} else {
|
||||||
scanner.stopScanner();
|
scanner.stopScanner();
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,17 +23,17 @@ public class MalwareScanner {
|
||||||
private static TextView log = null;
|
private static TextView log = null;
|
||||||
private static AsyncTask<Boolean, String, String> malwareScannerTask = null;
|
private static AsyncTask<Boolean, String, String> malwareScannerTask = null;
|
||||||
|
|
||||||
private static HashMap<String, File> fileHashesMD5 = new HashMap<String, File>();
|
private static HashMap<String, File> fileHashesMD5 = new HashMap<>();
|
||||||
private static HashMap<String, File> fileHashesSHA1 = new HashMap<String, File>();
|
private static HashMap<String, File> fileHashesSHA1 = new HashMap<>();
|
||||||
private static HashMap<String, File> fileHashesSHA256 = new HashMap<String, File>();
|
private static HashMap<String, File> fileHashesSHA256 = new HashMap<>();
|
||||||
|
|
||||||
public MalwareScanner(Context context, TextView log) {
|
public MalwareScanner(Context context, TextView log) {
|
||||||
this.context = context;
|
MalwareScanner.context = context;
|
||||||
this.log = log;
|
MalwareScanner.log = log;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void startScanner(boolean scanSystem, boolean scanApps, boolean scanInternal, boolean scanExternal) {
|
public static void startScanner(boolean scanSystem, boolean scanApps, boolean scanInternal, boolean scanExternal) {
|
||||||
if(Database.doesDatabaseExist()) {
|
if (Database.doesDatabaseExist()) {
|
||||||
malwareScannerTask = new MalwareScannerTask().execute(scanSystem, scanApps, scanInternal, scanExternal);
|
malwareScannerTask = new MalwareScannerTask().execute(scanSystem, scanApps, scanInternal, scanExternal);
|
||||||
} else {
|
} else {
|
||||||
log.append("No database found... download one first!\n");
|
log.append("No database found... download one first!\n");
|
||||||
|
@ -45,10 +45,7 @@ public class MalwareScanner {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isScannerRunning() {
|
public boolean isScannerRunning() {
|
||||||
if (malwareScannerTask == null) {
|
return malwareScannerTask != null && (malwareScannerTask.getStatus().equals(AsyncTask.Status.PENDING) || malwareScannerTask.getStatus().equals(AsyncTask.Status.RUNNING));
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return malwareScannerTask.getStatus().equals(AsyncTask.Status.PENDING) || malwareScannerTask.getStatus().equals(AsyncTask.Status.RUNNING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class MalwareScannerTask extends AsyncTask<Boolean, String, String> {
|
public static class MalwareScannerTask extends AsyncTask<Boolean, String, String> {
|
||||||
|
@ -105,7 +102,7 @@ public class MalwareScanner {
|
||||||
if (Database.signaturesMD5.size() > 0) {
|
if (Database.signaturesMD5.size() > 0) {
|
||||||
|
|
||||||
for (Map.Entry<String, File> file : fileHashesMD5.entrySet()) {
|
for (Map.Entry<String, File> file : fileHashesMD5.entrySet()) {
|
||||||
if(Database.signaturesMD5.containsKey(file.getKey())) {
|
if (Database.signaturesMD5.containsKey(file.getKey())) {
|
||||||
String result = Database.signaturesMD5.get(file.getKey());
|
String result = Database.signaturesMD5.get(file.getKey());
|
||||||
publishProgress(file.getValue() + " detected as " + result);
|
publishProgress(file.getValue() + " detected as " + result);
|
||||||
}
|
}
|
||||||
|
@ -117,7 +114,7 @@ public class MalwareScanner {
|
||||||
|
|
||||||
if (Database.signaturesSHA1.size() > 0) {
|
if (Database.signaturesSHA1.size() > 0) {
|
||||||
for (Map.Entry<String, File> file : fileHashesSHA1.entrySet()) {
|
for (Map.Entry<String, File> file : fileHashesSHA1.entrySet()) {
|
||||||
if(Database.signaturesSHA1.containsKey(file.getKey())) {
|
if (Database.signaturesSHA1.containsKey(file.getKey())) {
|
||||||
String result = Database.signaturesSHA1.get(file.getKey());
|
String result = Database.signaturesSHA1.get(file.getKey());
|
||||||
publishProgress(file.getValue() + " detected as " + result);
|
publishProgress(file.getValue() + " detected as " + result);
|
||||||
}
|
}
|
||||||
|
@ -128,9 +125,8 @@ public class MalwareScanner {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Database.signaturesSHA256.size() > 0) {
|
if (Database.signaturesSHA256.size() > 0) {
|
||||||
publishProgress("Calculated SHA-256 hashes for all files");
|
|
||||||
for (Map.Entry<String, File> file : fileHashesSHA256.entrySet()) {
|
for (Map.Entry<String, File> file : fileHashesSHA256.entrySet()) {
|
||||||
if(Database.signaturesSHA256.containsKey(file.getKey())) {
|
if (Database.signaturesSHA256.containsKey(file.getKey())) {
|
||||||
String result = Database.signaturesSHA256.get(file.getKey());
|
String result = Database.signaturesSHA256.get(file.getKey());
|
||||||
publishProgress(file.getValue() + " detected as " + result);
|
publishProgress(file.getValue() + " detected as " + result);
|
||||||
}
|
}
|
||||||
|
@ -190,7 +186,7 @@ public class MalwareScanner {
|
||||||
|
|
||||||
do {
|
do {
|
||||||
numRead = fis.read(buffer);
|
numRead = fis.read(buffer);
|
||||||
if(numRead > 0) {
|
if (numRead > 0) {
|
||||||
digestMD5.update(buffer, 0, numRead);
|
digestMD5.update(buffer, 0, numRead);
|
||||||
digestSHA1.update(buffer, 0, numRead);
|
digestSHA1.update(buffer, 0, numRead);
|
||||||
digestSHA256.update(buffer, 0, numRead);
|
digestSHA256.update(buffer, 0, numRead);
|
||||||
|
@ -201,7 +197,7 @@ public class MalwareScanner {
|
||||||
|
|
||||||
fileHashesMD5.put(String.format("%032x", new BigInteger(1, digestMD5.digest())), file);
|
fileHashesMD5.put(String.format("%032x", new BigInteger(1, digestMD5.digest())), file);
|
||||||
fileHashesSHA1.put(String.format("%032x", new BigInteger(1, digestSHA1.digest())), file);
|
fileHashesSHA1.put(String.format("%032x", new BigInteger(1, digestSHA1.digest())), file);
|
||||||
fileHashesSHA256.put(String.format( "%064x", new BigInteger(1, digestSHA256.digest())), file);
|
fileHashesSHA256.put(String.format("%064x", new BigInteger(1, digestSHA256.digest())), file);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue