Show scan speed too

This commit is contained in:
Tad 2021-06-04 15:30:36 -04:00
parent 15b49f0d5b
commit 2d56574a1e
14 changed files with 27 additions and 14 deletions

2
.idea/compiler.xml generated
View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="CompilerConfiguration"> <component name="CompilerConfiguration">
<bytecodeTargetLevel target="1.8" /> <bytecodeTargetLevel target="11" />
</component> </component>
</project> </project>

2
.idea/misc.xml generated
View file

@ -45,7 +45,7 @@
</value> </value>
</option> </option>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="JDK" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View file

@ -3,6 +3,7 @@
<component name="RunConfigurationProducerService"> <component name="RunConfigurationProducerService">
<option name="ignoredProducers"> <option name="ignoredProducers">
<set> <set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" /> <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" /> <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" /> <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />

View file

@ -6,7 +6,7 @@ android {
applicationId "us.spotco.malwarescanner" applicationId "us.spotco.malwarescanner"
minSdkVersion 16 minSdkVersion 16
targetSdkVersion 29 targetSdkVersion 29
versionCode 72 versionCode 73
versionName "2.20" versionName "2.20"
resConfigs "en", "de", "es", "fr", "it", "pt", "ru" resConfigs "en", "de", "es", "fr", "it", "pt", "ru"
} }

View file

@ -47,7 +47,7 @@ class MalwareScanner extends AsyncTask<Set<File>, Object, String> {
private TextView logOutput = null; private TextView logOutput = null;
private boolean userFacing = false; private boolean userFacing = false;
private NotificationManager notificationManager = null; private NotificationManager notificationManager = null;
private long scanTime = 0; private long scanStartTime = 0;
private final HashMap<String, File> fileHashesMD5 = new HashMap<>(); private final HashMap<String, File> fileHashesMD5 = new HashMap<>();
private final HashMap<String, File> fileHashesSHA1 = new HashMap<>(); private final HashMap<String, File> fileHashesSHA1 = new HashMap<>();
private final HashMap<String, File> fileHashesSHA256 = new HashMap<>(); private final HashMap<String, File> fileHashesSHA256 = new HashMap<>();
@ -95,7 +95,7 @@ class MalwareScanner extends AsyncTask<Set<File>, Object, String> {
@Override @Override
protected final void onPreExecute() { protected final void onPreExecute() {
scanTime = SystemClock.elapsedRealtime(); scanStartTime = SystemClock.elapsedRealtime();
logResult(context.getString(R.string.main_starting_scan), true); logResult(context.getString(R.string.main_starting_scan), true);
} }
@ -137,12 +137,15 @@ class MalwareScanner extends AsyncTask<Set<File>, Object, String> {
percentIncrement = 1; percentIncrement = 1;
} }
String spinnerCur = " ~ "; String spinnerCur = " ~ ";
long totalBytesHashed = 0;
long hashStartTime = SystemClock.elapsedRealtime();
for (File file : filesToScan[0]) { for (File file : filesToScan[0]) {
if (this.isCancelled()) { //Allow quicker cancels if (this.isCancelled()) { //Allow quicker cancels
//publishProgress("\t" + context.getString(R.string.main_cancelled_scan), true); //publishProgress("\t" + context.getString(R.string.main_cancelled_scan), true);
running = false; running = false;
return null; return null;
} }
totalBytesHashed += file.length();
getFileHashes(file); getFileHashes(file);
fileScannedCount++; fileScannedCount++;
if ((fileScannedCount % percentIncrement) == 0) { if ((fileScannedCount % percentIncrement) == 0) {
@ -165,9 +168,16 @@ class MalwareScanner extends AsyncTask<Set<File>, Object, String> {
fileHashesMD5.clear(); fileHashesMD5.clear();
fileHashesSHA1.clear(); fileHashesSHA1.clear();
fileHashesSHA256.clear(); fileHashesSHA256.clear();
System.gc();
Utils.FILES_SCANNED += filesToScan[0].size(); Utils.FILES_SCANNED += filesToScan[0].size();
publishProgress(context.getString(R.string.main_scanning_done, ((SystemClock.elapsedRealtime() - scanTime) / 1000) + "") + "\n\n\n\n", true); if(userFacing || Utils.FILES_SCANNED % 40 == 0) {
System.gc(); //GC can be expensive, don't run it too often.
}
if(userFacing) {
long secondsSpent = ((SystemClock.elapsedRealtime() - scanStartTime) / 1000L);
long secondsSpentHasing = ((SystemClock.elapsedRealtime() - hashStartTime) / 1000L);
long MBS = totalBytesHashed / 1000 / 1000 / secondsSpentHasing;
publishProgress(context.getString(R.string.main_scanning_done, secondsSpent + "", MBS + "") + "\n\n\n\n", true);
}
} else { } else {
publishProgress("\t" + context.getString(R.string.main_no_database_available), true); publishProgress("\t" + context.getString(R.string.main_no_database_available), true);
running = false; running = false;

View file

@ -42,6 +42,6 @@
<string name="main_hashing_done">Hashes für alle Dateien generiert</string> <string name="main_hashing_done">Hashes für alle Dateien generiert</string>
<string name="main_hash_scan_done">Alle %s Hashes wurden mit den Signatur-Datenbanken abgeglichen</string> <string name="main_hash_scan_done">Alle %s Hashes wurden mit den Signatur-Datenbanken abgeglichen</string>
<string name="main_no_hashes_available">Keine %s Hash-Signaturen verfügbar</string> <string name="main_no_hashes_available">Keine %s Hash-Signaturen verfügbar</string>
<string name="main_scanning_done">Scan nach %s Sekunden abgeschlossen!</string> <string name="main_scanning_done">Scan nach %s Sekunden abgeschlossen @ %sMB/s!</string>
<string name="main_files_scanned_count">%s Datei(en) gescannt</string> <string name="main_files_scanned_count">%s Datei(en) gescannt</string>
</resources> </resources>

View file

@ -44,6 +44,6 @@
<string name="main_hashing_done">Hashes calculados para todos los archivos</string> <string name="main_hashing_done">Hashes calculados para todos los archivos</string>
<string name="main_hash_scan_done">Comprobados todos los hashes de %s con las bases de datos de firmas</string> <string name="main_hash_scan_done">Comprobados todos los hashes de %s con las bases de datos de firmas</string>
<string name="main_no_hashes_available">No hay firmas %s hashes disponibles</string> <string name="main_no_hashes_available">No hay firmas %s hashes disponibles</string>
<string name="main_scanning_done">¡Escaneo completado en %s segundos!</string> <string name="main_scanning_done">¡Escaneo completado en %s segundos @ %sMB/s!</string>
<string name="main_files_scanned_count">%s archivos escaneados</string> <string name="main_files_scanned_count">%s archivos escaneados</string>
</resources> </resources>

View file

@ -41,6 +41,6 @@
<string name="main_hashing_files">Hachage de fichiers...</string> <string name="main_hashing_files">Hachage de fichiers...</string>
<string name="main_hashing_done">Hachages calculés pour tous les fichiers</string> <string name="main_hashing_done">Hachages calculés pour tous les fichiers</string>
<string name="main_hash_scan_done">Vérification de tous les hachages %s par rapport aux bases de données de signatures</string> <string name="main_hash_scan_done">Vérification de tous les hachages %s par rapport aux bases de données de signatures</string>
<string name="main_scanning_done">Scan complété en %s secondes !</string> <string name="main_scanning_done">Scan complété en %s secondes @ %sMB/s!</string>
<string name="main_files_scanned_count">%s fichiers scannés</string> <string name="main_files_scanned_count">%s fichiers scannés</string>
</resources> </resources>

View file

@ -43,6 +43,6 @@
<string name="main_hashing_done">Calcolando gli hash per tutti i file</string> <string name="main_hashing_done">Calcolando gli hash per tutti i file</string>
<string name="main_hash_scan_done">Confrontati tutti gli hash %s con il database delle firme</string> <string name="main_hash_scan_done">Confrontati tutti gli hash %s con il database delle firme</string>
<string name="main_no_hashes_available">Nessuna firma hash %s disponibile</string> <string name="main_no_hashes_available">Nessuna firma hash %s disponibile</string>
<string name="main_scanning_done">Scansione completata in %s secondi!</string> <string name="main_scanning_done">Scansione completata in %s secondi @ %sMB/s!</string>
<string name="main_files_scanned_count">%s file scansionati</string> <string name="main_files_scanned_count">%s file scansionati</string>
</resources> </resources>

View file

@ -44,6 +44,6 @@
<string name="main_hashing_done">Hashes calculados para todos os arquivos</string> <string name="main_hashing_done">Hashes calculados para todos os arquivos</string>
<string name="main_hash_scan_done">Verificados todos %s hashes em relação a bade de dados de assinaturas</string> <string name="main_hash_scan_done">Verificados todos %s hashes em relação a bade de dados de assinaturas</string>
<string name="main_no_hashes_available">Sem %s assinaturas de hashes disponíveis</string> <string name="main_no_hashes_available">Sem %s assinaturas de hashes disponíveis</string>
<string name="main_scanning_done">Análise será concluída em %s segundo(s)!</string> <string name="main_scanning_done">Análise será concluída em %s segundos @ %sMB/s!</string>
<string name="main_files_scanned_count">%s arquivos analisados</string> <string name="main_files_scanned_count">%s arquivos analisados</string>
</resources> </resources>

View file

@ -44,6 +44,6 @@
<string name="main_hashing_done">Расчетные хеши для всех файлов</string> <string name="main_hashing_done">Расчетные хеши для всех файлов</string>
<string name="main_hash_scan_done">Проверены все хэши %s по базам данных сигнатур</string> <string name="main_hash_scan_done">Проверены все хэши %s по базам данных сигнатур</string>
<string name="main_no_hashes_available">Нет доступных подписей хэшей %s</string> <string name="main_no_hashes_available">Нет доступных подписей хэшей %s</string>
<string name="main_scanning_done">Сканирование выполнено за %s секунд!</string> <string name="main_scanning_done">Сканирование выполнено за %s секунд @ %sMB/s!</string>
<string name="main_files_scanned_count">Просканировано %s файлов</string> <string name="main_files_scanned_count">Просканировано %s файлов</string>
</resources> </resources>

View file

@ -46,6 +46,6 @@
<string name="main_hashing_done">Calculated hashes for all files</string> <string name="main_hashing_done">Calculated hashes for all files</string>
<string name="main_hash_scan_done">Checked all %s hashes against signature databases</string> <string name="main_hash_scan_done">Checked all %s hashes against signature databases</string>
<string name="main_no_hashes_available">No %s hashes signatures available</string> <string name="main_no_hashes_available">No %s hashes signatures available</string>
<string name="main_scanning_done">Scan completed in %s seconds!</string> <string name="main_scanning_done">Scan completed in %s seconds @ %sMB/s!</string>
<string name="main_files_scanned_count">%s files scanned</string> <string name="main_files_scanned_count">%s files scanned</string>
</resources> </resources>

View file

@ -0,0 +1 @@
Hypatia

View file

@ -0,0 +1 @@
Hypatia