mirror of
https://github.com/MaintainTeam/Hypatia.git
synced 2025-03-01 05:48:23 +03:00
Fixes
This commit is contained in:
parent
e889bbce4a
commit
9d040c8b5b
4 changed files with 56 additions and 47 deletions
|
@ -6,7 +6,7 @@ android {
|
|||
applicationId "us.spotco.malwarescanner"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 26
|
||||
versionCode 18
|
||||
versionCode 19
|
||||
versionName "1.9"
|
||||
}
|
||||
buildTypes {
|
||||
|
|
|
@ -40,13 +40,14 @@ class Database {
|
|||
return signaturesMD5.size() + signaturesSHA1.size() + signaturesSHA256.size();
|
||||
}
|
||||
|
||||
public static void updateDatabase(ArrayList<SignatureDatabase> signatureDatabases) {
|
||||
public static void updateDatabase(Context context, ArrayList<SignatureDatabase> signatureDatabases) {
|
||||
initDatabase(context);
|
||||
for (SignatureDatabase signatureDatabase : signatureDatabases) {
|
||||
new Downloader().execute(signatureDatabase.getUrl(), databasePath + "/" + signatureDatabase.getName());
|
||||
}
|
||||
}
|
||||
|
||||
public static void initDatabase(Context context) {
|
||||
private static void initDatabase(Context context) {
|
||||
databasePath = new File(context.getFilesDir() + "/signatures/");
|
||||
databasePath.mkdir();
|
||||
|
||||
|
|
|
@ -53,7 +53,6 @@ public class MainActivity extends AppCompatActivity {
|
|||
logView.append("Powered by ClamAV signatures\n");
|
||||
logView.append("\nDisclaimer: This is an extremely basic signature scanner\n\n");
|
||||
|
||||
final Database database = new Database(logView);
|
||||
malwareScanner = new MalwareScanner(this, this, true);
|
||||
|
||||
prefs = getSharedPreferences(BuildConfig.APPLICATION_ID, Context.MODE_PRIVATE);
|
||||
|
@ -73,26 +72,6 @@ public class MainActivity extends AppCompatActivity {
|
|||
requestPermissions();
|
||||
}
|
||||
|
||||
private void startScanner() {
|
||||
malwareScanner = new MalwareScanner(this, this, true);
|
||||
Set<File> filesToScan = new HashSet<>();
|
||||
if (scanSystem) {
|
||||
filesToScan.addAll(Utils.getFilesRecursive(Environment.getRootDirectory()));
|
||||
}
|
||||
if (scanApps) {
|
||||
for (ApplicationInfo packageInfo : getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA)) {
|
||||
filesToScan.add(new File(packageInfo.sourceDir));
|
||||
}
|
||||
}
|
||||
if (scanInternal) {
|
||||
filesToScan.addAll(Utils.getFilesRecursive(Environment.getExternalStorageDirectory()));
|
||||
}
|
||||
if (scanExternal) {
|
||||
filesToScan.addAll(Utils.getFilesRecursive(new File("/storage")));
|
||||
}
|
||||
malwareScanner.execute(filesToScan);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.menu_main, menu);
|
||||
|
@ -110,10 +89,7 @@ public class MainActivity extends AppCompatActivity {
|
|||
public final boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.mnuUpdateDatabase:
|
||||
Database.updateDatabase(Database.signatureDatabases);
|
||||
if (Database.isDatabaseLoaded()) {
|
||||
Database.loadDatabase(getApplicationContext(), false, Database.signatureDatabases);
|
||||
}
|
||||
updateDatabase();
|
||||
break;
|
||||
case R.id.toggleRealtime:
|
||||
Intent realtimeScanner = new Intent(getApplicationContext(), MalwareScannerService.class);
|
||||
|
@ -146,4 +122,32 @@ public class MainActivity extends AppCompatActivity {
|
|||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void startScanner() {
|
||||
malwareScanner = new MalwareScanner(this, this, true);
|
||||
Set<File> filesToScan = new HashSet<>();
|
||||
if (scanSystem) {
|
||||
filesToScan.addAll(Utils.getFilesRecursive(Environment.getRootDirectory()));
|
||||
}
|
||||
if (scanApps) {
|
||||
for (ApplicationInfo packageInfo : getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA)) {
|
||||
filesToScan.add(new File(packageInfo.sourceDir));
|
||||
}
|
||||
}
|
||||
if (scanInternal) {
|
||||
filesToScan.addAll(Utils.getFilesRecursive(Environment.getExternalStorageDirectory()));
|
||||
}
|
||||
if (scanExternal) {
|
||||
filesToScan.addAll(Utils.getFilesRecursive(new File("/storage")));
|
||||
}
|
||||
malwareScanner.execute(filesToScan);
|
||||
}
|
||||
|
||||
private void updateDatabase() {
|
||||
new Database((TextView) findViewById(R.id.txtLogOutput));
|
||||
Database.updateDatabase(this, Database.signatureDatabases);
|
||||
if (Database.isDatabaseLoaded()) {
|
||||
Database.loadDatabase(this, false, Database.signatureDatabases);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -75,27 +75,31 @@ class MalwareScanner extends AsyncTask<Set<File>, Object, String> {
|
|||
publishProgress(filesToScan[0].size() + " files pending scan\n", true);
|
||||
|
||||
Database.loadDatabase(context, true, Database.signatureDatabases);
|
||||
publishProgress("Loaded database with " + Database.getSignatureCount() + " signatures\n", true);
|
||||
if(Database.getSignatureCount() >= 0) {
|
||||
publishProgress("Loaded database with " + Database.getSignatureCount() + " signatures\n", true);
|
||||
|
||||
//Get file hashes
|
||||
publishProgress("Hashing files...", true);
|
||||
for (File file : filesToScan[0]) {
|
||||
getFileHashes(file);
|
||||
//Get file hashes
|
||||
publishProgress("Hashing files...", true);
|
||||
for (File file : filesToScan[0]) {
|
||||
getFileHashes(file);
|
||||
}
|
||||
publishProgress("Calculated MD5/SHA-1/SHA-256 hashes for all files\n", true);
|
||||
|
||||
//Check the hashes
|
||||
checkSignature("MD5", fileHashesMD5, Database.signaturesMD5);
|
||||
checkSignature("SHA-1", fileHashesSHA1, Database.signaturesSHA1);
|
||||
checkSignature("SHA-256", fileHashesSHA256, Database.signaturesSHA256);
|
||||
|
||||
//Post
|
||||
fileHashesMD5.clear();
|
||||
fileHashesSHA1.clear();
|
||||
fileHashesSHA256.clear();
|
||||
System.gc();
|
||||
Log.d("Thiea", "Scan completed in " + (SystemClock.elapsedRealtime() - scanTime) + " ms!");
|
||||
publishProgress("Scan completed in " + ((SystemClock.elapsedRealtime() - scanTime) / 1000) + " seconds!\n\n\n\n", true);
|
||||
} else {
|
||||
publishProgress("No database available, not scanning...", true);
|
||||
}
|
||||
publishProgress("Calculated MD5/SHA-1/SHA-256 hashes for all files\n", true);
|
||||
|
||||
//Check the hashes
|
||||
checkSignature("MD5", fileHashesMD5, Database.signaturesMD5);
|
||||
checkSignature("SHA-1", fileHashesSHA1, Database.signaturesSHA1);
|
||||
checkSignature("SHA-256", fileHashesSHA256, Database.signaturesSHA256);
|
||||
|
||||
//Post
|
||||
fileHashesMD5.clear();
|
||||
fileHashesSHA1.clear();
|
||||
fileHashesSHA256.clear();
|
||||
System.gc();
|
||||
Log.d("Thiea", "Scan completed in " + (SystemClock.elapsedRealtime() - scanTime) + " ms!");
|
||||
publishProgress("Scan completed in " + ((SystemClock.elapsedRealtime() - scanTime) / 1000) + " seconds!\n\n\n\n", true);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue