diff --git a/app/build.gradle b/app/build.gradle index 80b91bd..871d4e9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,10 +4,10 @@ android { compileSdkVersion 33 defaultConfig { applicationId "us.spotco.malwarescanner" - minSdkVersion 19 + minSdkVersion 16 targetSdkVersion 32 - versionCode 301 - versionName "3.01" + versionCode 302 + versionName "3.02" resConfigs 'en', 'af', 'de', 'el', 'es', 'fi', 'fr', 'it', 'pl', 'pt', 'ru', 'tr', 'zh-rCN' } buildTypes { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d158198..2decd6b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,7 +43,6 @@ android:name=".MainActivity" android:configChanges="orientation|keyboardHidden" android:exported="true" - android:label="@string/app_name" android:screenOrientation="portrait"> diff --git a/app/src/main/java/us/spotco/malwarescanner/Database.java b/app/src/main/java/us/spotco/malwarescanner/Database.java index ebab40a..8eb43ca 100644 --- a/app/src/main/java/us/spotco/malwarescanner/Database.java +++ b/app/src/main/java/us/spotco/malwarescanner/Database.java @@ -23,6 +23,7 @@ import android.os.AsyncTask; import android.util.Log; import android.widget.TextView; +import com.google.common.base.Charsets; import com.google.common.hash.BloomFilter; import com.google.common.hash.Funnels; @@ -33,7 +34,6 @@ import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; -import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.util.Date; import java.util.concurrent.ConcurrentLinkedQueue; @@ -127,17 +127,17 @@ class Database { switch (databaseLocation.getName()) { case "hypatia-md5-bloom.bin": Log.d("Hypatia", "Processing md5"); - signaturesMD5 = BloomFilter.readFrom(databaseLoading, Funnels.stringFunnel(StandardCharsets.US_ASCII)); + signaturesMD5 = BloomFilter.readFrom(databaseLoading, Funnels.stringFunnel(Charsets.US_ASCII)); signaturesCount += signaturesMD5.approximateElementCount(); break; case "hypatia-sha1-bloom.bin": Log.d("Hypatia", "Processing sha1"); - signaturesSHA1 = BloomFilter.readFrom(databaseLoading, Funnels.stringFunnel(StandardCharsets.US_ASCII)); + signaturesSHA1 = BloomFilter.readFrom(databaseLoading, Funnels.stringFunnel(Charsets.US_ASCII)); signaturesCount += signaturesSHA1.approximateElementCount(); break; case "hypatia-sha256-bloom.bin": Log.d("Hypatia", "Processing sha256"); - signaturesSHA256 = BloomFilter.readFrom(databaseLoading, Funnels.stringFunnel(StandardCharsets.US_ASCII)); + signaturesSHA256 = BloomFilter.readFrom(databaseLoading, Funnels.stringFunnel(Charsets.US_ASCII)); signaturesCount += signaturesSHA256.approximateElementCount(); break; } diff --git a/app/src/main/java/us/spotco/malwarescanner/MalwareScanner.java b/app/src/main/java/us/spotco/malwarescanner/MalwareScanner.java index b4557f0..1e8e666 100644 --- a/app/src/main/java/us/spotco/malwarescanner/MalwareScanner.java +++ b/app/src/main/java/us/spotco/malwarescanner/MalwareScanner.java @@ -72,7 +72,7 @@ class MalwareScanner extends AsyncTask, Object, String> { } } - private void logResult(String result, boolean userFacingOnly, String hashsum) { + private void logResult(String result, String hashsum) { if (result.startsWith("Potential match")) { String[] malwareDetect = result.split(" in "); if (hashsum != null) { @@ -100,15 +100,13 @@ class MalwareScanner extends AsyncTask, Object, String> { mBuilder.setChannelId("DETECTION"); } //Lookup action - if (hashsum != null) { - Intent lookupIntent = new Intent(context, NotificationPromptActivity.class); - lookupIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); - lookupIntent.setAction("us.spotco.malwarescanner.LOOKUP_HASH"); - lookupIntent.putExtra("NOTIFICATION_ID", notificationId); - lookupIntent.putExtra("HASH", hashsum); - PendingIntent lookupIntentPending = PendingIntent.getActivity(context, notificationId + 1, lookupIntent, PendingIntent.FLAG_IMMUTABLE); - mBuilder.addAction(android.R.drawable.ic_dialog_map, context.getText(R.string.lookupVT), lookupIntentPending); - } + Intent lookupIntent = new Intent(context, NotificationPromptActivity.class); + lookupIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); + lookupIntent.setAction("us.spotco.malwarescanner.LOOKUP_HASH"); + lookupIntent.putExtra("NOTIFICATION_ID", notificationId); + lookupIntent.putExtra("HASH", hashsum); + PendingIntent lookupIntentPending = PendingIntent.getActivity(context, notificationId + 1, lookupIntent, PendingIntent.FLAG_IMMUTABLE); + mBuilder.addAction(android.R.drawable.ic_dialog_map, context.getText(R.string.lookupVT), lookupIntentPending); //Delete action if (malwareDetect[1].startsWith("~/")) { Intent deleteIntent = new Intent(context, NotificationPromptActivity.class); @@ -148,7 +146,7 @@ class MalwareScanner extends AsyncTask, Object, String> { @Override protected final void onPreExecute() { scanStartTime = SystemClock.elapsedRealtime(); - logResult(context.getString(R.string.main_starting_scan), true, null); + logResult(context.getString(R.string.main_starting_scan), null); } @Override @@ -269,7 +267,7 @@ class MalwareScanner extends AsyncTask, Object, String> { if (objects.length == 3) { hash = (String) objects[2]; } - logResult((String) objects[0], (boolean) objects[1], hash); + logResult((String) objects[0], hash); } private void checkSignature(String hashType, HashMap signaturesToCheck, BloomFilter signatureDatabase) { diff --git a/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java b/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java index e5a90af..ec39b64 100644 --- a/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java +++ b/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java @@ -108,9 +108,10 @@ public class MalwareScannerService extends Service { .setContentTitle(getText(R.string.lblNotificationRealtimeTitle)) .setContentText(getText(R.string.lblNotificationRealtimeText)) .setPriority(Notification.PRIORITY_MIN) - .setOngoing(true) - .setShowWhen(false); - + .setOngoing(true); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + foregroundNotification.setShowWhen(false); + } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { foregroundNotification.setChannelId("FOREGROUND"); } diff --git a/app/src/main/java/us/spotco/malwarescanner/NotificationPromptActivity.java b/app/src/main/java/us/spotco/malwarescanner/NotificationPromptActivity.java index 48ce058..f65f8fa 100644 --- a/app/src/main/java/us/spotco/malwarescanner/NotificationPromptActivity.java +++ b/app/src/main/java/us/spotco/malwarescanner/NotificationPromptActivity.java @@ -32,7 +32,7 @@ public class NotificationPromptActivity extends Activity { case "us.spotco.malwarescanner.LOOKUP_HASH": if (Objects.requireNonNull(intent.getStringExtra("HASH")).length() == 64) { String hashsum = intent.getStringExtra("HASH"); - new AlertDialog.Builder(this) + AlertDialog lookupDialog = new AlertDialog.Builder(this) .setTitle(R.string.confirm_lookup_title) .setMessage(getString(R.string.confirm_lookup_summary) + "\n>>>" + hashsum.substring(0, 8) + "<<<") .setIcon(android.R.drawable.ic_dialog_alert) @@ -41,13 +41,10 @@ public class NotificationPromptActivity extends Activity { startActivity(lookupIntent); finish(); }) - .setNegativeButton(android.R.string.no, (dialog, whichButton) -> { - finish(); - }) - .setOnDismissListener((dialog) -> { - finish(); - }) - .show(); + .setNegativeButton(android.R.string.no, (dialog, whichButton) -> finish()) + .create(); + lookupDialog.setOnDismissListener((dialog) -> finish()); + lookupDialog.show(); } else { Log.d("Hypatia", "Invalid hash"); finish(); @@ -57,7 +54,7 @@ public class NotificationPromptActivity extends Activity { if (intent.getPackage() == null || Objects.equals(intent.getPackage(), BuildConfig.APPLICATION_ID)) { File matched = new File(Objects.requireNonNull(intent.getStringExtra("FILE_PATH"))); if (matched.exists() && matched.isFile()) { - new AlertDialog.Builder(this) + AlertDialog deleteDialog = new AlertDialog.Builder(this) .setTitle(R.string.confirm_delete_title) .setMessage(getString(R.string.confirm_delete_summary) + "\n>>>" + matched.getName() + "<<<") .setIcon(android.R.drawable.ic_dialog_alert) @@ -70,13 +67,10 @@ public class NotificationPromptActivity extends Activity { clearNotification(context, intent.getIntExtra("NOTIFICATION_ID", 0)); finish(); }) - .setNegativeButton(android.R.string.no, (dialog, whichButton) -> { - finish(); - }) - .setOnDismissListener((dialog) -> { - finish(); - }) - .show(); + .setNegativeButton(android.R.string.no, (dialog, whichButton) -> finish()) + .create(); + deleteDialog.setOnDismissListener((dialog) -> finish()); + deleteDialog.show(); } else { finish(); } diff --git a/app/src/main/res/values-af/arrays.xml b/app/src/main/res/values-af/arrays.xml index a6b3dae..3a09068 100644 --- a/app/src/main/res/values-af/arrays.xml +++ b/app/src/main/res/values-af/arrays.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml index 267d892..96e185a 100644 --- a/app/src/main/res/values-af/strings.xml +++ b/app/src/main/res/values-af/strings.xml @@ -6,12 +6,9 @@ Aangedryf deur ClamAV tipe stempels Laai af deur Tor - Laai tans af deur Tor, dit mag \'n oogknip neem... + Laai tans af deur Tor, dit mag \'n oogknip neem… Orbot of InviZible is nie geïnstalleer nie! - Orbot of InviZible is nie aan die loop nie! Dateer databasisse op - Kies databasisse - Kies die databassisse om te aktiveer Erkennings Skandeer sisteem Skandeer APKs @@ -26,32 +23,23 @@ Wanware Opgetel: Intydse Skandeerder - Dateer tans %s databasisse op... - Laai tans %s af + Dateer tans %s databasisse op… Suksesvol afgelaai Lêer nie afgelaai nie, respons kode %s - Geen databasis beskikbaar, skandeer dus nie... + Geen databasis beskikbaar, skandeer dus nie… Vrygestel op %s Lêer nie verander sedert %s Kon nie aflaai nie, kyk dalk na logcat - Begin tans skandering... - Kanseleer tans skandering... - Skandering gekanseleer + Begin tans skandering… + Kanseleer tans skandering… %s lêers wag hul beurt af - Laai tans databasis af... + Laai tans databasis af… Databasis gelaai met %s huts stempels - Huts tans lêers... + Huts tans lêers… Hutse is bereken vir alle verkose lêers Al %s hutse is met die stempel databasis vergelyk Skandering voltooid in %s sekondes @ %sMB/s! %s lêers geskandeer - Outeur - Lisensie - Grootte - Bron - Klein - Medium - Groot diff --git a/app/src/main/res/values-de/arrays.xml b/app/src/main/res/values-de/arrays.xml index a6b3dae..3a09068 100644 --- a/app/src/main/res/values-de/arrays.xml +++ b/app/src/main/res/values-de/arrays.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 28da3fa..e82a2f2 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -7,10 +7,7 @@ Über Tor laden Herunterladen wird zur Anonymisierung über das Tor-Netzwerk geleitet und kann daher länger dauern. Orbot ist nicht installiert! - Orbot wird nicht ausgeführt! Datenbank aktualisieren - Datenbank auswählen - Zu aktivierende Datenbank(en) auswählen (Vorauswahl ausreichend) Datenbankserver überschreiben Mitwirkende /system scannen @@ -28,33 +25,24 @@ Zurücksetzen Überschreiben - %s Datenbank(en) wird/werden aktualisiert... + %s Datenbank(en) wird/werden aktualisiert… Datenbankserver %s wird genutzt - Lade %s herunter Erfolgreich heruntergeladen Datenbank(en) nicht heruntergeladen. Fehlernummer %s - Datenbank(en) nicht verfügbar. Schadsoftware-Prüfung nicht möglich... + Datenbank(en) nicht verfügbar. Schadsoftware-Prüfung nicht möglich… Veröffentlicht am %s Keine Veränderung der Datenbank(en) seit %s Herunterladen ist fehlgeschlagen. Details können im logcat eingesehen werden - Schadsoftware-Prüfung startet... - Prüfung wird abgebrochen... - Prüfung wurde abgebrochen + Schadsoftware-Prüfung startet… + Prüfung wird abgebrochen… %s Dateien sind zur Schadsoftware-Prüfung vorgesehen - Lade Datenbank(en)... + Lade Datenbank(en)… Datenbank(en) mit %s Signaturen geladen - Generiere Prüfsummen der Dateien... + Generiere Prüfsummen der Dateien… Prüfsummen für alle Dateien generiert Alle %s Prüfsummen wurden mit den Signaturen der Datenbank(en) verglichen Überprüfung nach %s Sekunden abgeschlossen @ %sMB/s! %s Dateien überprüft - Autor - Lizenz - Größe - Quelle - Klein - Mittel - Groß diff --git a/app/src/main/res/values-el/arrays.xml b/app/src/main/res/values-el/arrays.xml index 3ea04e7..545704f 100644 --- a/app/src/main/res/values-el/arrays.xml +++ b/app/src/main/res/values-el/arrays.xml @@ -1,2 +1,2 @@ - + diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index a8ebf5f..273f69e 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -6,12 +6,9 @@ Υποστηρίζεται από υπογραφές τύπου ClamAV Πραγματοποιείται Λήψη μέσω Tor - Λήψη μέσω Tor, αυτό μπορεί να πάρει κάποιο χρόνο... + Λήψη μέσω Tor, αυτό μπορεί να πάρει κάποιο χρόνο… Το Orbot δεν είναι εγκατεστημένο! - Το Orbot δεν εκτελείται! Ενημέρωση βάσεων δεδομένων - Επιλογή βάσεων δεδομένων - Επιλέξτε τις βάσεις δεδομένων που θέλετε να ενεργοποιήσετε Παράκαμψη διακομιστή βάσης δεδομένων Credits Σάρωση /system @@ -29,35 +26,26 @@ Επαναφορά Παράκαμψη - Ενημέρωση %s βάσεων δεδομένων... + Ενημέρωση %s βάσεων δεδομένων… Χρήση διακομιστή %s - Λήψη %s Επιτυχής λήψη Δεν έγινε η λήψη του αρχείου, κωδικός απόκρισης %s - Δεν υπάρχει διαθέσιμη βάση δεδομένων, δεν γίνεται σάρωση... + Δεν υπάρχει διαθέσιμη βάση δεδομένων, δεν γίνεται σάρωση… Δημοσιεύτηκε στις %s Το αρχείο δεν άλλαξε από %s Αποτυχία λήψης, ελέγξτε το logcat - Έναρξη σάρωσης... - Ακύρωση σάρωσης... - Ακυρώθηκε η σάρωση + Έναρξη σάρωσης… + Ακύρωση σάρωσης… %s αρχεία περιμένουν σάρωση - Φόρτωση βάσης δεδομένων... + Φόρτωση βάσης δεδομένων… Φορτώθηκε βάση δεδομένων με %s υπογραφές - Καταγραφή αρχείων... + Καταγραφή αρχείων… Υπολογίστηκαν τα hashes για όλα τα αρχεία Έλεγθηκαν και τα %s hashes ως προς τις βάσεις υπογραφών Η σάρωση ολοκληρώθηκε σε %s δευτερόλεπτα @ %sMB/s! %s αρχεία σαρώθηκαν - Συντάκτης - Άδεια - Μέγεθος - Πηγή - Μικρό - Μεσαίο - Μεγάλο Έλεγχος σάρωσης Παράλειψη ενέργειας, μια σάρωση βρίσκεται ήδη σε εξέλιξη! Κλειδί υπογραφής της βάσης δεδομένων diff --git a/app/src/main/res/values-es/arrays.xml b/app/src/main/res/values-es/arrays.xml index 271ebf7..29d87e5 100644 --- a/app/src/main/res/values-es/arrays.xml +++ b/app/src/main/res/values-es/arrays.xml @@ -21,6 +21,8 @@ • Nex (@botherder): Bases de datos de firmas • Amnesty International: Bases de datos de firmas • Echap: Bases de datos de firmas + • MalwareBazaar: Bases de datos de firmas + • VirusShare: Bases de datos de firmas • RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski • GPGDetachedSignatureVerifier.java: Federico Fissore, Arduino LLC • Google: Icono de la aplicación diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 9cd4200..3609eb5 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -5,12 +5,9 @@ Potenciada por firmas al estilo de ClamAV Descarga a través de Tor - Descargando a través de Tor, esto puede llevar un tiempo... + Descargando a través de Tor, esto puede llevar un tiempo… ¡Orbot no está instalado! - ¡Orbot no se está ejecutando! Actualizar bases de datos - Seleccionar bases de datos - Seleccione las bases de datos que desea habilitar Modificar servidor BBDD Créditos Escanear /sistema @@ -28,35 +25,26 @@ Restablecer Modificar - Actualizando %s bases de datos... + Actualizando %s bases de datos… Utilizando el servidor %s - Descargando %s Descarga exitosa Archivo no descargado, código de respuesta %s - No hay base de datos disponible, no se está analizando... + No hay base de datos disponible, no se está analizando… Liberada en %s Archivo no modificado desde %s No se pudo descargar, compruebe el logcat - Iniciando escaneo... - Cancelando escaneo... - Escaneo cancelado + Iniciando escaneo… + Cancelando escaneo… %s archivos pendientes de escanear - Cargando base de datos... + Cargando base de datos… Cargada base de datos con %s firmas - Calculando Hashes de archivos... + Calculando Hashes de archivos… Hashes calculados para todos los archivos Comprobados todos los hashes de %s con las bases de datos de firmas ¡Escaneo completado en %s segundos @ %sMB/s! %s archivos escaneados - Autor - Licencia - Tamaño - Fuente - Pequeña - Mediana - Grande Control de escaneo Saltarse la acción, ¡se está ejecutando un escaneo! Clave de firma de BBDD diff --git a/app/src/main/res/values-fi/arrays.xml b/app/src/main/res/values-fi/arrays.xml index a6b3dae..3a09068 100644 --- a/app/src/main/res/values-fi/arrays.xml +++ b/app/src/main/res/values-fi/arrays.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index abbf23f..25867e6 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -4,12 +4,9 @@ Powered by ClamAV tyylin allekirjoitukset Lataa käyttäen Tor-verkkoa - Ladataan käyttäen Tor-verkkoa, tämä voi kestää jonkin aikaa... + Ladataan käyttäen Tor-verkkoa, tämä voi kestää jonkin aikaa… Orbot:ia ei ole asennettu! - Orbot ei ole käynnissä! Päivitä tietokannat - Valitse tietokannat - Valitse käytettävät tietokannat Tietokantapalvelimen ohitus Krediitit Tarkista /järjestelmä @@ -27,33 +24,24 @@ Palauta Ohita - Päivitetään %s tietokanta(a)... + Päivitetään %s tietokanta(a)… Käytetään palvelinta %s - Ladataan %s Ladattiin onnistuneesti Tiedostoa ei ladattu, vastauskoodi %s - Tietokantaa ei ole käytettävissä, ei tarkistusta... + Tietokantaa ei ole käytettävissä, ei tarkistusta… Julkaistu %s Tiedostoa ei ole muutettu %s jälkeen Lataus epäonnistui, tarkista logcat - Aloitetaan tarkistus... - Perutaan tarkistus... - Tarkistus peruttu + Aloitetaan tarkistus… + Perutaan tarkistus… %s tarkistettavaa tiedostoa - Ladataan tietokantaa... + Ladataan tietokantaa… Ladattiin tietokanta %s allekirjoituksella - Hashataan tiedostoja... + Hashataan tiedostoja… Laskettiin hashit kaikille tiedostoille Tarkistettiin kaikki %s hashit allekirjoitustietokannoista Tarkistus suoritettu %s sekunnissa @ %sMB/s! %s tiedostoa tarkistettu - Tekijä - Lisenssi - Koko - Lähde - Pieni - Keskikokoinen - Suuri diff --git a/app/src/main/res/values-fr/arrays.xml b/app/src/main/res/values-fr/arrays.xml index fd3467d..c9f79a6 100644 --- a/app/src/main/res/values-fr/arrays.xml +++ b/app/src/main/res/values-fr/arrays.xml @@ -15,11 +15,14 @@ • @Sdarfeesh: Simplified Chinese Translations • @cardpuncher: French/Turkish Translations • Tommaso Fonda: Italian Translations + • Dimitris Vagiakakos: Greek Translations • ClamAV par Cisco: bases de données de signatures • ESET: bases de données de signatures • Nex (@botherder): bases de données de signatures • Amnesty International: bases de données de signatures • Echap: bases de données de signatures + • MalwareBazaar: bases de données de signatures + • VirusShare: bases de données de signatures • RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski • GPGDetachedSignatureVerifier.java: Federico Fissore, Arduino LLC • Google: icône de l\'application diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 70d36c9..88efe88 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -1,18 +1,14 @@ - Hypatia Copyright 2017-2023 Divested Computing Group Licence: GPL-3.0 Numéro de version: %s Propulsé par les signatures de style ClamAV Téléchargement par Tor - Téléchargement par Tor, cela peut prendre un certain temps... + Téléchargement par Tor, cela peut prendre un certain temps… Orbot n\'est pas installé ! - Orbot n\'est pas en marche ! Mise à jour des bases de données - Sélectionner les bases de données - Sélectionner les bases de données à activer Remplacer le serveur de base de données Crédits Analyser le /système @@ -30,34 +26,25 @@ Réinitialiser Remplacer - Mise à jour des %s bases de données... + Mise à jour des %s bases de données… Utilisation du serveur %s - Télécharger %s Téléchargement réussi Fichier non téléchargé, code de réponse %s - Pas de base de données disponible, pas d\'analyse... + Pas de base de données disponible, pas d\'analyse… Publiée le %s Fichier non modifié depuis le %s Téléchargement échoué, vérifier le logcat - Démarrage de l\'analyse... - L\'analyse est annulée... - L\'analyse a été annulée + Démarrage de l\'analyse… + L\'analyse est annulée… %s dossiers en attente de scan Base de données chargée de %s signatures - Hachage de fichiers... + Hachage de fichiers… Hachages calculés pour tous les fichiers Vérification de tous les hachages %s par rapport aux bases de données de signatures Analyse complétée en %s secondes @ %sMo/s! %s fichiers analysés - Auteur - Licence - Taille - La source - Moyenne - Grande - Petite Contrôle de l\'analyse Action ignorée, une analyse est en cours ! Signature utilisée pour signer la base de données diff --git a/app/src/main/res/values-it/arrays.xml b/app/src/main/res/values-it/arrays.xml index a6b3dae..3a09068 100644 --- a/app/src/main/res/values-it/arrays.xml +++ b/app/src/main/res/values-it/arrays.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 2d22766..1fcb338 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -5,12 +5,9 @@ Basato su firme in stile ClamAV Aggiorna tramite Tor - Aggiornamento tramite Tor, potrebbe volerci un po\'... + Aggiornamento tramite Tor, potrebbe volerci un po\'… Orbot non è installato! - Orbot non è in esecuzione! Aggiorna i database - Seleziona database - Seleziona i database da abilitare Modifica il server dei database Crediti Scansiona le app di sistema @@ -28,35 +25,26 @@ Reset Modifica - Aggiornamento database %s... + Aggiornamento database %s… Utilizza un altro server %s - Scaricando %s Scaricato con successo Database non scaricato, errore %s - Nessun database selezionato, scansione annullata... + Nessun database selezionato, scansione annullata… Aggiornato il %s Database non modificato dal %s Impossibile aggiornare, controlla il logcat - Avviamento scansione... - Annullamento scansione... - Scansione annullata + Avviamento scansione… + Annullamento scansione… %s file da scansionare - Caricamento database... + Caricamento database… Database caricato con %s firme - Hashing dei file... + Hashing dei file… Calcolando gli hash per tutti i file Confrontati tutti gli hash %s con il database delle firme Scansione completata in %s secondi @ %sMB/s! %s file scansionati - Autore - Licenza - Dimensione - Fonte - Medio - Grande - Piccola Controllo scansione Azione saltata, è in corso una scansione! Chiave di firma del database diff --git a/app/src/main/res/values-pl/arrays.xml b/app/src/main/res/values-pl/arrays.xml index a6b3dae..3a09068 100644 --- a/app/src/main/res/values-pl/arrays.xml +++ b/app/src/main/res/values-pl/arrays.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 8b010b5..322a025 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -8,10 +8,7 @@ Pobierz przez Tor Pobieranie przez Tor, może to zająć chwilę… Orbot nie jest zainstalowany! - Orbot nie jest uruchomiony! Aktualizuj bazy danych - Wybierz bazy danych - Wybierz bazy danych do aktywacji Zastąpienia serwera bazy danych Uznania Skanuj /system @@ -31,7 +28,6 @@ Aktualizacja bazy danych %s… Wykorzystywanie serwera %s - Pobieranie %s Pomyślnie pobrano Nie pobrano plikku, kod odpowiedzi %s Baza danych nie jest dostępna, nie skanuję… @@ -42,7 +38,6 @@ Rozpoczynanie skanowania… Anulowanie skanowania… - Anulowano skanowanie %s plików oczekuje na skanowanie Ładowanie bazy danych… Załadowano bazę danych z %s sygnaturami @@ -51,11 +46,4 @@ Porównano wszystkie %s hashów z bazą danych sygnatur Ukończono skanowanie w %s sekund @ %sMB/s! Zeskanowano %s plików - Autor - Licencja - Rozmiar - Źródło - Small - Medium - Large diff --git a/app/src/main/res/values-pt/arrays.xml b/app/src/main/res/values-pt/arrays.xml index a6b3dae..3a09068 100644 --- a/app/src/main/res/values-pt/arrays.xml +++ b/app/src/main/res/values-pt/arrays.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 46834ef..64e2809 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -5,12 +5,9 @@ Versão: %s Produzido por assinaturas estilo ClamAV - Baixando via Tor, isto pode demorar um pouco... + Baixando via Tor, isto pode demorar um pouco… Orbot não está instalado! - Orbot não está iniciado! Atualizar base de dados - Selecionar base de dados - Selecionar base de dados para ativar Créditos Analisar /sistema Analisar APKs do App @@ -25,31 +22,23 @@ Malware detectado: Analisar em tempo real - Atualizando %s base de dados... - Baixando %s + Atualizando %s base de dados… Baixado com sucesso Arquivo não baixado, código de resposta %s - Sem base de dados disponível, análise não efetuada... + Sem base de dados disponível, análise não efetuada… Lançado em %s Arquivo não alterado desde %s Falha no download, veja logcat - Iniciando análise... - Cancelando análise... - Análise cancelada + Iniciando análise… + Cancelando análise… %s arquivos pendentes para analisar - Carregando base de dados... + Carregando base de dados… Carregou base de dados com %s assinaturas - Hashing arquivos... + Hashing arquivos… Hashes calculados para todos os arquivos Verificados todos %s hashes em relação a base de dados de assinaturas Análise concluída em %s segundos @ %sMB/s! %s arquivos analisados - Licença - Grande - Média - Pequena - Fonte - Tamanho diff --git a/app/src/main/res/values-ru/arrays.xml b/app/src/main/res/values-ru/arrays.xml index a6b3dae..3a09068 100644 --- a/app/src/main/res/values-ru/arrays.xml +++ b/app/src/main/res/values-ru/arrays.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 9a37e40..fac36ec 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -5,12 +5,9 @@ Используются сигнатуры от ClamAV Скачать через Tor - Загрузка через Tor может занять некоторое время... + Загрузка через Tor может занять некоторое время… Orbot не установлен! - Orbot не запущен! Обновить базы данных - Выбрать базы данных - Выберите базы данных для включения Переопределение сервера базы данных Благодарность Сканировать /system @@ -28,35 +25,26 @@ Сбросить Переопределить - Обновление %s баз данных... + Обновление %s баз данных… Используется сервер %s - Загрузка %s Успешно загружена Файл не загружен, код ответа %s - База данных недоступна, сканирование не выполняется... + База данных недоступна, сканирование не выполняется… Выпущены %s Файл не изменен %s Не удалось загрузить, проверьте logcat - Запуск сканирования... - Отмена сканирования... - Сканирование отменено + Запуск сканирования… + Отмена сканирования… %s файл(-ов) ожидают сканирования - Загрузка базы данных... + Загрузка базы данных… Загружена база данных с %s сигнатурами - Хеширование файлов... + Хеширование файлов… Расчетные хеши для всех файлов Проверены все хэши %s по базам данных сигнатур Сканирование выполнено за %s секунд @ %sMB/s! Просканировано %s файлов - Лицензия - Автор - Размер - Источник - Маленький - Средний - Большой Контроль сканирования Пропускаем действие, выполняется сканирование! Ключ подписи базы данных diff --git a/app/src/main/res/values-tr/arrays.xml b/app/src/main/res/values-tr/arrays.xml index 72e741b..4ebd49d 100644 --- a/app/src/main/res/values-tr/arrays.xml +++ b/app/src/main/res/values-tr/arrays.xml @@ -15,11 +15,14 @@ • @Sdarfeesh: Simplified Chinese Translations • @cardpuncher: French/Turkish Translations • Tommaso Fonda: Italian Translations + • Dimitris Vagiakakos: Greek Translations • Cisco tarafından ClamAV: İmza Veri Tabanları • ESET: İmza Veri Tabanları • Nex (@botherder): İmza Veri Tabanları • Uluslararası Af Örgütü: İmza Veri Tabanları • Echap: İmza Veri Tabanları + • MalwareBazaar: İmza Veri Tabanları + • VirusShare: İmza Veri Tabanları • RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski • GPGDetachedSignatureVerifier.java: Federico Fissore, Arduino LLC • Google: Uygulama İkonu diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index f7e2e1f..430e558 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -1,18 +1,14 @@ - Hypatia Telif hakkı 2017-2023 Divested Computing Group Lisans: GPL-3.0 Sürüm: %s ClamAV tarzı imzalarla güçlendirilmiştir Tor üzerinden indir - Tor üzerinden indiriliyor, bu uzun sürebilir... + Tor üzerinden indiriliyor, bu uzun sürebilir… Orbot kurulu değil! - Orbot çalışır hâlde değil! Veri tabanlarını güncelle - Veri tabanlarını seç - Etkinleştirilecek veri tabanlarını seç Veri tabanı sunucusu yerine koy Katkıda bulunanlar Sistemi /tara @@ -30,35 +26,26 @@ Sıfırla Yerine Koy - %s veri tabanı güncelleniyor... + %s veri tabanı güncelleniyor… %s sunucusu kullanılıyor - %s indiriliyor Başarıyla indirildi Dosya indirilmedi, cevap kodu %s - Hiçbir veri tabanı mevcut değil, tarama yapılmıyor... + Hiçbir veri tabanı mevcut değil, tarama yapılmıyor… %s tarihinde yayınlandı Dosya değiştirilmedi %s tarihinden beri İndirme başarısız, logcat kontrolü yapın - Tarama başlatılıyor... - Tarama iptal ediliyor... - Tarama iptal edildi + Tarama başlatılıyor… + Tarama iptal ediliyor… %s dosya taranmayı bekliyor - Veri tabanı yükleniyor... + Veri tabanı yükleniyor… Veri tabanı, %s imza ile yüklendi - Dosyaların karma değeri hesaplanıyor... + Dosyaların karma değeri hesaplanıyor… Tüm dosyaların karma değeri hesaplandı Tüm %s karma değer imza veri tabanlarıyla karşılaştırıldı Tarama % saniyede %sMB/s hızla tamamlandı! %s dosya tarandı - Yazar - Lisans - Boyut - Kaynak - Küçük - Orta - Büyük Tarama Kontrolü Faaliyet es geçiliyor, bir tarama devam etmekte! Veri tabanı imzalama anahtarı diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index da6d011..069df9a 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1,18 +1,14 @@ - Hypatia 版权所有 2017-2023 Divested Computing Group 许可证:GPL-3.0 版本:%s 由 ClamAV 数据库特征码提供支持 通过 Tor 下载 - 正在通过 Tor 下载,这可能需要一段时间... + 正在通过 Tor 下载,这可能需要一段时间… Orbot 未安装! - Orbot 未运行! 更新数据库 - 选择数据库 - 选择要启用的数据库 数据库服务器覆盖 致谢名单 扫描 /system @@ -30,35 +26,26 @@ 重置 覆盖 - 正在更新 %s 个数据库... + 正在更新 %s 个数据库… 使用服务器 %s - 正在下载 %s 下载成功 文件未下载,响应代码 %s - 无可用数据库,不执行扫描... + 无可用数据库,不执行扫描… 发布于 %s 文件无变更 (%s 以来) 下载失败,查看 Logcat - 开始扫描... - 正在取消扫描... - 扫描已取消 + 开始扫描… + 正在取消扫描… %s 个文件等待扫描 - 正在加载数据库... + 正在加载数据库… 已加载带有 %s 个特征码的数据库 - 正在计算文件哈希值... + 正在计算文件哈希值… 已计算所有文件的哈希值 已根据特征码数据库检查全部 %s 哈希值 扫描在 %s 秒内完成 @ %sMB/s! 已扫描 %s 个文件 - 作者 - 许可证 - 大小 - 来源 - - - 扫描控制 跳过操作,扫描正在运行! diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index b838676..9ef4608 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -22,6 +22,7 @@ • Amnesty International: Signature Databases • Echap: Signature Databases • MalwareBazaar: Signature Databases + • VirusShare: Signature Databases • RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski • GPGDetachedSignatureVerifier.java: Federico Fissore, Arduino LLC • Google: App Icon diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 59a0b0c..7abc06d 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,3 +1 @@ - - 16dp - + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6860d2c..15cf566 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,12 +7,9 @@ Powered by ClamAV style signatures Download over Tor - Downloading over Tor, this may take a while... + Downloading over Tor, this may take a while… Orbot is not installed! - Orbot is not running! Update databases - Select databases - Select databases to enable Database server override Credits Scan /system @@ -30,35 +27,26 @@ Reset Override - Updating %s databases... + Updating %s databases… Using server %s - Downloading %s Successfully downloaded File not downloaded, response code %s - No database available, not scanning... + No database available, not scanning… Released on %s File not changed since %s Failed to download, check logcat - Starting scan... - Cancelling scan... - Cancelled scan + Starting scan… + Cancelling scan… %s files pending scan - Loading database... + Loading database… Loaded database with %s signatures - Hashing files... + Hashing files… Calculated hashes for all files Checked all %s hashes against signature databases Scan completed in %s seconds @ %sMB/s! %s files scanned - Author - License - Size - Source - Small - Medium - Large Scan Control Skipping action, a scan is running! Database signing key @@ -79,8 +67,6 @@ Are you sure you want to delete the following file? Failed to delete! Ignored! - Confirm uninstall - Are you sure you want to uninstall the following app? Uninstall Write self test files diff --git a/fastlane/metadata/android/en-US/changelogs/122.txt b/fastlane/metadata/android/en-US/changelogs/122.txt new file mode 100644 index 0000000..abbe7ee --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/122.txt @@ -0,0 +1 @@ +* Small crash fix diff --git a/fastlane/metadata/android/en-US/changelogs/301.txt b/fastlane/metadata/android/en-US/changelogs/301.txt new file mode 100644 index 0000000..26bbebc --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/301.txt @@ -0,0 +1 @@ +* Improve notification action handling diff --git a/fastlane/metadata/android/en-US/changelogs/302.txt b/fastlane/metadata/android/en-US/changelogs/302.txt new file mode 100644 index 0000000..0049592 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/302.txt @@ -0,0 +1,2 @@ +* Restore support for Android 4.1 / Jelly Bean +* Code cleanup diff --git a/scripts/Main.java b/scripts/Main.java index 1766535..76f81ba 100644 --- a/scripts/Main.java +++ b/scripts/Main.java @@ -16,6 +16,7 @@ along with this program. If not, see . */ import com.google.common.base.CharMatcher; +import com.google.common.base.Charsets; import com.google.common.hash.BloomFilter; import com.google.common.hash.Funnels; @@ -25,7 +26,6 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; import java.util.zip.GZIPInputStream; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -53,9 +53,9 @@ public class Main { public static int amtPreviousSignaturesSHA256 = 0; public static void main(String[] args) { - signaturesMD5 = BloomFilter.create(Funnels.stringFunnel(StandardCharsets.US_ASCII), 4500000, 0.00001); //4.5m - signaturesSHA1 = BloomFilter.create(Funnels.stringFunnel(StandardCharsets.US_ASCII), 10000, 0.00001); //10k - signaturesSHA256 = BloomFilter.create(Funnels.stringFunnel(StandardCharsets.US_ASCII), 800000, 0.00001); //800k + signaturesMD5 = BloomFilter.create(Funnels.stringFunnel(Charsets.US_ASCII), 5800000, 0.00001); //5.8m + signaturesSHA1 = BloomFilter.create(Funnels.stringFunnel(Charsets.US_ASCII), 10000, 0.00001); //10k + signaturesSHA256 = BloomFilter.create(Funnels.stringFunnel(Charsets.US_ASCII), 800000, 0.00001); //800k System.out.println("Processing:"); for (File databaseLocation : new File(args[0]).listFiles()) {