77 |
78 |
79 |
80 |
81 |
82 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.de.md:
--------------------------------------------------------------------------------
1 | Hypatia
2 | =======
3 |
4 | Übersicht
5 | --------
6 | Hypatia ist der weltweit erste FOSS-Malwarescanner für Android. Er basiert auf Signaturdatenbanken im Stil von ClamAV.
7 |
8 | [](https://f-droid.org/packages/us.spotco.malwarescanner/)
11 |
12 | Funktionen
13 | --------
14 | - Nahezu keine Auswirkungen auf den Akku: Sie werden keinerlei Auswirkungen auf den Akku bemerken
15 | - Extrem schnell: kleine Dateien (1MB) werden in <20ms gescannt, große Dateien (40MB) in 1000ms.
16 | - Speichereffizient: mit den standardmäßig aktivierten Datenbanken verbraucht es weniger als 120MB.
17 | - Manueller Scan: erlaubt die Auswahl von /system, internem Speicher, externem Speicher und installierten Apps
18 | - Echtzeit-Scanner: kann Malware direkt bei neugeschriebenen oder unbenannten Dateien im internen Speicher erkennen
19 | - Vollständig offline: Das Internet wird nur zum Herunterladen von Signaturdatenbanken verwendet, die Dateien verlassen niemals Ihr Gerät
20 | - Persistenz: automatischer Neustart beim Booten/Update
21 | - Winzige Codebasis: mit weniger als 1000 Sloc kann sie sogar von jemandem mit grundlegenden Programmierkenntnissen geprüft werden
22 | - Minimale Abhängigkeiten: die App verwendet nur Bibliotheken, wenn es nötig ist
23 | - Signaturdatenbanken können auf Wunsch des Benutzers aktiviert/deaktiviert werden
24 |
25 | Technische Details
26 | ------------------
27 | - Signaturdatenbanken sind im seriellem Guava-BloomFilter Objektformat
28 | - Signaturdatenbanken werden nicht erneut heruntergeladen, wenn sich die Datei auf dem Server nicht geändert hat (HTTP-Code 304 -> nicht modifiziert)
29 | - Signaturen werden mit BloomFilters für O(k) Lookup gespeichert
30 | - Dateien haben ihre MD5/SHA-1/SHA-256-Hashes in einem Durchgang berechnet
31 | - Der Echtzeit-Scanner ist multithreaded und nutzt die Hälfte der Kernanzahl des Geräts für das asynchrone Scannen mehrerer Dateien
32 | - Echtzeit-Scanning mittels rekursivem FileObserver (Datei-Beobachter)
33 | - Netzwerkverbindungen werden zu Adressen nach dem Folgendem Muster hergestellt: https://divested.dev/MalwareScannerSignatures/hypatia-*-bloom.bin{,.sig}
34 | - Statistiken und generierte Zusammenfassung der aktuellen Datenbank zu finden auf https://divested.dev/MalwareScannerSignatures/
35 |
36 | Geplante Updates
37 | ----------------
38 | - Option zum Scannen beim Zugriff
39 | - Scannen von Dateien über Share Intent
40 | - Scannen neu installierter/aktualisierter Anwendungen
41 | - Option zum Anstoßen von Scans durch Drittanbieter-Apps
42 | - Automatische Datenbank-Updates
43 | - Automatische Datenbankerstellung
44 | - Datenbank-Sanity-Tests
45 | - Prüfung
46 | - Bessere Benutzeroberfläche (GUI)
47 | - Übersetzungen
48 | - Scannen des gesamten Systems mittels root Zugriff (niedrige Priorität)
49 |
50 | Ziele
51 | -----
52 | - Schnelle Performance
53 | - Minimaler Akkuverbrauch
54 | - Das nötige Minimum an Berechtigungen verwenden
55 | - Bibliotheken nur bei Bedarf verwenden
56 |
57 | Credits
58 | -------
59 | - ClamAV für die Datenbanken (GPLv2)
60 | - ESET für die zusätzlichen Datenbanken (BSD 2-Clause)
61 | - Nex (@botherder) für extra Datenbanken (CC BY-SA 4.0)
62 | - Amnesty International für extra Datenbanken (CC BY 2.0)
63 | - Echap für extra Datenbanken (CC BY 4.0)
64 | - MalwareBazaar für extra Datenbanken (CC0)
65 | - RecursiveFileObserver.java (GPLv3): Daniel Gultsch, ownCloud Inc. und Bartek Przybylski
66 | - GPGDetachedSignatureVerifier.java (GPL-2.0-or-later): Federico Fissore, Arduino LLC
67 | - Petra Mirelli (@iNtEgraIR2021) für die deutsche/spanische/italienische Übersetzung, das App-Banner/Feature-Grafik und verschiedene Optimierungen.
68 | - Jean-Luc Tibaux und Petra Mirelli (@iNtEgraIR2021) für die französischen Übersetzungen.
69 | - @srccrow für die italienischen Übersetzungen.
70 | - @inkhorn für die portugiesischen Übersetzungen.
71 | - @jontaix für die portugiesischen Übersetzungen.
72 | - @q1011 für die russischen Übersetzungen.
73 | - Oswald van Ginkel für die afrikanischen Übersetzungen.
74 | - huuhaa für die finnischen Übersetzungen.
75 | - Marcin Mikołajczak für die polnischen Übersetzungen.
76 | - @Manuel-Senpai für die spanischen Übersetzungen.
77 | - @Balthazar1234 für die deutschen Übersetzungen.
78 | - @Sdarfeesh für die vereinfachte Chinesische übersetzungen.
79 | - @cardpuncher für die französischen und türkischen Übersetzungen.
80 | - Tommaso Fonda für die italienischen Übersetzungen.
81 | - @thereisnoanderson für die deutschen Übersetzungen.
82 | - Dimitris Vagiakakos für die griechischen Übersetzungen.
83 | - @gallegonovato für die spanischen Übersetzungen.
84 | - @Fjuro für die tchechischen Übersetzungen.
85 |
86 | - Icons: Google/Android/AOSP, Lizenz: Apache 2.0, https://google.github.io/material-design-icons/
87 |
88 | Hinweise
89 | -------
90 | - Divested Computing Group ist nicht mit Cisco oder ESET verbunden
91 | - Hypatia wird nicht von Cisco oder ESET gesponsert oder unterstützt
92 |
93 | Spenden
94 | -------
95 | -------
96 | - https://divested.dev/donate
97 |
--------------------------------------------------------------------------------
/README.es.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | Hypatia
4 | =======
5 |
6 | Visión general
7 | --------
8 | Hypatia es el primer escáner de código malicioso FOSS del mundo para Android. Funciona con bases de datos de firmas al estilo ClamAV.
9 |
10 | [](https://f-droid.org/packages/us.spotco.malwarescanner/)
13 |
14 | Características
15 | --------------
16 | - Impacto casi nulo en la batería: no notará en absoluto ningún impacto en la batería.
17 | - Extremadamente rápido: puede escanear archivos pequeños (1MB) en <20ms, e incluso archivos grandes (40MB) en 1000ms.
18 | - Memoria eficiente: con las bases de datos activadas por defecto utiliza menos de 120MB.
19 | - Escaneo regular: permite seleccionar /system, almacenamiento interno, almacenamiento externo y aplicaciones instaladas.
20 | - Escaneo en tiempo real: puede detectar malware en tiempo real al escribir/renombrar en el almacenamiento interno.
21 | - Completamente offline: Internet sólo se utiliza para descargar bases de datos de firmas, los archivos nunca saldrán de su dispositivo.
22 | - Persistencia: se reiniciará automáticamente al arrancar/actualizar.
23 | - Código base minúsculo: con menos de 1000 slocs, puede ser auditado incluso por alguien con experiencia básica en programación.
24 | - Dependencias mínimas: la aplicación sólo utiliza bibliotecas cuando es necesario.
25 | - Las bases de datos de firmas pueden activarse o desactivarse a petición del usuario.
26 |
27 |
28 | Datos técnicos
29 | --------------
30 | - Las bases de datos de las firmas están en formato ClamAV .hdb (hashes MD5) y .hsb (SHA-1/SHA-256)
31 | - Las bases de datos de las firmas no se volverán a descargar si el archivo no ha cambiado en el servidor (304 no modificado)
32 | - Las firmas se almacenan utilizando BloomFilters para búsquedas O(k)
33 | - Los hashes MD5/SHA-1/SHA-256 de los archivos se calculan en una sola pasada.
34 | - El escáner en tiempo real es multihilo y utilizará la mitad del número de núcleos del dispositivo para escanear varios archivos de forma asíncrona.
35 | - Escaneo en tiempo real impulsado por un FileObserver recursivo
36 | - Se establecerán conexiones de red a: https://divested.dev/MalwareScannerSignatures/hypatia-*-bloom.bin{,.sig}
37 |
38 | Actualizaciones previstas
39 | -----------------------
40 | - Opción de escanear al acceder a la aplicación
41 | - Escanear archivos a través de la intención de compartir
42 | - Escanear aplicaciones recién instaladas/actualizadas
43 | - Opción de permitir que aplicaciones de terceros invoquen escaneos
44 | - Actualización automática de la base de datos
45 | - Generación automática de bases de datos
46 | - Comprobaciones de integridad de la base de datos
47 | - Pruebas
48 | - Mejor GUI
49 | - Traducciones
50 | - Escaneo de todo el sistema mediante root (prioridad baja)
51 |
52 | Objetivos
53 | ---------
54 | - Que sea rápido
55 | - No consumir mucha batería
56 | - Usar permisos mínimos
57 | - Utilizar las bibliotecas sólo cuando sea necesario
58 |
59 | Créditos
60 | ---------
61 | - ClamAV por las bases de datos (GPLv2)
62 | - ESET para las bases de datos extra (BSD 2-Clause)
63 | - Nex (@botherder) para las bases de datos adicionales (CC BY-SA 4.0)
64 | - Amnistía Internacional para las bases de datos adicionales (CC BY 2.0)
65 | - Echap para las bases de datos adicionales (CC BY 4.0)
66 | - MalwareBazaar para bases de datos adicionales (CC0)
67 | - RecursiveFileObserver.java (GPL-3.0 o posterior): Daniel Gultsch, ownCloud Inc., Bartek Przybylski
68 | - GPGDetachedSignatureVerifier.java (GPL-2.0-o-later): Federico Fissore, Arduino LLC
69 | - Petra Mirelli por las traducciones alemán/español/italiano, el gráfico del banner/característica de la aplicación y varios retoques.
70 | - Jean-Luc Tibaux y Petra Mirelli por las traducciones al francés.
71 | - @srccrow por las traducciones al italiano.
72 | - @inkhorn por las traducciones al portugués.
73 | - @jontaix por las traducciones al portugués.
74 | - @q1011 por las traducciones al ruso.
75 | - Oswald van Ginkel por las traducciones al afrikaans.
76 | - huuhaa por las traducciones al finés.
77 | - Marcin Mikołajczak por las traducciones al polaco.
78 | - @Manuel-Senpai por las traducciones al español.
79 | - @Balthazar1234 por las traducciones al alemán.
80 | - @Sdarfeesh para las traducciones al chino simplificado.
81 | - @cardpuncher por las traducciones al francés y al turco.
82 | - Tommaso Fonda por las traducciones al italiano.
83 | - Dimitris Vagiakakos por las traducciones al griego.
84 | - Iconos: Google/Android/AOSP, con licencia: Apache 2.0, https://google.github.io/material-design-icons/
85 |
86 | Avisos
87 | -------
88 | - Divested Computing Group no está afiliado a Cisco ni a ESET
89 | - Hypatia no está patrocinado ni respaldado por Cisco o ESET
90 |
91 | Donar
92 | -------
93 | - https://divested.dev/donate
94 |
--------------------------------------------------------------------------------
/README.fr.md:
--------------------------------------------------------------------------------
1 | Hypatia
2 | =======
3 |
4 | Vue d'ensemble
5 | --------
6 | Hypatia est le premier scanner de malware FOSS (logiciel libre) au monde pour Android. Il est propulsé par les bases de données de signatures de style ClamAV.
7 |
8 | [](https://f-droid.org/packages/us.spotco.malwarescanner/)
11 |
12 | Caractéristiques
13 | --------
14 | - Impact de la batterie proche de zéro: vous ne remarquerez aucun impact sur la batterie
15 | - Extrêmement rapide: il peut scanner les petits fichiers (1MB) en <20ms, et même les gros fichiers (40MB) en 1000ms.
16 | - Mémoire efficace: avec les bases de données activées par défaut, il utilise moins de 120 Mo.
17 | - Analyse régulière: permet de sélectionner le système, le mémoire interne, le mémoire externe et les applications installées
18 | - Scanner en temps réel: peut détecter les malwares en temps réel sur l'écriture ou le renommage dans le mémoire interne
19 | - Complètement hors ligne: l'internet n'est utilisé que pour télécharger des bases de données de signatures, les fichiers ne quitteront jamais votre appareil
20 | - Persistance: redémarre automatiquement au démarrage/mise à jour
21 | - Une base de code minuscule: avec moins de 1000 sloc, elle peut être vérifiée même par une personne ayant une expérience de base en programmation
22 | - Dépendances minimales: l'application n'utilise les bibliothèques que lorsque cela est nécessaire
23 | - Les bases de données de signatures peuvent être activées/désactivées à la demande des utilisateurs
24 |
25 | Détails techniques
26 | ------------------
27 | - Les bases de données de signatures sont au format ClamAV .hdb (hachages MD5) et .hsb (SHA-1/SHA-256)
28 | - Les bases de données de signatures ne seront pas rechargées si le fichier n'a pas été modifié sur le serveur (code 304 - non modifié)
29 | - Les signatures sont stockées à l'aide de BloomFilters pour la recherche O(k)
30 | - Les fichiers ont leurs hachages MD5/SHA-1/SHA-256 calculés en un seul passage
31 | - Le scanner en temps réel est multifilaire et utilisera la moitié du nombre d'éléments de l'appareil pour analyser plusieurs fichiers de manière asynchrone.
32 | - Analyse en temps réel grâce à un FileObserver récursif
33 | - Les connexions au réseau seront effectuées aux adresses de type suivant: https://divested.dev/MalwareScannerSignatures/hypatia-*-bloom.bin{,.sig}
34 |
35 |
36 | Mises à jour prévues
37 | ----------------
38 | - Possibilité de scanner sur l'accès
39 | - Scanner des fichiers via l'intention de partage
40 | - Scanner les applications nouvellement installées/mises à jour
41 | - Une meilleure interface graphique
42 | - Traductions
43 | - Analyse de l'ensemble du système à l'aide de root (faible priorité)
44 |
45 | Objectifs
46 | -----
47 | - Soyez rapide
48 | - Réduire la consommation de batterie
49 | - Utiliser des autorisations minimales
50 | - N'utiliser les bibliothèques que lorsque c'est nécessaire
51 |
52 | Crédits
53 | -------
54 | - ClamAV pour les bases de données (GPLv2)
55 | - ESET pour les bases de données supplémentaires (BSD 2-Clause)
56 | - RecursiveFileObserver.java (GPLv3): Daniel Gultsch, ownCloud Inc, Bartek Przybylski
57 | - Petra Mirelli pour les traductions allemandes et la bannière/le graphique de l'application.
58 | - Symboles: Google/Android/AOSP, Licence: Apache 2.0, https://google.github.io/material-design-icons/
59 |
60 | Avis
61 | -------
62 | - Divested Computing Group n'est pas affilié à Cisco ou à ESET
63 | - Hypatia n'est pas sponsorisé ou approuvé par Cisco ou ESET
64 |
--------------------------------------------------------------------------------
/README.it.md:
--------------------------------------------------------------------------------
1 | Ipazia
2 | =======
3 |
4 | Panoramica
5 | --------
6 | Hypatia è il primo scanner di malware FOSS per Android. È alimentato da database di firme in stile ClamAV.
7 |
8 | [](https://f-droid.org/packages/us.spotco.malwarescanner/)
11 |
12 | Caratteristiche
13 | --------
14 | - Impatto della batteria quasi nullo: non noterai mai alcun impatto sulla batteria
15 | - Estremamente veloce: può scansionare file piccoli (1MB) in <20ms, e anche file grandi (40MB) in 1000ms.
16 | - Efficiente in termini di memoria: con i database di default abilitati utilizza meno di 120MB.
17 | - Scansione regolare: permette di selezionare /sistema, memoria interna, memoria esterna e applicazioni installate.
18 | - Scansione in tempo reale: può rilevare malware in tempo reale su scrittura/rinominazione nello storage interno
19 | - Completamente offline: Internet viene utilizzato solo per scaricare i database delle firme, i file non lasceranno mai il tuo dispositivo
20 | - Persistenza: si riavvia automaticamente all'avvio/aggiornamento
21 | - Codebase minuscolo: arrivando a meno di 1000 sloc, può essere controllato anche da qualcuno con esperienza di programmazione di base
22 | - Dipendenze minime: l'app usa le librerie solo quando necessario
23 | - I database delle firme possono essere abilitati/disabilitati su richiesta dell'utente
24 |
25 | Dettagli tecnici
26 | ------------------
27 | - I database delle firme sono in formato ClamAV .hdb (hash MD5) e .hsb (SHA-1/SHA-256)
28 | - I database delle firme non saranno riscaricati se il file non è cambiato sul server (304 non modificato)
29 | - Le firme sono memorizzate usando BloomFilters per una ricerca O(k)
30 | - I file hanno i loro hash MD5/SHA-1/SHA-256 calcolati in un solo passaggio
31 | - Lo scanner in tempo reale è multithreaded e utilizzerà metà del numero di core del dispositivo per la scansione di più file in modo asincrono
32 | - Scansione in tempo reale alimentata da un FileObserver ricorsivo
33 | - Le connessioni di rete saranno effettuate su: https://divested.dev/MalwareScannerSignatures/hypatia-*-bloom.bin{,.sig}
34 |
35 | Aggiornamenti pianificati
36 | ----------------
37 | - Opzione di scansione all'accesso
38 | - Scansione dei file tramite intento di condivisione
39 | - Scansione delle app appena installate/aggiornate
40 | - Migliore interfaccia grafica
41 | - Traduzioni
42 | - Scansione dell'intero sistema usando root (bassa priorità)
43 |
44 | Obiettivi
45 | -----
46 | - Essere veloce
47 | - Non consumare le batterie
48 | - Usare permessi minimi
49 | - Usare le librerie solo se necessario
50 |
51 | Crediti
52 | -------
53 | - ClamAV per i database (GPLv2)
54 | - ESET per i database extra (BSD 2-Clause)
55 | - RecursiveFileObserver.java (GPLv3): Daniel Gultsch, ownCloud Inc, Bartek Przybylski
56 | - Petra Mirelli per le traduzioni in tedesco, il banner/grafica dell'app e varie modifiche.
57 | - Jean-Luc Tibaux e Petra Mirelli per le traduzioni in francese.
58 | - @srccrow per le traduzioni italiane.
59 | - Icone: Google/Android/AOSP, Licenza: Apache 2.0, https://google.github.io/material-design-icons/
60 |
61 | Avvisi
62 | -------
63 | - Divested Computing Group non è affiliato con Cisco o ESET
64 | - Hypatia non è sponsorizzata o appoggiata da Cisco o ESET
65 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | Hypatia
4 | =======
5 |
6 | Overview
7 | --------
8 | Hypatia is the world's first FOSS malware scanner for Android. It is powered by ClamAV style signature databases.
9 |
10 | [](https://f-droid.org/packages/us.spotco.malwarescanner/)
13 | [](https://hosted.weblate.org/engage/divestos/)
16 |
17 | Features
18 | --------
19 | - Near zero battery impact: you'll never notice any impact on battery at all
20 | - Extremely fast: it can scan small files (1MB) in <20ms, and even large files (40MB) in 1000ms.
21 | - Memory efficient: with the default databases enabled it uses under 120MB.
22 | - Regular scan: allowing selection of /system, internal storage, external storage, and installed apps
23 | - Realtime scanner: can detect malware in realtime on write/rename in internal storage
24 | - Completely offline: Internet is only used to download signature databases, files will never ever leave your device
25 | - Persistence: will automatically restart on boot/update
26 | - Tiny codebase: coming in at under 1000 sloc, it can be audited by even someone with basic programming experience
27 | - Minimal dependencies: the app only uses libraries when necessary
28 | - Signature databases can be enabled/disabled at the users demand
29 |
30 | Technical Details
31 | ------------------
32 | - Signature databases are serialized Guava BloomFilter object format
33 | - Signature databases will not be redownloaded if the file hasn't changed on the server (304 not modified)
34 | - Signatures are stored using BloomFilters for O(k) lookup
35 | - Files have their MD5/SHA-1/SHA-256 hashes calculated in one pass
36 | - Realtime scanner is multithreaded and will use half of the device's core count for scanning multiple files asynchronously
37 | - Realtime scanning powered by a recursive FileObserver
38 | - Network connections will be made to the following: https://divested.dev/MalwareScannerSignatures/hypatia-*-bloom.bin{,.sig}
39 | - Statistics & generation output of the current database is available via https://divested.dev/MalwareScannerSignatures/
40 |
41 | Planned Updates
42 | ----------------
43 | - Option to scan on access
44 | - Scan files via share intent
45 | - Scan newly installed/updated apps
46 | - Option to let 3rd-party apps invoke scans
47 | - Automatic database updates
48 | - Automatic database generation
49 | - Database sanity checks
50 | - Testing
51 | - Better GUI
52 | - Translations
53 | - Scanning entire system using root (low priority)
54 |
55 | Goals
56 | -----
57 | - Be fast
58 | - Don't eat batteries
59 | - Use minimal permissions
60 | - Use libraries only when necessary
61 |
62 | Credits
63 | -------
64 | - ClamAV for the databases (GPLv2)
65 | - ESET for extra databases (BSD 2-Clause)
66 | - Nex (@botherder) for extra databases (CC BY-SA 4.0)
67 | - Amnesty International for extra databases (CC BY 2.0)
68 | - Echap for extra databases (CC BY 4.0)
69 | - MalwareBazaar for extra databases (CC0)
70 | - RecursiveFileObserver.java (GPL-3.0-or-later): Daniel Gultsch, ownCloud Inc., Bartek Przybylski
71 | - GPGDetachedSignatureVerifier.java (GPL-2.0-or-later): Federico Fissore, Arduino LLC
72 | - Petra Mirelli for the app banner/feature graphic and various tweaks.
73 | - @eloitor: Translations work
74 | - Icons: Google/Android/AOSP, License: Apache 2.0, https://google.github.io/material-design-icons/
75 |
76 | Translations
77 | ------------
78 | - Afrikaans: Oswald van Ginkel
79 | - Arabic: abdelbasset jabrane, ABDO GM
80 | - Chinese (Simplified): Sdarfeesh, Crit, 大王叫我来巡山
81 | - Chinese (Traditional Han script): 張可揚
82 | - Croatian: lukapiplica
83 | - Czech: Fjuro
84 | - Estonian: Priit Jõerüüt
85 | - Finnish: huuhaa, Ricky Tigg
86 | - French: cardpuncher, Jean-Luc Tibaux, Petra Mirelli, thraex
87 | - Galician: ghose, josé m
88 | - German: thereisnoanderson, Balthazar1234, Petra Mirelli, Ettore Atalan
89 | - Greek: Dimitris Vagiakakos
90 | - Indonesian: Adrien N
91 | - Italian: Tommaso Fonda, srccrow, Petra Mirelli, Dark Space
92 | - Japanese: honyaku
93 | - Polish: Marcin Mikołajczak
94 | - Portuguese (Brazil): lucasmz
95 | - Portuguese: jontaix, inkhorn, ssantos
96 | - Romanian: Renko
97 | - Russian: yurtpage, q1011, Andrey
98 | - Slovak: Pa Di
99 | - Spanish: gallegonovato, Manuel-Senpai, Petra Mirelli
100 | - Turkish: cardpuncher
101 | - Ukrainian: Fqwe1
102 |
103 | Notices
104 | -------
105 | - Divested Computing Group is not affiliated with Cisco or ESET
106 | - Hypatia is not sponsored or endorsed by Cisco or ESET
107 |
108 | Donate
109 | -------
110 | - https://divested.dev/donate
111 |
--------------------------------------------------------------------------------
/README.pl.md:
--------------------------------------------------------------------------------
1 | Hypatia
2 | =======
3 |
4 | Przegląd
5 | --------
6 | Hypatia to pierwszy w świecie FOSS skaner złośliwego oprogramowania na Androida. Jest oparty o bazy danych sygnatur w stylu ClamAV.
7 |
8 | [](https://f-droid.org/packages/us.spotco.malwarescanner/)
11 |
12 | Funcje
13 | --------
14 | - Prawie zerowy wpływ na baterię – nigdy nie zauważysz wpływu na zużycie baterii
15 | - Ekstremalnie szybki – może skanować małe pliki files (1MB) w 20ms, a nawet większe pliki (40MB) w 1000ms.
16 | - Oszczędny dla pamięci – z domyślnymi bazami danych wykorzystuje mniej niż 120MB.
17 | - Zwykłe skanowanie – pozwala wybrać /system, pamięć wewnętrzną, zewnętrzną i zainstalowane aplikacje
18 | - Skaner w czasie rzeczywistym – może wykrywać złośliwe oprogramowanie podczas nadpisywania/zmian nazw w pamięci wewnętrznej
19 | - Całkowicie offline – Internet wykorzystywany jest jedynie do pobierania baz danych sygnatur, pliki nigdy nie opuszczą Twojego urządzenia
20 | - Trwałość – automatycznie restartuje się po uruchomieniu/aktualizacji
21 | - Niewielki kod – zawiera mniej niż 1000 linii kodu, może zostać zaudytowany nawet przez osobę z podstawową wiedzą o programowaniu
22 | - Minimalne zależności – aplikacja wykorzystuje biblioteki jedynie gdy są potrzebne
23 | - Bazy danych sygnatur mogą być włączone/wyłączone na życzenie użytkownika
24 |
25 | Technical Details
26 | ------------------
27 | - Sygnatury bazy danych używają formatu ClamAV .hdb (MD5 hashes) i .hsb (SHA-1/SHA-256)
28 | - Sygnatury bazy danych nie będą pobierane, jeżeli plik nie został zmieniony na serwerze (304 not modified)
29 | - Sygnatury są przechowywane z wyorzystaniem BloomFilters dla wyszukiwania o złożoności O(k)
30 | - Hashe MD5/SHA-1/SHA-256 plików są obliczane jednocześnie
31 | - Skaner w czasie rzeczywistym używa wielu wątków i wykorzystuje połowę rdzeni urządzenia dla skanowania wielu plików asynchronicznie
32 | - Skaner w czasie rzeczywistym wykorzystuje rekurencyjny FileObserver
33 | - Połączenia z internetem są dokonywane z adresem https://divested.dev/MalwareScannerSignatures/hypatia-*-bloom.bin{,.sig}
34 |
35 | Planowane aktualizacje
36 | ----------------
37 | - Opcja skanowania przy dostępie
38 | - Skanowanie plików przez opcję udostępnienia
39 | - Skanowanie nowo zainstalowanych/aktualizowanych aplikacji
40 | - Możlwiość wywołania skanowania przez aplikacje trzecie
41 | - Automatyczne aktualizacje baz danych
42 | - Automatyczne generowanie baz danych
43 | - Kontrola poprawności baz danych
44 | - Testy
45 | - Lepsze GUI
46 | - Tłumaczenia
47 | - Skanowanie całego systemu z wykorzystaniem roota (niski priorytet)
48 |
49 | Cele
50 | -----
51 | - Szybkokść
52 | - Oszczędność baterii
53 | - Wykorzystywanie możliwie niewielu uprawnień
54 | - Wykorzystywanie bibliotek tylko gdy konieczne
55 |
56 | Uznania
57 | -------
58 | - ClamAV za bazy danych (GPLv2)
59 | - ESET za dodatkowe bazy danych (BSD 2-Clause)
60 | - Nex (@botherder) za dodatkowe bazy danych (CC BY-SA 4.0)
61 | - RecursiveFileObserver.java (GPLv3): Daniel Gultsch, ownCloud Inc., Bartek Przybylski
62 | - Petra Mirelli za tłumaczenia w języku niemieckim, hiszpańskim i włoskim, baner aplikacji/grafikę z funkcjami i różne usprawnienia.
63 | - Jean-Luc Tibaux and Petra Mirelli za tłumaczenia w języku francusim.
64 | - @srccrow za tłumaczenia w języku włoskim.
65 | - @inkhorn za tłumaczenia w języku portugalskim.
66 | - @jontaix za tłumaczenia w języku portugalskim.
67 | - @q1011 za tłumaczenia w języku rosyjskim.
68 | - Oswald van Ginkel za tłumaczenia w języku afrykanerskim.
69 | - huuhaa za tłumaczenia w języku fińskim.
70 | - Ikony: Google/Android/AOSP, Licencja: Apache 2.0, https://google.github.io/material-design-icons/
71 |
72 | Uwagi
73 | -------
74 | - Divested Computing Group nie jest powiązana z Cisco i ESET
75 | - Hypatia nie jest sponsorowana ani zalecana przez Cisco i ESET
76 |
77 | Wesprzyj
78 | -------
79 | - https://divested.dev/donate
80 |
--------------------------------------------------------------------------------
/README.tr.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | Hypatia
4 | =======
5 |
6 | Genel Bakış
7 | --------
8 | Hypatia, Android için dünyanın ilk özgür yazılım kötücül yazılım tarayıcısıdır. ClamAV tarzı imzalardan güç alır.
9 |
10 | [](https://f-droid.org/packages/us.spotco.malwarescanner/)
13 |
14 | Özellikleri
15 | --------
16 | - Pile neredeyse sıfır etki: pil üzerinde hiçbir etki dikkatinizi asla çekmeyecektir
17 | - Son derece hızlı: küçük dosyaları (1MB) <20 ms gibi bir sürede tarar, büyük dosyaları bile (40 MB) 1000 ms gibi bir sürede tarayabilir.
18 | - Verimli bellek kullanımı: varsayılan veri tabanları etkinleştirildiğinde 120 Megabayt altı kullanır.
19 | - Düzenli tarama: /system, dahili depolama, harici depolama ve kurulu uygulamalar arasında seçim sunar
20 | - Gerçek zamanlı tarayıcı: kötücülleri gerçek zamanlı olarak dahili depolamaya yazma/yeniden adlandırma esnasında tespit eder
21 | - Tamamen çevrim dışı: İnternet, sadece imza veri tabanlarını indirmek için kullanılır, dosyalar asla cihazınızdan çıkmaz
22 | - Kalıcılık: başlama veya güncelleme durumunda kendiliğinden yeniden başlayacaktır
23 | - Küçük kod tabanı: 1000 sloc değerinden düşüktür, temel programlama tecrübesi olan biri tarafından bile kontrol edilebilir
24 | - Asgari bağımlılık: uygulama kütüphaneleri sadece gerektiğinde kullanır
25 | - İmza veri tabanları kullanıcının isteğine göre etkinleştirilebilir/devre dışı bırakılabilir
26 |
27 | Teknik Ayrıntılar
28 | ------------------
29 | - İmza veri tabanları ClamAV .hdb (MD5 karma değerleri) ve .hsb (SHA-1/SHA-256) biçiminden oluşur
30 | - İmza veri tabanları dosya sunucuda değişmediyse tekrar indirilmeyecektir (304 not modified)
31 | - İmzalar BloomFilters kullanılarak depolanır
32 | - Dosyaların MD5/SHA-1/SHA-256 karma değerleri tek geçişte hesaplanır
33 | - Gerçek zamanlı tarayıcı çoklu izlek kullanır ve birçok dosyayı eşzamansız olarak taramak için cihazın çekirdek sayısının yarısını kullanacaktır
34 | - Gerçek zamanlı tarama özyinelemeli bir FileObserver (DosyaGözlemcisi) tarafından desteklenmektedir
35 | - Şebeke bağlantıları şu adreslere yapılır: https://divested.dev/MalwareScannerSignatures/hypatia-*-bloom.bin{,.sig}
36 |
37 | Planlanan Güncellemeler
38 | ----------------
39 | - Erişim esnasında tarama için seçenek
40 | - Paylaşılma niyeti olan dosyaları tarama
41 | - Yeni kurulan/güncellenen uygulamaları tarama
42 | - Üçüncü taraf uygulamaların tarama isteği yapmalarına imkân sağlama
43 | - Otomatik veri tabanı güncellemeleri
44 | - Otomatik veri tabanı oluşturma
45 | - Veri tabanı tutarlılık kontrolleri
46 | - Denemeler
47 | - Daha iyi bir grafik arayüz
48 | - Tercümeler
49 | - root kullanılarak tüm sistemi tarama (düşük öncelik)
50 |
51 | Hedefler
52 | -----
53 | - Hızlı olmak
54 | - Pilden çok yememek
55 | - Asgari izin kullanmak
56 | - Kütüphaneleri sadece gerektiğinde kullanmak
57 |
58 | Katkıda Bulunanlar
59 | -------
60 | - Veri tabanları için ClamAV (GPLv2)
61 | - İlave veri tabanları için ESET (2 koşullu BSD)
62 | - İlave veri tabalnları için Nex (@botherder) (CC BY-SA 4.0)
63 | - İlave veri tabanları için Amnesty International (CC BY 2.0)
64 | - İlave veri tabanları için Echap (CC BY 4.0)
65 | - İlave veri tabanları için MalwareBazaar (CC0)
66 | - RecursiveFileObserver.java (GPL-3.0-veya-sonraki): Daniel Gultsch, ownCloud Inc., Bartek Przybylski
67 | - GPGDetachedSignatureVerifier.java (GPL-2.0-veya-sonraki): Federico Fissore, Arduino LLC
68 | - Almanca, İspanyolca, İtalyanca tercümeler, uygulama afişi/işlev grafiği ve çeşitli ayarlar için Petra Mirelli.
69 | - Fransızca tercüme için Jean-Luc Tibaux ve Petra Mirelli.
70 | - İtalyanca tercüme için @srccrow.
71 | - Portekizce tercüme için @inkhorn.
72 | - Portekizce tercüme için @jontaix.
73 | - Rusça tercüme için @q1011.
74 | - Afrikaanca tercüme için Oswald van Ginkel.
75 | - Fince tercüme için huuhaa.
76 | - Lehçe tercüme için Marcin Mikołajczak.
77 | - İspanyolca tercüme için @Manuel-Senpai.
78 | - Almanca tercüme için @Balthazar1234.
79 | - Basitleştirilmiş Çince tercüme için @Sdarfeesh.
80 | - Fransızca ve Türkçe tercüme için @cardpuncher.
81 | - İtalyanca tercüme için Tommaso Fonda.
82 | - Yunanca tercüme için Dimitris Vagiakakos.
83 | - İkonlar: Google/Android/AOSP, Lisans: Apache 2.0, https://google.github.io/material-design-icons/
84 |
85 | Bildirimler
86 | -------
87 | - Divested Computing Group, Cisco veya ESET ile bağlı değildir
88 | - Hypatia, Cisco veya ESET tarafından desteklenmiş veya onaylanmış değildir
89 |
90 | Bağış Yapın
91 | -------
92 | - https://divested.dev/donate
93 | [Banner](https://divestos.org/images/featureGraphics/Hypatia.png)
94 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 33
5 | defaultConfig {
6 | applicationId "us.spotco.malwarescanner"
7 | minSdkVersion 16
8 | targetSdkVersion 32
9 | versionCode 314
10 | versionName "3.14"
11 | resConfigs 'en', 'af', 'cs', 'de', 'el', 'es', 'fi', 'fr', 'gl', 'it', 'pl', 'pt', 'pt-rBR', 'ru', 'tr', 'zh-rCN', 'ar', 'et', 'hr', 'in', 'ja', 'ro', 'sk', 'uk', 'zh-rTW'
12 | }
13 | buildTypes {
14 | debug {
15 | applicationIdSuffix ".debug"
16 | minifyEnabled true
17 | zipAlignEnabled true
18 | }
19 | release {
20 | shrinkResources true
21 | minifyEnabled true
22 | zipAlignEnabled true
23 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
24 | }
25 | }
26 | lint {
27 | abortOnError false
28 | }
29 | packagingOptions {
30 | exclude 'org/bouncycastle/pqc/crypto/picnic/lowmcL1.bin.properties'
31 | exclude 'org/bouncycastle/pqc/crypto/picnic/lowmcL3.bin.properties'
32 | exclude 'org/bouncycastle/pqc/crypto/picnic/lowmcL5.bin.properties'
33 | exclude 'org/bouncycastle/x509/CertPathReviewerMessages.properties'
34 | exclude 'org/bouncycastle/x509/CertPathReviewerMessages_de.properties'
35 | }
36 | }
37 |
38 | dependencies {
39 | implementation 'commons-io:commons-io:2.5'
40 | implementation 'org.bouncycastle:bcpg-jdk15to18:1.77'
41 | implementation 'com.google.guava:guava:33.0.0-jre'
42 | }
43 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
23 | -optimizationpasses 3
24 |
25 | # Disable obfuscation
26 | -dontobfuscate
27 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
12 |
13 |
14 |
15 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
34 |
43 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
60 |
61 |
66 |
67 |
68 |
69 |
72 |
73 |
74 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java:
--------------------------------------------------------------------------------
1 | /*
2 | Hypatia: A realtime malware scanner for Android
3 | Copyright (c) 2017-2018 Divested Computing Group
4 |
5 | This program is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU Affero General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | (at your option) any later version.
9 |
10 | This program is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU Affero General Public License for more details.
14 |
15 | You should have received a copy of the GNU Affero General Public License
16 | along with this program. If not, see .
17 | */
18 | package us.spotco.malwarescanner;
19 |
20 | import android.content.BroadcastReceiver;
21 | import android.content.Context;
22 | import android.content.Intent;
23 | import android.content.pm.PackageManager;
24 |
25 | import java.io.File;
26 | import java.util.HashSet;
27 | import java.util.Objects;
28 |
29 | public class EventReceiver extends BroadcastReceiver {
30 |
31 | @Override
32 | public final void onReceive(Context context, Intent intent) {
33 | switch (Objects.requireNonNull(intent.getAction())) {
34 | case Intent.ACTION_BOOT_COMPLETED:
35 | Utils.considerStartService(context);
36 | break;
37 | case Intent.ACTION_PACKAGE_REPLACED:
38 | if (Objects.requireNonNull(intent.getDataString()).contains(context.getPackageName())) {
39 | Utils.considerStartService(context); //We've been updated, restart service
40 | } else {
41 | //Log.d("Hypatia", "An app has been updated");
42 | //scanApp(context, intent.getDataString());//An app was updated, scan it
43 | }
44 | break;
45 | case Intent.ACTION_PACKAGE_ADDED:
46 | //Log.d("Hypatia", "An app has been installed");
47 | //scanApp(context, intent.getDataString());//An app was installed, scan it
48 | break;
49 | }
50 | }
51 |
52 | private static void scanApp(Context context, String appID) {
53 | if (Utils.isServiceRunning(MalwareScannerService.class, context)) {
54 | HashSet filesToScan = new HashSet<>();
55 | try {
56 | File appToScan = new File(context.getPackageManager().getApplicationInfo(appID, PackageManager.GET_META_DATA).sourceDir);
57 | //Log.d("Hypatia", "Scanning app " + appToScan);
58 | filesToScan.add(appToScan);
59 | } catch (Exception e) {
60 | e.printStackTrace();
61 | }
62 | if (filesToScan.size() > 0) {
63 | new MalwareScanner(null, context, false).executeOnExecutor(Utils.getThreadPoolExecutor(), filesToScan);
64 | }
65 | }
66 | }
67 |
68 | }
69 |
--------------------------------------------------------------------------------
/app/src/main/java/us/spotco/malwarescanner/GPGDetachedSignatureVerifier.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Source: https://github.com/arduino/Arduino/blob/master/arduino-core/src/cc/arduino/contributions/GPGDetachedSignatureVerifier.java
3 | * This file is part of Arduino.
4 | *
5 | * Copyright 2015 Arduino LLC (http://www.arduino.cc/)
6 | *
7 | * Arduino is free software; you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation; either version 2 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program; if not, write to the Free Software
19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 | *
21 | * As a special exception, you may use this file as part of a free software
22 | * library without restriction. Specifically, if other files instantiate
23 | * templates or use macros or inline functions from this file, or you compile
24 | * this file and link it with other files to produce an executable, this
25 | * file does not by itself cause the resulting executable to be covered by
26 | * the GNU General Public License. This exception does not however
27 | * invalidate any other reasons why the executable file might be covered by
28 | * the GNU General Public License.
29 | */
30 |
31 | package us.spotco.malwarescanner;
32 |
33 | import android.util.Log;
34 |
35 | import org.apache.commons.io.IOUtils;
36 | import org.bouncycastle.openpgp.PGPException;
37 | import org.bouncycastle.openpgp.PGPObjectFactory;
38 | import org.bouncycastle.openpgp.PGPPublicKey;
39 | import org.bouncycastle.openpgp.PGPPublicKeyRing;
40 | import org.bouncycastle.openpgp.PGPPublicKeyRingCollection;
41 | import org.bouncycastle.openpgp.PGPSignature;
42 | import org.bouncycastle.openpgp.PGPSignatureList;
43 | import org.bouncycastle.openpgp.PGPUtil;
44 | import org.bouncycastle.openpgp.operator.bc.BcKeyFingerprintCalculator;
45 | import org.bouncycastle.openpgp.operator.bc.BcPGPContentVerifierBuilderProvider;
46 |
47 | import java.io.BufferedInputStream;
48 | import java.io.File;
49 | import java.io.FileInputStream;
50 | import java.io.IOException;
51 | import java.io.InputStream;
52 | import java.util.Iterator;
53 |
54 | public class GPGDetachedSignatureVerifier {
55 |
56 | private final String keyId;
57 |
58 | public GPGDetachedSignatureVerifier() {
59 | this(Utils.SIGNING_KEY_DEFAULT);
60 | }
61 |
62 | public GPGDetachedSignatureVerifier(String keyId) {
63 | this.keyId = keyId;
64 | }
65 |
66 | public boolean verify(File signedFile, File signature, File publicKey) throws IOException {
67 | FileInputStream signatureInputStream = null;
68 | FileInputStream signedFileInputStream = null;
69 | try {
70 | signatureInputStream = new FileInputStream(signature);
71 | PGPObjectFactory pgpObjectFactory = new PGPObjectFactory(signatureInputStream, new BcKeyFingerprintCalculator());
72 |
73 | Object nextObject;
74 | try {
75 | nextObject = pgpObjectFactory.nextObject();
76 | if (!(nextObject instanceof PGPSignatureList)) {
77 | return false;
78 | }
79 | } catch (IOException e) {
80 | return false;
81 | }
82 | PGPSignatureList pgpSignatureList = (PGPSignatureList) nextObject;
83 | assert pgpSignatureList.size() == 1;
84 | PGPSignature pgpSignature = pgpSignatureList.get(0);
85 |
86 | PGPPublicKey pgpPublicKey = readPublicKey(publicKey, keyId);
87 |
88 | pgpSignature.init(new BcPGPContentVerifierBuilderProvider(), pgpPublicKey);
89 | signedFileInputStream = new FileInputStream(signedFile);
90 | pgpSignature.update(IOUtils.toByteArray(signedFileInputStream));
91 |
92 | return pgpSignature.verify();
93 | } catch (PGPException e) {
94 | throw new IOException(e);
95 | } finally {
96 | if (signatureInputStream != null) {
97 | signatureInputStream.close();
98 | }
99 | if (signedFileInputStream != null) {
100 | signedFileInputStream.close();
101 | }
102 | }
103 | }
104 |
105 | private PGPPublicKey readPublicKey(File file, String id) throws IOException, PGPException {
106 | try (InputStream keyIn = new BufferedInputStream(new FileInputStream(file))) {
107 | return readPublicKey(keyIn, id);
108 | }
109 | }
110 |
111 | private PGPPublicKey readPublicKey(InputStream input, String id) throws IOException, PGPException {
112 | PGPPublicKeyRingCollection pgpPub = new PGPPublicKeyRingCollection(PGPUtil.getDecoderStream(input), new BcKeyFingerprintCalculator());
113 |
114 | Iterator keyRingIter = pgpPub.getKeyRings();
115 | while (keyRingIter.hasNext()) {
116 | PGPPublicKeyRing keyRing = keyRingIter.next();
117 |
118 | Iterator keyIter = keyRing.getPublicKeys();
119 | while (keyIter.hasNext()) {
120 | PGPPublicKey key = keyIter.next();
121 |
122 | if (Long.toHexString(key.getKeyID()).toUpperCase().endsWith(id)) {
123 | return key;
124 | } else {
125 | Log.d("Hypatia", "readPublicKey: No match found, have key: " + Long.toHexString(key.getKeyID()).toUpperCase());
126 | }
127 | }
128 | }
129 |
130 | throw new IllegalArgumentException("Can't find encryption key in key ring.");
131 | }
132 |
133 | }
--------------------------------------------------------------------------------
/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java:
--------------------------------------------------------------------------------
1 | /*
2 | Hypatia: A realtime malware scanner for Android
3 | Copyright (c) 2017-2018 Divested Computing Group
4 |
5 | This program is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU Affero General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | (at your option) any later version.
9 |
10 | This program is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU Affero General Public License for more details.
14 |
15 | You should have received a copy of the GNU Affero General Public License
16 | along with this program. If not, see .
17 | */
18 | package us.spotco.malwarescanner;
19 |
20 | import android.app.Notification;
21 | import android.app.NotificationChannel;
22 | import android.app.NotificationManager;
23 | import android.app.Service;
24 | import android.content.Context;
25 | import android.content.Intent;
26 | import android.os.Build;
27 | import android.os.Environment;
28 | import android.os.FileObserver;
29 | import android.os.IBinder;
30 | import android.widget.Toast;
31 |
32 | import java.io.File;
33 | import java.text.NumberFormat;
34 | import java.util.HashSet;
35 | import java.util.concurrent.ThreadPoolExecutor;
36 |
37 | public class MalwareScannerService extends Service {
38 |
39 | private final HashSet malwareMonitors = new HashSet<>();
40 | private ThreadPoolExecutor threadPoolExecutor = null;
41 | private Notification.Builder foregroundNotification = null;
42 | private NotificationManager notificationManager = null;
43 |
44 | @Override
45 | public final IBinder onBind(Intent intent) {
46 | return null;
47 | }
48 |
49 | @Override
50 | public final int onStartCommand(Intent intent, int flags, int startId) {
51 | Utils.setContext(getApplicationContext());
52 | malwareMonitors.clear();
53 | addMalwareMonitor(Environment.getExternalStorageDirectory().toString());
54 |
55 | int threadCount = Utils.getMaxThreads() + malwareMonitors.size();
56 | threadPoolExecutor = Utils.getNewThreadPoolExecutor(threadCount);
57 | threadPoolExecutor.execute(() -> Database.loadDatabase(getApplicationContext(), false, Database.signatureDatabases));
58 |
59 | for (final RecursiveFileObserver malwareMonitor : malwareMonitors) {
60 | threadPoolExecutor.execute(malwareMonitor::startWatching);
61 | }
62 |
63 | notificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
64 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
65 | NotificationChannel foregroundChannel = new NotificationChannel("FOREGROUND", getString(R.string.lblNotificationRealtimeTitle), NotificationManager.IMPORTANCE_LOW);
66 | foregroundChannel.setDescription(getString(R.string.lblNotificationRealtimeDescription));
67 | foregroundChannel.setShowBadge(false);
68 | notificationManager.createNotificationChannel(foregroundChannel);
69 | }
70 | setForeground();
71 | return START_STICKY;
72 | }
73 |
74 | private void addMalwareMonitor(String monitorPath) {
75 | malwareMonitors.add(new RecursiveFileObserver(monitorPath) {
76 | @Override
77 | public void onEvent(int event, String path) {
78 | switch (event) {
79 | case FileObserver.MOVED_TO:
80 | case FileObserver.CLOSE_WRITE:
81 | File file = new File(path);
82 | if (file.exists() && file.length() <= Utils.MAX_SCAN_SIZE_REALTIME) {
83 | HashSet filesToScan = new HashSet<>();
84 | filesToScan.add(file);
85 | new MalwareScanner(null, getApplicationContext(), false).executeOnExecutor(threadPoolExecutor, filesToScan);
86 | }
87 | updateForegroundNotification();
88 | break;
89 | }
90 | }
91 | });
92 | }
93 |
94 | @Override
95 | public final void onDestroy() {
96 | for (RecursiveFileObserver malwareMonitor : malwareMonitors) {
97 | malwareMonitor.stopWatching();
98 | }
99 | malwareMonitors.clear();
100 | System.gc();
101 | Toast.makeText(this, getString(R.string.lblNotificationRealtimeStopped), Toast.LENGTH_SHORT).show();
102 | }
103 |
104 | private void setForeground() {
105 | foregroundNotification =
106 | new Notification.Builder(this)
107 | .setSmallIcon(R.drawable.ic_notification)
108 | .setContentTitle(getText(R.string.lblNotificationRealtimeTitle))
109 | .setContentText(getText(R.string.lblNotificationRealtimeText))
110 | .setPriority(Notification.PRIORITY_MIN)
111 | .setOngoing(true);
112 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
113 | foregroundNotification.setShowWhen(false);
114 | }
115 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
116 | foregroundNotification.setChannelId("FOREGROUND");
117 | }
118 |
119 | startForeground(-1, foregroundNotification.build());
120 | }
121 |
122 | private void updateForegroundNotification() {
123 | foregroundNotification
124 | .setSubText(NumberFormat.getInstance().format(Database.signaturesCount) + " sigs" + " • " + getString(R.string.main_files_scanned_count, NumberFormat.getInstance().format(Utils.FILES_SCANNED)));
125 | notificationManager.notify(-1, foregroundNotification.build());
126 | }
127 |
128 | }
129 |
--------------------------------------------------------------------------------
/app/src/main/java/us/spotco/malwarescanner/RecursiveFileObserver.java:
--------------------------------------------------------------------------------
1 | package us.spotco.malwarescanner;
2 |
3 | import android.os.FileObserver;
4 |
5 | import java.io.File;
6 | import java.util.HashSet;
7 | import java.util.Stack;
8 |
9 | /**
10 | * Copyright (C) 2012 Bartek Przybylski
11 | * Copyright (C) 2015 ownCloud Inc.
12 | * Copyright (C) 2016 Daniel Gultsch
13 | * Taken from siacs/Conversations and tweaked a bit
14 | */
15 | abstract class RecursiveFileObserver {
16 |
17 | private final String path;
18 | private final HashSet mObservers = new HashSet<>();
19 |
20 | public RecursiveFileObserver(String path) {
21 | this.path = path;
22 | }
23 |
24 | public final synchronized void startWatching() {
25 | Stack stack = new Stack<>();
26 | stack.push(path);
27 |
28 | while (!stack.empty()) {
29 | String parent = stack.pop();
30 | mObservers.add(new SingleFileObserver(parent));
31 | final File path = new File(parent);
32 | final File[] files = path.listFiles();
33 | if (files == null) {
34 | continue;
35 | }
36 | for (File file : files) {
37 | if (file.isDirectory() && !file.getName().equals(".") && !file.getName().equals("..")) {
38 | final String currentPath = file.getAbsolutePath();
39 | if (depth(file) <= 8 && !stack.contains(currentPath) && !observing(currentPath)) {
40 | stack.push(currentPath);
41 | }
42 | }
43 | }
44 | }
45 | for (FileObserver observer : mObservers) {
46 | observer.startWatching();
47 | }
48 | }
49 |
50 | private static int depth(File file) {
51 | int depth = 0;
52 | while ((file = file.getParentFile()) != null) {
53 | depth++;
54 | }
55 | return depth;
56 | }
57 |
58 | private boolean observing(String path) {
59 | for (SingleFileObserver observer : mObservers) {
60 | if (path.equals(observer.path)) {
61 | return true;
62 | }
63 | }
64 | return false;
65 | }
66 |
67 | public final synchronized void stopWatching() {
68 | for (FileObserver observer : mObservers) {
69 | observer.stopWatching();
70 | }
71 | mObservers.clear();
72 | }
73 |
74 | abstract public void onEvent(int event, String path);
75 |
76 | private class SingleFileObserver extends FileObserver {
77 |
78 | private final String path;
79 |
80 | public SingleFileObserver(String path) {
81 | super(path);
82 | this.path = path;
83 | }
84 |
85 | @Override
86 | public final void onEvent(int event, String filename) {
87 | RecursiveFileObserver.this.onEvent(event, path + '/' + filename);
88 | }
89 |
90 | }
91 | }
--------------------------------------------------------------------------------
/app/src/main/java/us/spotco/malwarescanner/SignatureDatabase.java:
--------------------------------------------------------------------------------
1 | /*
2 | Hypatia: A realtime malware scanner for Android
3 | Copyright (c) 2017-2018 Divested Computing Group
4 |
5 | This program is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU Affero General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | (at your option) any later version.
9 |
10 | This program is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU Affero General Public License for more details.
14 |
15 | You should have received a copy of the GNU Affero General Public License
16 | along with this program. If not, see .
17 | */
18 | package us.spotco.malwarescanner;
19 |
20 | class SignatureDatabase {
21 |
22 | private final String baseURL;
23 | private final String name;
24 |
25 | public SignatureDatabase(String baseURL, String name) {
26 | this.baseURL = baseURL;
27 | this.name = name;
28 | }
29 |
30 | public final String getBaseUrl() {
31 | return baseURL;
32 | }
33 |
34 | public final String getName() {
35 | return name;
36 | }
37 |
38 | public final String getUrl() {
39 | return baseURL + name;
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/drawable-hdpi/ic_notification.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/drawable-mdpi/ic_notification.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/drawable-xhdpi/ic_notification.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/drawable-xxhdpi/ic_notification.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_monochrome.xml:
--------------------------------------------------------------------------------
1 |
6 |
11 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/content_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_main.xml:
--------------------------------------------------------------------------------
1 |
63 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/values-af/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/values-af/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Kopiereg 2017-2024 Divested Computing Group
4 | Lisensie: GPL-3.0
5 | Weergawe: %s
6 | Aangedryf deur ClamAV tipe stempels
7 |
8 | Laai af deur Tor
9 | Laai tans af deur Tor, dit mag \'n oogknip neem…
10 | Orbot of InviZible is nie geïnstalleer nie!
11 | Dateer databasisse op
12 | Erkennings
13 | Skandeer sisteem
14 | Skandeer APKs
15 | Skandeer Interne Stoorruimte
16 | Skandeer Eksterne Stoorruimte
17 | Wanware Opgetel
18 | Gebruik om te waarsku wanneer wanware opgetel word
19 | Intydse Skandering
20 | Gebruik om aantal lêers wat geskandeer is aan te dui en die agtergrond diens aktief te hou
21 | Bekende wanware sal intyds opgetel word
22 | Hypatia: Intydse Skandering Gestaak
23 | Wanware Opgetel:
24 | Intydse Skandeerder
25 |
26 | Dateer tans %s databasisse op…
27 | Suksesvol afgelaai
28 | Lêer nie afgelaai nie, respons kode %s
29 | Geen databasis beskikbaar, skandeer dus nie…
30 | Vrygestel op %s
31 | Lêer nie verander
32 | sedert %s
33 | Kon nie aflaai nie, kyk dalk na logcat
34 |
35 | Begin tans skandering…
36 | Kanseleer tans skandering…
37 | %s lêers wag hul beurt af
38 | Laai tans databasis af…
39 | Databasis gelaai met %s huts stempels
40 | Huts tans lêers…
41 | Hutse is bereken vir alle verkose lêers
42 | Al %s hutse is met die stempel databasis vergelyk
43 | Skandering voltooid in %s sekondes @ %sMB/s!
44 | %s lêers geskandeer
45 |
46 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ar/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | الترخيص: GPL-3.0
4 | الإصدار: %s
5 | نزّل عبر تور
6 | جارِ التنزيل عبر تور، قد يستغرق هذا بعض الوقت…
7 | لم يتم تثبيت Orbot!
8 | تحديث قواعد البيانات
9 | تجاوز خادم قاعدة البيانات
10 | فحص/النظام
11 | افحص ملفات APK للتطبيقات
12 | افحص التخزين الداخلي
13 | يُستخدم للتنبيه عند اكتشاف البرامج الخبيثة
14 | يُستخدم لإظهار عداد الملفات المفحوصة والحفاظ على الخدمة الخلفية
15 | سيتم اكتشاف البرامج الخبيثة المعروفة في الوقت الفعلي
16 | Hypatia: توقف الفحص في الوقت الفعلي
17 | لا توجد قاعدة بيانات متاحة، لا يتم الفحص…
18 | حقوق الطبع والنشر 2017-2024 لDivested Computing Group
19 | مدعوم بتوقيعات نمط ClamAV
20 | افحص التخزين الخارجي
21 | اكتشاف البرامج الخبيثة
22 | فاحص في الوقت الفعلي
23 | فاحص في الوقت الفعلي
24 | اكتشاف البرامج الخبيثة:
25 | يبدأ الفحص…
26 | صفّر
27 | تجاوز
28 | جارِ تحديث %s قواعد بيانات…
29 | نُزّل بنجاح
30 | لم ينُزّل الملف، رمز الاستجابة %s
31 | أُصدر في %s
32 | منذ %s
33 | تم التحقق من جميع %s تجزئات مقابل قواعد بيانات التوقيع
34 | فحصت %s ملف
35 | التحكم بالفحص
36 | مفتاح توقيع قاعدة البيانات
37 | لا يوجد شبكة متصلة!
38 | تخطي الإجراء، قاعدة البيانات تُحمّل!
39 | حدثت كافة قواعد البيانات!
40 | البحث
41 | احذف
42 | حُذفت!
43 | تجاهل
44 | لم تُعثر على أي تطابقات :)
45 | تأكيد البحث
46 | جارِ تحميل قاعدة البيانات…
47 | حمّلت قاعدة بيانات ب %s توقيعات
48 | جارِ تجزئة الملفات…
49 | التجزئات المحسوبة لجميع الملفات
50 | هل أنت متأكد أنك تريد فتح VirusTotal.com في متصفح الويب الخاص بك باستخدام التجزئة التالية؟
51 | تأكيد الحذف
52 | هل أنت متأكد أنك تريد حذف الملف التالي؟
53 | فشل في الحذف!
54 | مُتجاهل!
55 | ألغِ التثبيت
56 | كتابة ملفات الاختبار الذاتي
57 | قاعدة البيانات الممتدة
58 | فعّل قاعدة البيانات الممتدة؟
59 | تأكيد التنزيل
60 | تخطي الإجراء، التحديث يعمل!
61 | الخوادم الأساسية
62 | مرآة Cloudflare
63 | فاحص الروابط Hypatia
64 | فاحص الروابط
65 | فعّل فاحص الروابط؟
66 | [تجريبي]\nسيؤدي هذا إلى تنزيل قاعدة بيانات إضافية للمجالات.\nسيتم التحقق من أي مجالات موجودة في محتوى الشاشة من خلال قاعدة البيانات.\nيتطلب هذا منح إذن خدمة إمكانية الوصول يدويًا.\nيمكن أن يكون لهذا تأثير كبير على الأداء على الشاشات التي تحتوي على كميات كبيرة من النص.
67 | يستخرج المجالات من جميع محتويات النص على الشاشة ويقارنها بقائمة الحظر
68 | اكتُشف رابط ضار:
69 | جارِ إلغاء الفحص…
70 | %s ملفات معلقة الفحص
71 | تم الانتهاء من الفحص في %s ثانية @ %sMB/s!
72 | تخطي الإجراء، الفحص يعمل!
73 | تم الاختبار الذاتي بنجاح.
74 | فشل الاختبار الذاتي!
75 | عُثرت على تطابقات! :(
76 | [تجريبي]\nسيسمح هذا باكتشاف حوالي 40 مليون توقيع إضافي.\nيتطلب هذا تنزيلًا بحجم 200 ميجابايت، وسيؤدي إلى إبطاء بدء التشغيل بما يزيد عن دقيقتين، وسيزيد من استخدام ذاكرة الوصول العشوائي للتطبيق، وسيزيد من معدل الإيجابيات الخاطئة.\nيتم تحديث قاعدة البيانات هذه كل ثلاثة أشهر فقط.
77 | يبدو أنك تستخدم اتصالاً محدودًا. هل أنت متأكد من أنك تريد تحديث قواعد البيانات؟\nقد يتم تنزيل ما يصل إلى %s ميغابايت من البيانات.
78 | كتبت ملفات الاختبار!
79 | الملف لم يتغير
80 | فشل التنزيل، تحقق من logcat
81 |
--------------------------------------------------------------------------------
/app/src/main/res/values-cs/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | • Petra Mirelli: německý/španělský/francouzský/italský překlad, banner aplikace, různé úpravy
5 | • Jean-Luc Tibaux: francouzský překlad
6 | • @srccrow: italský překlad
7 | • @inkhorn: portugalský překlad
8 | • @jontaix: portugalský překlad
9 | • @lucasmz: Brazilian Portuguese Translations
10 | • @q1011: ruský překlad
11 | • Oswald van Ginkel: africký překlad>
12 | • huuhaa: finský překlad
13 | • Marcin Mikołajczak: polský překlad
14 | • @Manuel-Senpai: španělský překlad
15 | • @Balthazar1234: německý překlad
16 | • @Sdarfeesh: překlad do zjednodušené čínštiny
17 | • @cardpuncher: francouzský/turecký překlad
18 | • Tommaso Fonda: italský překlad
19 | • Dimitris Vagiakakos: řecký překlad
20 | • @gallegonovato: Spanish Translations
21 | • @Fjuro: Czech Translations
22 | • @thereisnoanderson: German Translations
23 | • @ghose: Galician Translations
24 | • @yurtpage: Russian Translations
25 | • @eloitor: Translations work
26 | • ClamAV by Cisco: databáze podpisů
27 | • ESET: databáze podpisů
28 | • Nex (@botherder): databáze podpisů
29 | • Amnesty International: databáze podpisů
30 | • Echap: databáze podpisů
31 | • MalwareBazaar: databáze podpisů
32 | • VirusShare: databáze podpisů
33 | • RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski
34 | • GPGDetachedSignatureVerifier.java: Federico Fissore, Arduino LLC
35 | • Google: ikona aplikace
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/values-de/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/values-el/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-el/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Πνευματικά δικαιώματα 2017-2024 Divested Computing Group
4 | Άδεια: GPL-3.0
5 | Έκδοση: %s
6 | Υποστηρίζεται από υπογραφές τύπου ClamAV
7 |
8 | Πραγματοποιείται Λήψη μέσω Tor
9 | Λήψη μέσω Tor, αυτό μπορεί να πάρει κάποιο χρόνο…
10 | Το Orbot δεν είναι εγκατεστημένο!
11 | Ενημέρωση βάσεων δεδομένων
12 | Παράκαμψη διακομιστή βάσης δεδομένων
13 | Credits
14 | Σάρωση /system
15 | Σάρωση των APKs των εφαρμογών
16 | Σάρωση εσωτερικού χώρου αποθήκευσης
17 | Σάρωση εξωτερικού χώρου αποθήκευσης
18 | Ανίχνευση κακόβουλου λογισμικού
19 | Ειδοποίησέ με όταν ανιχνεύεται κακόβουλο λογισμικό
20 | Σάρωση σε πραγματικό χρόνο
21 | Χρησιμοποιείται για να εμφανίζει τον αριθμό των αρχείων που σαρώνονται και για να διατηρεί την υπηρεσία στο παρασκήνιο
22 | Το γνωστό κακόβουλο λογισμικό θα ανιχνεύεται σε πραγματικό χρόνο
23 | Hypatia: Η σάρωση σε πραγματικό χρόνο σταμάτησε
24 | Ανιχνεύτηκε κακόβουλο λογισμικό:
25 | Σάρωση σε πραγματικό χρόνο
26 | Επαναφορά
27 | Παράκαμψη
28 |
29 | Ενημέρωση %s βάσεων δεδομένων…
30 | Χρήση διακομιστή %s
31 | Επιτυχής λήψη
32 | Δεν έγινε η λήψη του αρχείου, κωδικός απόκρισης %s
33 | Δεν υπάρχει διαθέσιμη βάση δεδομένων, δεν γίνεται σάρωση…
34 | Δημοσιεύτηκε στις %s
35 | Το αρχείο δεν άλλαξε
36 | από %s
37 | Αποτυχία λήψης, ελέγξτε το logcat
38 |
39 | Έναρξη σάρωσης…
40 | Ακύρωση σάρωσης…
41 | %s αρχεία περιμένουν σάρωση
42 | Φόρτωση βάσης δεδομένων…
43 | Φορτώθηκε βάση δεδομένων με %s υπογραφές
44 | Καταγραφή αρχείων…
45 | Υπολογίστηκαν τα hashes για όλα τα αρχεία
46 | Έλεγθηκαν και τα %s hashes ως προς τις βάσεις υπογραφών
47 | Η σάρωση ολοκληρώθηκε σε %s δευτερόλεπτα @ %sMB/s!
48 | %s αρχεία σαρώθηκαν
49 | Έλεγχος σάρωσης
50 | Παράλειψη ενέργειας, μια σάρωση βρίσκεται ήδη σε εξέλιξη!
51 | Κλειδί υπογραφής της βάσης δεδομένων
52 |
53 |
--------------------------------------------------------------------------------
/app/src/main/res/values-es/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | • Petra Mirelli: Traducciones alemán/español/francés/italiano, Banner de la App, Ajustes varios
5 | • Jean-Luc Tibaux: Traducciones al francés
6 | • @srccrow: Traducciones al italiano
7 | • @inkhorn: Traducciones al portugués
8 | • @jontaix: Traducciones al portugués
9 | • @lucasmz: Brazilian Portuguese Translations
10 | • @q1011: Traducciones al ruso
11 | • Oswald van Ginkel: Traducciones al afrikaans
12 | • huuhaa: Traducciones al finés
13 | • Marcin Mikołajczak: Traducciones al polaco
14 | • @Manuel-Senpai: Traducciones al español
15 | • @Balthazar1234: Traducciones al alemán
16 | • @Sdarfeesh: Traducciones al chino simplificado
17 | • @cardpuncher: Traducciones francés/turco
18 | • Tommaso Fonda: Traducciones al italiano
19 | • Dimitris Vagiakakos: Traducciones del griego
20 | • @gallegonovato: Spanish Translations
21 | • @Fjuro: Czech Translations
22 | • @thereisnoanderson: German Translations
23 | • @ghose: Galician Translations
24 | • @yurtpage: Russian Translations
25 | • @eloitor: Translations work
26 | • ClamAV by Cisco: Bases de datos de firmas
27 | • ESET: Bases de datos de firmas
28 | • Nex (@botherder): Bases de datos de firmas
29 | • Amnistía Internacional: Bases de datos de firmas
30 | • Echap: Bases de datos de firmas
31 | • MalwareBazaar: Bases de datos de firmas
32 | • VirusShare: Bases de datos de firmas
33 | • RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski
34 | • GPGDetachedSignatureVerifier.java: Federico Fissore, Arduino LLC
35 | • Google: Icono de la aplicación
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/values-fi/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/values-fr/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | • Petra Mirelli: traductions en allemand/espagnol/français/italien, bannière de l\'application, ajustements divers
5 | • Jean-Luc Tibaux: traduction française
6 | • @srccrow: traduction italienne
7 | • @inkhorn: traduction portugaise
8 | • @jontaix: traduction portugaise
9 | • @lucasmz: Brazilian Portuguese Translations
10 | • @q1011: traduction russe
11 | • Oswald van Ginkel: traduction en afrikaans>
12 | • huuhaa: traduction finlandaise
13 | • Marcin Mikołajczak: traduction polonaise
14 | • @Manuel-Senpai: traduction espagnole
15 | • @Balthazar1234: traduction allemande
16 | • @Sdarfeesh: traduction en chinois simplifié
17 | • @cardpuncher: traduction française et turque
18 | • Tommaso Fonda: traduction italienne
19 | • Dimitris Vagiakakos: traduction grecque
20 | • @gallegonovato: Spanish Translations
21 | • @Fjuro: Czech Translations
22 | • @thereisnoanderson: German Translations
23 | • @ghose: Galician Translations
24 | • @yurtpage: Russian Translations
25 | • @eloitor: Translations work
26 | • ClamAV par Cisco: bases de données de signatures
27 | • ESET: bases de données de signatures
28 | • Nex (@botherder): bases de données de signatures
29 | • Amnesty International: bases de données de signatures
30 | • Echap: bases de données de signatures
31 | • MalwareBazaar: bases de données de signatures
32 | • VirusShare: bases de données de signatures
33 | • RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski
34 | • GPGDetachedSignatureVerifier.java: Federico Fissore, Arduino LLC
35 | • Google: icône de l\'application
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/values-gl/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/values-in/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | [PILIHAN INI MASIH DALAM TAHAP EKSPERIMENTAL]\nPilihan ini akan mengunduh pangkalan data tambahan domain-domain.\nSegala domain yang terdeteksi pada layar isi akan diperiksa menurut pangkalan data.\nHal ini membutuhkan izin aksesibilitas secara manual.\nPilihan ini dapat memberikan pengaruh yang signifikan pada layar yang menampilkan teks dalam jumlah besar.
4 | Peladen pangkalan-data mengambil alih
5 | Hak Cipta 2017–2024 Divested Computing Group
6 | Lisensi: GPL-3.0
7 | Versi: %s
8 | Diberdayakan oleh tanda tangan ClamAV
9 | Unduh dalam jaringan Tor
10 | Orbot tidak terinstal!
11 | Mutakhirkan pangkalan data
12 | Pengakuan diberikan kepada
13 | Pindai /sistem
14 | Pindai berkas APK aplikasi
15 | Mengunduh dalam jaringan Tor. Proses ini akan memakan waktu…
16 | Pindai Penyimpanan Eksternal
17 | Pindai Penyimpanan Internal
18 | Deteksi Perangkat Perusak (Malware)
19 | Digunakan untuk menampilkan jumlah berkas yang dipindai dan mempertahankan agar aplikasi berjalan di latar
20 | Notifikasi perangkat perusak yang terdeteksi dalam waktu langsung
21 | Hypatia: Pemindaian secara Waktu Langsung Berhenti
22 | Atur ulang
23 | Ambil alih
24 | Menggunakan peladen %s
25 | Pemindaian Waktu Langsung
26 | Berkas tidak terunduh, kode respons %s
27 | Dirilis pada %s
28 | Berkas tidak diubah
29 | semenjak %s
30 | Pengunduhan gagal, memeriksa logcat
31 | Pemindaian dibatalkan…
32 | pemindaian %s berkas tertunda
33 | Memuat pangkalan data…
34 | Pangkalan data dimuat dengan %s tanda tangan
35 | Memilah berkas…
36 | Menghitung pilahan seluruh berkas
37 | Memeriksa seluruh %s pilahan terhadap tanda tangan pangkalan data
38 | Pemindaian selesai dilakukan dalam kurun %s detik @ %sMB/dtk!
39 | Sebanyak %s berkas terpindai
40 | Kontrol Pemindai
41 | Tindakan dilongkapi. Saat ini pemindaian sedang berjalan!
42 | Pangkalandata kunci penanda-tangan
43 | Saat ini Anda tidak terhubung ke jaringan!
44 | Swauji gagal!
45 | Semua pangkalan data sudah dimutakhirkan!
46 | Pelongokan
47 | Hapus
48 | Dihapus!
49 | Abaikan
50 | Konfirmasikan pelongokan
51 | Konfirmasikan penghapusan berkas
52 | Anda yakin ingin menghapus berkas ini?
53 | Gagal menghapus!
54 | Diabaikan!
55 | Copot pemasangan
56 | Konfirmasikan pengunduhan
57 | Anda ternyata sedang menggunakan koneksi bermeter. Anda yakin ingin memutakhirkan pangkalan data\nKemungkinan besar-data yang akan diunduh adalah sebanyak %s megabita.
58 | Tindakan dilongkapi. Saat ini pemutakhiran pangkalan data sedang berjalan!
59 | Peladen Utama
60 | Tautan jahat terdeteksi:
61 | Pemindai Tautan
62 | Nyalakan pemindaian tautan?
63 | Digunakan untuk memperingatkan Anda ketika perangkat perusak terdeteksi
64 | Pemindai Waktu Langsung
65 | Terdeteksi Perangkat Perusak:
66 | Memutakhirkan sebanyak %s pangkalan data…
67 | Pengunduhan berhasil
68 | Tidak ada pangkalan data. Pemindaian tidak dilakukan…
69 | Pemindaian dimulai…
70 | Tindakan dilongkapi. Saat ini pangkalan data sedang dimuat!
71 | Swauji berhasil.
72 | Anda yakin ingin membuka laman VirusTotal.com pada leramban web dengan pilahan berikut?
73 | [PILIHAN INI MASIH DALAM TAHAP EKSPERIMENTAL]\nPilihan ini akan mendeteksi sekitar ~40 juta tanda tangan.\nPilihan ini juga membutuhkan pengunduhan data sebesar 200 MB yang akan memperlambat jalannya aplikasi, meningkatkan penggunaan RAM, dan memperbesar kemungkinan hasil pemindaian positif palsu.\nPangkalan-pangkalan data ini hanya akan dimutakhirkan tiap triwulan sekali.
74 |
--------------------------------------------------------------------------------
/app/src/main/res/values-it/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | • Petra Mirelli: traduzione in tedesco/spagnolo/francese/italiano, banner dell\'app, vari aggiustamenti
5 | • Jean-Luc Tibaux: traduzione in francese
6 | • @srccrow: traduzione in italiano
7 | • @inkhorn: traduzione in portoghese
8 | • @jontaix: traduzione in portoghese
9 | • @lucasmz: Brazilian Portuguese Translations
10 | • @q1011: traduzione in russo
11 | • Oswald van Ginkel: traduzione in afrikaans>
12 | • huuhaa: traduzione in finlandese
13 | • Marcin Mikołajczak: traduzione in polacco
14 | • @Manuel-Senpai: traduzione in spagnolo
15 | • @Balthazar1234: traduzione in tedesco
16 | • @Sdarfeesh: traduzione in cinese semplificato
17 | • @cardpuncher: traduzione in francese/turco
18 | • Tommaso Fonda: traduzione in italiano
19 | • Dimitris Vagiakakos: traduzione in greco
20 | • @gallegonovato: traduzione in spagnolo
21 | • @Fjuro: traduzione in ceco
22 | • @thereisnoanderson: German Translations
23 | • @ghose: Galician Translations
24 | • @yurtpage: Russian Translations
25 | • @eloitor: Translations work
26 | • ClamAV by Cisco: database delle firme
27 | • ESET: database delle firme
28 | • Nex (@botherder): database delle firme
29 | • Amnesty International: database delle firme
30 | • Echap: database delle firme
31 | • MalwareBazaar: database delle firme
32 | • VirusShare: database delle firme
33 | • RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski
34 | • GPGDetachedSignatureVerifier.java: Federico Fissore, Arduino LLC
35 | • Google: icona dell\'app
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ja/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | データベースを更新
4 | マルウェアが検出されたときに使用
5 | 常時スキャン
6 | 既知のマルウェアはリアルタイムに検出されます
7 | マルウェア検出:
8 | サーバー %s を利用します
9 | データベースなし、スキャンしません
10 | %sから
11 | ダウンロード失敗、 logcatを確認すること
12 | スキャン開始
13 | ファイルをハッシュしています・・・
14 | %sハッシュ数をシグネチャーデータベースと照合完了
15 | 対応を保留、スキャンはすでに実行中!
16 | 自己テストに成功。
17 | 全データベースを更新しました!
18 | 削除確認
19 | アンインストール
20 | 自己テストファイルを生成
21 | データベースを拡張する
22 | ダウンロードを確認
23 | アクションをスキップして、更新を実行しています。
24 | Copyright 2017-2024 Divested Computing Group
25 | バージョン: %s
26 | Tor経由でダウンロード
27 | ClamAVシグネチャで強化されています
28 | Tor経由でダウンロード中。時間がかかります・・・
29 | Orbotがインストールされていません!
30 | データベース %sシグネチャー を読み込みました
31 | データベースサーバーを上書き
32 | 著作
33 | /systemをスキャン
34 | License: GPL-3.0
35 | アプリAPKをスキャン
36 | 内部ストレージをスキャン
37 | 外部ストレージをスキャン
38 | マルウェアを検出
39 | バックグラウンドサービスを維持するためと、スキャンされたファイルを表示するために利用
40 | Hypatia: リアルタイム検出が停止されました
41 | リアルタイムスキャナ
42 | 上書き
43 | ダウンロード成功
44 | 初期化
45 | %s データベースを更新中・・・
46 | コード %s、ファイルのダウンロード失敗
47 | %s にリリースされました
48 | ファイル変更なし
49 | データベースを読み込んでいます・・・
50 | スキャンを中断しようとしています・・・
51 | %s ファイルがスキャン待ちです
52 | 全ファイルのハッシュを計算しました
53 | %s 秒 %sMB/s でスキャン完了!
54 | スキャン設定
55 | %sファイルがスキャンされました
56 | 自己テストに失敗!
57 | 一致しています!
58 | データベース署名鍵
59 | 対応を無視、データベースは読み込み中!
60 | 調べる
61 | 削除する
62 | 無視
63 | 削除できませんでした!
64 | ネットワーク接続なし!
65 | このファイルを本当に削除してええのか?
66 | 削除されました!
67 | 一致なし
68 | VirusTotal.comをブラウザで開き、以下のハッシュを調べますか?
69 | 調べますか?
70 | 無視されました!
71 | 拡張データベースを使いますか?
72 | [実験的]
73 | \nこれにより、約 4,000 万の追加のシグネチャを検出できるようになります。
74 | \nこれには 200 MB のダウンロードが必要で、起動が 2 分以上遅くなり、アプリの RAM 使用量が増加し、誤検出率が高くなります。
75 | \nこのデータベースは四半期ごとにのみ更新されます。
76 | 従量制接続を使用しているようです。データベースを更新してもよろしいですか?
77 | \n最大 %s MBのデータがダウンロードされる可能性があります。
78 | テストファイルを作成しました!
79 | メインサーバー
80 | Hypatiaリンクスキャナ
81 | Cloudflareミラー
82 | すべての画面テキストコンテンツからドメインを抽出し、ブロックリストと照合します
83 | リンクスキャナを有効化しますか?
84 | [実験的]
85 | \nこれにより、ドメインの追加データベースがダウンロードされます。
86 | \n画面コンテンツで見つかったドメインはすべて、データベースと照合されます。
87 | \nこれには、アクセシビリティ サービスの権限を手動で付与する必要があります。
88 | \nこれにより、大量のテキストを含む画面でパフォーマンスに重大な影響が出る可能性があります。
89 | 悪意のあるリンク検出:
90 | リンクスキャナ
91 |
--------------------------------------------------------------------------------
/app/src/main/res/values-pl/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/values-pl/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Prawa autorskie 2017-2024 Divested Computing Group
4 | Licencja: GPL-3.0
5 | Wersja: %s
6 | Oparto o sygnatury w stylu ClamAV
7 |
8 | Pobierz przez Tor
9 | Pobieranie przez Tor, może to zająć chwilę…
10 | Orbot nie jest zainstalowany!
11 | Aktualizuj bazy danych
12 | Zastąpienia serwera bazy danych
13 | Uznania
14 | Skanuj /system
15 | Skanuj pliki APK aplikacji
16 | Skanuj pamięć wewnętrzną
17 | Skanuj pamięć zewnętrzną
18 | Wykrywanie złośliwego oprogramowania
19 | Wykorzystywane do informowania, gdy wykryto złośliwe oprogramowanie
20 | Skaner w czasie rzeczywistym
21 | Wykorzystywane dla wyświetlania licznika skanowanych plików i utrzymywania usługi w tle
22 | Znane złośliwe oprogramowanie będzie wykrywane w czasie rzeczywistym
23 | Hypatia: Zatrzymano skanowanie w czasie rzeczywistym
24 | Wykryto złośliwe oprogramowanie:
25 | Skaner w czasie rzeczywistym
26 | Resetuj
27 | Nadpisz
28 |
29 | Aktualizacja bazy danych %s…
30 | Wykorzystywanie serwera %s
31 | Pomyślnie pobrano
32 | Nie pobrano plikku, kod odpowiedzi %s
33 | Baza danych nie jest dostępna, nie skanuję…
34 | Wydano %s
35 | Nie zmieniono pliku
36 | Od %s
37 | Nie udało się pobrać, sprawdź logcat
38 |
39 | Rozpoczynanie skanowania…
40 | Anulowanie skanowania…
41 | %s plików oczekuje na skanowanie
42 | Ładowanie bazy danych…
43 | Załadowano bazę danych z %s sygnaturami
44 | Hashowanie plików…
45 | Obliczono hashe dla wszystkich plików
46 | Porównano wszystkie %s hashów z bazą danych sygnatur
47 | Ukończono skanowanie w %s sekund @ %sMB/s!
48 | Zeskanowano %s plików
49 |
50 |
--------------------------------------------------------------------------------
/app/src/main/res/values-pt-rBR/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | • Petra Mirelli: Traduções em Alemão/Espanhol/Francês/Italiano, banner do app, e modificações variadas
5 | • Jean-Luc Tibaux: Traduções em Francês
6 | • @srccrow: Traduções em Italiano
7 | • @inkhorn: Traduções em Português
8 | • @jontaix: Traduções em Português
9 | • @lucasmz: Traduções em Português Brasileiro
10 | • @q1011: Traduções em Russo
11 | • Oswald van Ginkel: Traduções em Africâner>
12 | • huuhaa: Traduções em Finlandês
13 | • Marcin Mikołajczak: Traduções em Polonês
14 | • @Manuel-Senpai: Traduções em Espanhol
15 | • @Balthazar1234: Traduções em Alemão
16 | • @Sdarfeesh: Traduções em Chinês Simplificado
17 | • @cardpuncher: Traduções em Francês/Turco
18 | • Tommaso Fonda: Traduções em Italiano
19 | • Dimitris Vagiakakos: Traduções em Grego
20 | • @gallegonovato: Traduções em Espanhol
21 | • @Fjuro: Traduções em Checo
22 | • @thereisnoanderson: Traduções em Alemão
23 | • @ghose: Traduções em Galego
24 | • @yurtpage: Russian Translations
25 | • @eloitor: Translations work
26 | • ClamAV by Cisco: Bancos de dados de assinaturas
27 | • ESET: Bancos de dados de assinaturas
28 | • Nex (@botherder): Bancos de dados de assinaturas
29 | • Amnesty International: Bancos de dados de assinaturas
30 | • Echap: Bancos de dados de assinaturas
31 | • MalwareBazaar: Bancos de dados de assinaturas
32 | • VirusShare: Bancos de dados de assinaturas
33 | • RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski
34 | • GPGDetachedSignatureVerifier.java: Federico Fissore, Arduino LLC
35 | • Google: ícone do app
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/values-pt/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ro/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Orbot nu este instalat!
4 | Actualizează bazele de date
5 | Descarcă prin Tor
6 | Scanează /system
7 | Scanează stocarea externă
8 | Malware detectat
9 | Scanează aplicațiile cu extensia APK
10 | Se actualuzează %s bazele de date…
11 | Descărcare reușită
12 | Lansat pe data de %s
13 | Scanare începută…
14 | Scanarea se anulează…
15 | Scanarea completată în %s secunde @ %sMB/s!
16 | %s fișiere scanate
17 | Control de scanare
18 | Acțiune ignorată, scanare in curs de desfășurare!
19 | Nici o rețea conectată!
20 | Toate bazele de date au fost actualizate!
21 | Șters!
22 | Ignoră
23 | Sunteți sigur(ă) că doriți să stergeți fișierul următor?
24 | Dezinstalează
25 | Baze de date extinse
26 | Activați bazele de date extinse?
27 | Acțiune ignorată, actualizare in curs!
28 | Hypatia Link Scanner
29 | Link cu conținut malițios detectat:
30 | Porniți link scanner?
31 | Baza de date se încarcă…
32 | Baza de date încărcată cu %s semnături
33 | %s fișiere în curs de scanare
34 | Șterge
35 | Confirmați ștergerea
36 | Ștergere eșuată!
37 | Ignorat!
38 | Confirma-ți descărcarea
39 | Serverele principale
40 | Link Scanner
41 | Versiune: %s
42 | Malware Detectat:
43 | Resetează
44 | Scanează stocarea internă
45 | Se descarcă prin Tor, asta poate dura un timp…
46 | Fișierul a rămas neschimbat
47 | Drepturi de autor 2017-2024 Divested Computing Group
48 | Licență: GPL-3.0
49 | Se utilizează semnături de tip ClamAV
50 | Credite
51 | Scaner in timp real
52 | Malware-urile cunoscute vor fi detectate in timp real
53 | Hypatia: Scanarea în timp real a fost oprită
54 | Scaner in timp real
55 | Se utilizează serverul %s
56 | Fișierul nu a fost descărcat, cod de răspuns %s
57 | Nicio bază de date disponibilă, scanare anulată…
58 | din data de %s
59 | Descărcare eșuată, verificați logcat
60 | Cheia de semnare a bazei de date
61 | Acțiunea a fost ignorată, bază de date in curs de încărcare!
62 | Utilizat pentru a alerta când este detectat malware
63 | Suprascriere
64 | Hash-ul calculat pentru toate fișierele
65 | Sunteți sigur(ă) că doriți să deschideți VirusTotal.com în browserul dvs. web cu următorul hash?
66 | Server Cloudflare
67 | Se pare că aveți o conexiune contorizată. Sunteți sigur(ă) că doriți să actualizați bazele de date?
68 | \nSe pot descărca până la %s megabiti de date.
69 | Extrage domeniile din tot conținutul text al ecranului și le verifică în raport cu o listă neagră
70 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ru/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/values-tr/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | • Petra Mirelli: Almanca/İspanyolca/Fransızca/İtalyanca Tercüme, Uygulama Afişi, Çeşitli Değişiklikler
5 | • Jean-Luc Tibaux: Fransızca Tercüme
6 | • @srccrow: İtalyanca Tercüme
7 | • @inkhorn: Portekizce Tercüme
8 | • @jontaix: Portekizce Tercüme
9 | • @lucasmz: Brazilian Portuguese Translations
10 | • @q1011: Rusça Tercüme
11 | • Oswald van Ginkel: Afrikaanca Tercüme>
12 | • huuhaa: Fince Tercüme
13 | • Marcin Mikołajczak: Lehçe Tercüme
14 | • @Manuel-Senpai: İspanyolca Tercüme
15 | • @Balthazar1234: Almanca Tercüme
16 | • @Sdarfeesh: Basitleştirilmiş Çince Tercüme
17 | • @cardpuncher: Fransızca ve Türkçe Tercüme
18 | • Tommaso Fonda: İtalyanca Tercüme
19 | • Dimitris Vagiakakos: Yunanca Tercüme
20 | • @gallegonovato: Spanish Translations
21 | • @Fjuro: Czech Translations
22 | • @thereisnoanderson: German Translations
23 | • @ghose: Galician Translations
24 | • @yurtpage: Russian Translations
25 | • @eloitor: Translations work
26 | • Cisco tarafından ClamAV: İmza Veri Tabanları
27 | • ESET: İmza Veri Tabanları
28 | • Nex (@botherder): İmza Veri Tabanları
29 | • Uluslararası Af Örgütü: İmza Veri Tabanları
30 | • Echap: İmza Veri Tabanları
31 | • MalwareBazaar: İmza Veri Tabanları
32 | • VirusShare: İmza Veri Tabanları
33 | • RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski
34 | • GPGDetachedSignatureVerifier.java: Federico Fissore, Arduino LLC
35 | • Google: Uygulama İkonu
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 版权所有 2017-2024 Divested Computing Group
4 | 许可证:GPL-3.0
5 | 版本:%s
6 | 由 ClamAV 数据库特征码提供支持
7 | 通过 Tor 下载
8 | 正在通过 Tor 下载,这可能需要一段时间…
9 | Orbot 未安装!
10 | 更新数据库
11 | 数据库服务器覆盖
12 | 致谢
13 | 扫描 /system
14 | 扫描应用软件包
15 | 扫描内部存储空间
16 | 扫描外部存储空间
17 | 恶意程序检测
18 | 用于在检测到恶意程序时发出警报
19 | 实时扫描
20 | 用于显示已扫描文件数量和维护后台服务
21 | 实时检测已知恶意程序
22 | Hypatia:实时扫描已停止
23 | 检测到恶意程序:
24 | 实时扫描
25 | 重置
26 | 覆盖
27 | 正在更新 %s 个数据库…
28 | 使用服务器 %s
29 | 下载成功
30 | 文件未下载,响应代码 %s
31 | 无可用数据库,不执行扫描…
32 | 发布于 %s
33 | 文件无变更
34 | (%s 以来)
35 | 下载失败,查看 Logcat
36 | 开始扫描…
37 | 正在取消扫描…
38 | %s 个文件等待扫描
39 | 正在加载数据库…
40 | 已加载带有 %s 个特征码的数据库
41 | 正在计算文件哈希值…
42 | 已计算所有文件的哈希值
43 | 已根据特征码数据库检查全部 %s 哈希值
44 | 扫描在 %s 秒内完成 @ %sMB/s!
45 | 已扫描 %s 个文件
46 | 扫描控制
47 | 跳过操作,扫描正在运行!
48 | 自检成功.
49 | 忽略
50 | 【实验性功能】
51 | \n启用此功能将增加对约4000万个病毒特征码的检测能力。
52 | \n- 这需要下载200MB的数据。
53 | \n- 会使应用启动时间增加两分钟以上。
54 | \n- 会增加应用内存占用和误报率。
55 | \n此数据库每季度更新一次。
56 | 确定删除
57 | 您似乎正在使用按流量计费的网络连接。您确定要更新数据库吗?
58 | \n这可能下载最多 %s MB 的数据,并可能产生额外费用。
59 | 确定在浏览器中打开VirusTotal.com并提交以下哈希值吗?
60 | 数据库签名密钥
61 | 没有网络连接!
62 | 自检失败!
63 | 所有数据库已更新!
64 | 卸载
65 | 删除
66 | 已删除!
67 | 未找到匹配项 :)
68 | 找到匹配项!:(
69 | 已忽略!
70 | 您确定要删除以下文件吗?
71 | 删除失败!
72 | 确定下载
73 | Cloudflare镜像
74 | 增强版数据库
75 | 主服务器
76 | 检测到恶意链接:
77 | 启用增强版数据库?
78 | 编写自检文件
79 | 当前正在进行更新,请等待更新完成再进行其他操作!
80 | 自检文件已编写!
81 | 链接扫描器
82 | 启用链接扫描器?
83 | Hypatia链接扫描器
84 | [实验性功能]
85 | \n此功能将下载一个额外的域名数据库。
86 | \n在屏幕内容中找到的任何域名都将与该数据库进行比对。
87 | \n这需要手动授予辅助功能服务权限。
88 | \n这可能会对包含大量文本的屏幕产生显著的性能影响。
89 | 当前正在加载数据库,请等待更新完成再进行其他操作!
90 | 从所有屏幕文本内容中提取域名,并比对屏蔽列表进行检查
91 | 确定查询
92 | 查询
93 |
--------------------------------------------------------------------------------
/app/src/main/res/values-zh-rTW/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 版權所有 2017-2024 Divested Computing Group
4 | 授權: GPL-3.0
5 | 版本: %s
6 | 由 ClamAV 資料庫特徵提供支援
7 | 透過 Tor 下載
8 | 正在透過 Tor 下載,這可能需要一點時間…
9 | Orbit 未安裝!
10 | 更新資料庫
11 | 資料庫伺服器複寫
12 | 致謝
13 | 掃描 /system
14 | 掃描應用程式 APK 檔案
15 | 掃描內部儲存空間
16 | 掃描外部儲存空間
17 | 惡意軟體偵測
18 | 用於偵測到惡意軟體時發出警示
19 | 用於顯示已掃描的檔案數量和維護背景服務
20 | 即時偵測已知的惡意軟體
21 | 即時掃描
22 | Hypatia:即時掃描已停止
23 | 偵測到惡意軟體:
24 | 即時掃描
25 | 重製
26 | 複寫
27 | 正在更新 %s 個資料庫
28 | 使用伺服器 %s
29 | 下載成功
30 | 沒有可用的資料庫,無法掃描…
31 | 發布於 %s
32 | 檔案未變更
33 | %s 以來
34 | 下載失敗,請檢查 logcat
35 | 開始掃描…
36 | 正在取消掃描…
37 | %s 個檔案等待掃描
38 | 正在載入資料庫…
39 | 已載入帶有 %s 個特徵碼的資料庫
40 | 正在計算檔案雜湊值…
41 | 已計算所有檔案的雜湊值
42 | 檔案未下載,回應代碼 %s
43 | 掃描在 %s 秒內完成 @ %sMB/s!
44 | 已掃描 %s 個檔案
45 | 掃描控制
46 | 掠過動作,掃描正在執行!
47 | 數位簽章金要
48 | 沒有網路連線
49 | 自我測試成功
50 | 自我測試失敗
51 | 掠過動作,資料庫正在載入中!
52 | 所有資料庫已更新
53 | 查詢
54 | 刪除
55 | 已刪除
56 | 忽略
57 | 未找到符合的資料 :)
58 | 找到符合的資料! :(
59 | 確認查詢
60 | 您確定要在網頁瀏覽器中開啟 VirusTotal.com 並輸入以下雜湊值嗎?
61 | 確認刪除
62 | 已根據特徵碼資料庫檢查全部 %s 雜湊值
63 | 您確定要刪除下列檔案嗎?
64 | 刪除失敗!
65 | 已忽略!
66 | 解除安裝
67 | 編寫自我測試檔案
68 | 增強版資料庫
69 | 確認下載
70 | 您似乎使用的是計費連線。您確定要更新資料庫?
71 | \n可能會下載多達 %s MB 的資料。
72 | 掠過動作,正在執行更新!
73 | 自我測試檔案已編寫!
74 | 主要伺服器
75 | 要啟用增強版資料庫嗎?
76 | 此資料庫僅每季更新一次。
77 |
--------------------------------------------------------------------------------
/app/src/main/res/values/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | • Petra Mirelli: German/Spanish/French/Italian Translations, App Banner, Various Tweaks
5 | • Jean-Luc Tibaux: French Translations
6 | • @srccrow: Italian Translations
7 | • @inkhorn: Portuguese Translations
8 | • @jontaix: Portuguese Translations
9 | • @lucasmz: Brazilian Portuguese Translations
10 | • @q1011: Russian Translations
11 | • Oswald van Ginkel: Afrikaans Translations>
12 | • huuhaa: Finnish Translations
13 | • Marcin Mikołajczak: Polish Translations
14 | • @Manuel-Senpai: Spanish Translations
15 | • @Balthazar1234: German Translations
16 | • @Sdarfeesh: Simplified Chinese Translations
17 | • @cardpuncher: French/Turkish Translations
18 | • Tommaso Fonda: Italian Translations
19 | • Dimitris Vagiakakos: Greek Translations
20 | • @gallegonovato: Spanish Translations
21 | • @Fjuro: Czech Translations
22 | • @thereisnoanderson: German Translations
23 | • @ghose: Galician Translations
24 | • @yurtpage: Russian Translations
25 | • @eloitor: Translations work
26 | • ClamAV by Cisco: Signature Databases
27 | • ESET: Signature Databases
28 | • Nex (@botherder): Signature Databases
29 | • Amnesty International: Signature Databases
30 | • Echap: Signature Databases
31 | • MalwareBazaar: Signature Databases
32 | • VirusShare: Signature Databases
33 | • RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski
34 | • GPGDetachedSignatureVerifier.java: Federico Fissore, Arduino LLC
35 | • Google: App Icon
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FF0000
4 | #008000
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #4CAF50
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Hypatia
4 | Copyright 2017-2024 Divested Computing Group
5 | License: GPL-3.0
6 | Version: %s
7 | Powered by ClamAV style signatures
8 |
9 | Download over Tor
10 | Downloading over Tor, this may take a while…
11 | Orbot is not installed!
12 | Update databases
13 | Database server override
14 | Credits
15 | Scan /system
16 | Scan App APKs
17 | Scan Internal Storage
18 | Scan External Storage
19 | Malware Detection
20 | Used to alert when malware is detected
21 | Realtime Scanner
22 | Used to show files scanned counter and maintain the background service
23 | Known malware will be detected in realtime
24 | Hypatia: Realtime Scanning Stopped
25 | Malware Detected:
26 | Realtime Scanner
27 | Reset
28 | Override
29 |
30 | Updating %s databases…
31 | Using server %s
32 | Successfully downloaded
33 | File not downloaded, response code %s
34 | No database available, not scanning…
35 | Released on %s
36 | File not changed
37 | since %s
38 | Failed to download, check logcat
39 |
40 | Starting scan…
41 | Cancelling scan…
42 | %s files pending scan
43 | Loading database…
44 | Loaded database with %s signatures
45 | Hashing files…
46 | Calculated hashes for all files
47 | Checked all %s hashes against signature databases
48 | Scan completed in %s seconds @ %sMB/s!
49 | %s files scanned
50 | Scan Control
51 | Skipping action, a scan is running!
52 | Database signing key
53 | No network connected!
54 | Self test successful.
55 | Self test failed!
56 | Skipping action, database is loading!
57 | All databases updated!
58 | Lookup
59 | Delete
60 | Deleted!
61 | Ignore
62 | No matches found :)
63 | Matches found! :(
64 | Confirm lookup
65 | Are you sure you want to open VirusTotal.com in your web browser with the following hash?
66 | Confirm deletion
67 | Are you sure you want to delete the following file?
68 | Failed to delete!
69 | Ignored!
70 | Uninstall
71 | Write self test files
72 | Extended database
73 | Enable extended database?
74 | [EXPERIMENTAL]\nThis will enable detection of an additional ~40 million signatures.\nThis requires a 200MB download, will slow down startup by over two minutes, will increase app RAM usage, and will increase the false positive rate.\nThis database only updates quarterly.
75 | Confirm download
76 | You appear to be on a metered connection. Are you sure you want to update the databases?\nIt may download up to %s megabytes of data.
77 | Skipping action, an update is running!
78 | Wrote test files!
79 | Primary Servers
80 | Cloudflare Mirror
81 | Hypatia Link Scanner
82 | Extracts domains from all screen text content and checks them against a blocklist
83 | Malicious Link Detected:
84 | Link Scanner
85 | Enable link scanner?
86 | [EXPERIMENTAL]\nThis will download an additional database of domains.\nAny domains found in screen content will be checked against the database.\nThis requires granting accessibility service permission manually.\nThis can have a substantial performance impact on screens with large amounts of text.
87 |
88 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/accessibility_service_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 |
5 | repositories {
6 | google()
7 | mavenCentral()
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:7.2.2'
11 |
12 |
13 | // NOTE: Do not place your application dependencies here; they belong
14 | // in the individual module build.gradle files
15 | }
16 | }
17 |
18 | allprojects {
19 | repositories {
20 | google()
21 | mavenCentral()
22 | }
23 | }
24 |
25 | task clean(type: Delete) {
26 | delete rootProject.buildDir
27 | }
--------------------------------------------------------------------------------
/debugkey.pk8:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/debugkey.pk8
--------------------------------------------------------------------------------
/debugkey.x509.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIDvzCCAqegAwIBAgIUB/QktDMQr+u0QQbe5P/5rts1874wDQYJKoZIhvcNAQEL
3 | BQAwbzEhMB8GA1UECgwYRGl2ZXN0ZWQgQ29tcHV0aW5nIEdyb3VwMSUwIwYDVQQD
4 | DBxEaXZlc3RlZCBQVUJMSUMgRGVidWctQ0kgS2V5MSMwIQYJKoZIhvcNAQkBFhRz
5 | dXBwb3J0QGRpdmVzdG9zLm9yZzAeFw0yMTA5MjQxOTM2NDZaFw00OTAyMDkxOTM2
6 | NDZaMG8xITAfBgNVBAoMGERpdmVzdGVkIENvbXB1dGluZyBHcm91cDElMCMGA1UE
7 | AwwcRGl2ZXN0ZWQgUFVCTElDIERlYnVnLUNJIEtleTEjMCEGCSqGSIb3DQEJARYU
8 | c3VwcG9ydEBkaXZlc3Rvcy5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
9 | AoIBAQCoQyu+Cf9FABMZ2HpOth/0wuXkQAoCQUyFay8ryuUF+mchC7ly9EvexRP4
10 | 0/Gnu293Ct3FxqfLdluHa5lm8LAIji0JN0iXNv6XpqgSss804M1MoQLEfW2Hz0Fv
11 | UkfB+dJINlUhuf8n1F9Fvv4qVbNaXIlpP495BtMpr7vsAKTGsUrx+9ka2EVuqA40
12 | 0zQhaoAraOPih9wqpo3WAK15zvBq02ONp9EIRyI5GkRWswnuGJ5FhwbSIIBLcG2z
13 | T2azTPtr/687QdA8hTm1kNz3PqS5QohrnSXKmGjVhgWnVEDHIB73/PPQc0GQqndN
14 | 4LFbw6B5thHk5QmZUOgrPo5fgocLAgMBAAGjUzBRMB0GA1UdDgQWBBR2zO3/5y4f
15 | np4usLKfrBirNr6K3DAfBgNVHSMEGDAWgBR2zO3/5y4fnp4usLKfrBirNr6K3DAP
16 | BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQApYl4+giNz54HpMiqj
17 | v9vfS8/UN8JldOlnqd6CZI4aqLITBP2g9qMpah7TAwdPn2LjoQq8geAWARLPHx4D
18 | IOAY5Rek8VGyay/hQRXgsyc2yLauv93EgLQBxLAksnJ1pS/37hLin3iBRdQmEy5m
19 | euLoH/Kkq47u/DxWx3BAIuWMN4GJxLagmHa73j0dHNMucbR5IX1MFKiykZ+3YBTK
20 | QhtafxJ/lXmnRhihyV3Tu8uwRhrLFGlL45Lz1kd72/7ZCkz4WOsJ/zbZ035aV/Td
21 | +SY8chPV2WnvtBjF7oJMoSkJ2R4rmQBe7PH2I1P4+7tS3hjiPz4u+2rHnLtC20d8
22 | F8Gn
23 | -----END CERTIFICATE-----
24 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/cs/full_description.txt:
--------------------------------------------------------------------------------
1 |
Hypatia je první FOSS malware skener na světě. Využívá databáze podpisů ve stylu ClamAV.
2 |
3 | Funkce
4 |
5 |
Téměř žádný vliv na baterii: vlivu na baterii si vůbec nevšimnete
6 |
Extrémně rychlý: umí skenovat malé soubory (1 MB) do 20 ms, a velké soubory (40 MB) do 1000 ms.
7 |
Efektivní využití paměti: se zapnutými výchozími databázemi využívá méně než 120 MB.
8 |
Klasický sken: zapnutí skenování adresáře /system, interního i externího úložiště a nainstalovaných aplikací
9 |
Sken v reálném čase: umí detekovat malware v reálném čase při zápisu/přejmenování v interním úložišti
10 |
Kompletně offline: internet je použit pouze pro stažení databází podpisů, soubory nikdy neopustí vaše zařízení
11 |
Perzistence: automaticky se restartuje při spuštění systému / aktualizaci
12 |
Malé množství kódu: s méně než 1000 sloc jej může auditovat kdokoli i se základní znalostí programování
13 |
Minimální závislosti: aplikace používá knihovny pouze, když je to nutné
14 |
Databáze podpisů lze na v aplikaci zapnout/vypnout
Hypatia es el primer escáner de código malicioso FOSS del mundo para Android. Funciona con bases de datos de firmas al estilo ClamAV.
2 |
3 | Características
4 |
5 |
Impacto casi nulo en la batería: no notará en absoluto ningún impacto en la batería
6 |
Extremadamente rápido: puede escanear archivos pequeños (1 MB) en 20 ms, e incluso archivos grandes (40 MB) en 1.000 ms.
7 |
Eficiente con la memoria: las bases de datos activadas por defecto utiliza menos de 120 MB.
8 |
El análisis: permite seleccionar el sistema, el almacenamiento interno, el almacenamiento externo y las aplicaciones instaladas.
9 |
El análisis en tiempo real: puede detectar malware en tiempo real al escribir y renombrar en el almacenamiento interno.
10 |
Completamente sin conexión: Internet sólo se utiliza para descargar las bases de datos de las firmas, los archivos nunca saldrán de tu dispositivo.
11 |
Persistencia: se reiniciará automáticamente al arrancar/actualizar.
12 |
Código base minúsculo: con menos de 1.000 sloc, puede ser auditado incluso por alguien con una experiencia básica en programación.
13 |
Dependencias mínimas: la aplicación sólo utiliza las bibliotecas cuando es necesario.
14 |
Las bases de datos de las firmas pueden activarse o desactivarse a petición del usuario.
15 |
16 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/images/featureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/es/images/featureGraphic.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/short_description.txt:
--------------------------------------------------------------------------------
1 | Escáner de código malicioso en tiempo real
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/title.txt:
--------------------------------------------------------------------------------
1 | Hypatia
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr/full_description.txt:
--------------------------------------------------------------------------------
1 |
Hypatia est le premier scanner de malware FOSS (logiciel libre) au monde pour Android. Il est propulsé par les bases de données de signatures de style ClamAV.
2 |
3 | Caractéristiques
4 |
5 |
Impact de la batterie proche de zéro: vous ne remarquerez aucun impact sur la batterie
6 |
Extrêmement rapide: il peut scanner les petits fichiers (1MB) en 20ms, et même les gros fichiers (40MB) en 1000ms.
7 |
Mémoire efficace: avec les bases de données activées par défaut, il utilise moins de 120 Mo.
8 |
Analyse régulière: permet de sélectionner le système, le mémoire interne, le mémoire externe et les applications installées
9 |
Scanner en temps réel: peut détecter les malwares en temps réel sur l'écriture ou le renommage dans le mémoire interne
10 |
Complètement hors ligne: l'internet n'est utilisé que pour télécharger des bases de données de signatures, les fichiers ne quitteront jamais votre appareil
11 |
Persistance: redémarre automatiquement au démarrage/mise à jour
12 |
Une base de code minuscule: avec moins de 1000 sloc, elle peut être vérifiée même par une personne ayant une expérience de base en programmation
13 |
Dépendances minimales: l'application n'utilise les bibliothèques que lorsque cela est nécessaire
14 |
Les bases de données de signatures peuvent être activées/désactivées à la demande des utilisateurs
Hypatia é o primeiro escaneador de malware FOSS para Android. É movido a bancos de dados de assinaturas estilo ClamAV.
2 |
3 | Funções
4 |
5 |
Quase zero impacto no uso da bateria: você não notará nenhum impacto na bateria
6 |
Extremamente rápido: consegue escanear arquivos pequenos (1MB) em 20ms, e até arquivos grandes (40MB) em 1000ms.
7 |
Uso eficiente da memória: com os bancos de dados padrão ativados, usa menos de 120MB.
8 |
Scan periódico: permitindo a seleção de /system, armazenamento interno, externo, e de apps instalados
9 |
Scanner em tempo real: consegue detectar malware em tempo real em escrita/renomeneio no armazenamento interno
10 |
Completamente offline: A internet é usada somente para baixar os bancos de dados de assinaturas, seus arquivos nunca (nunca mesmo) sairem do seu dispositivo
11 |
Persistência: reiniciará automaticamente no boot/atualização
12 |
Pouco código: Chegando à menos de 1000 sloc, consegue ser analisado por alguém com uma experiência básica de programação
13 |
Dependências mínimas: o app só usa bibliotecas quando necessário
14 |
Os bancos de dados de assinaturas podem ser ativados/desativados à demanda do usuário
15 |
16 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/images/featureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/pt-BR/images/featureGraphic.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/short_description.txt:
--------------------------------------------------------------------------------
1 | Um escaneador de malware em tempo real
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/title.txt:
--------------------------------------------------------------------------------
1 | Hypatia
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/full_description.txt:
--------------------------------------------------------------------------------
1 |
Hypatia это первый в мире сканер вредоносного ПО для Android. Он работает на основе баз данных сигнатур в стиле Clamav.
2 |
3 | Возможности
4 |
5 |
Почти нулевая трата батареи: вы никогда не заметите никакого влияния на аккумулятор вообще
6 |
Очень быстро: он может сканировать небольшие файлы (1 МБ) за 20 мс и даже большие файлы (40 МБ) за 1000 мс.
7 |
Эффективен по памяти: с включенными антивирусными базами по умолчанию использует менее 120 МБ.
8 |
Регулярное сканирование: разрешение выбора /системы, внутреннего хранилища, внешнего хранилища и установленных приложений
9 |
Сканер в реальном времени: может обнаружить вредоносное ПО в режиме реального времени при записи/переименовании во внутреннем хранилище
10 |
Полностью автономно: Интернет используется только для загрузки баз данных сигнатур, файлы никогда не покинут ваше устройство
11 |
Постоянство: автоматически перезагрузит загрузку/обновление
12 |
Маленькая кодовая база: до 1000 строк кода, его можно проверить даже кем-то с базовым опытом программирования
13 |
Минимальные зависимости: приложение использует библиотеки только при необходимости
14 |
Базы данных сигнатур могут быть включены/отключены по желанию пользователей
15 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/short_description.txt:
--------------------------------------------------------------------------------
1 | Антивирусный сканер вредоносного ПО в реальном времени
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | android.enableJetifier=true
13 | android.useAndroidX=true
14 | org.gradle.jvmargs=-Xmx1536m
15 |
16 | # When configured, Gradle will run in incubating parallel mode.
17 | # This option should only be used with decoupled projects. More details, visit
18 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
19 | # org.gradle.parallel=true
20 |
21 | org.gradle.dependency.verification=strict
22 | #org.gradle.dependency.verification.console=verbose
23 |
--------------------------------------------------------------------------------
/gradle/verification-keyring.gpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/gradle/verification-keyring.gpg
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionSha256Sum=f6b8596b10cce501591e92f229816aa4046424f3b24d771751b06779d58c8ec4
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%"=="" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%"=="" set DIRNAME=.
29 | set APP_BASE_NAME=%~n0
30 | set APP_HOME=%DIRNAME%
31 |
32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34 |
35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37 |
38 | @rem Find java.exe
39 | if defined JAVA_HOME goto findJavaFromJavaHome
40 |
41 | set JAVA_EXE=java.exe
42 | %JAVA_EXE% -version >NUL 2>&1
43 | if %ERRORLEVEL% equ 0 goto execute
44 |
45 | echo.
46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47 | echo.
48 | echo Please set the JAVA_HOME variable in your environment to match the
49 | echo location of your Java installation.
50 |
51 | goto fail
52 |
53 | :findJavaFromJavaHome
54 | set JAVA_HOME=%JAVA_HOME:"=%
55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56 |
57 | if exist "%JAVA_EXE%" goto execute
58 |
59 | echo.
60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61 | echo.
62 | echo Please set the JAVA_HOME variable in your environment to match the
63 | echo location of your Java installation.
64 |
65 | goto fail
66 |
67 | :execute
68 | @rem Setup the command line
69 |
70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
71 |
72 |
73 | @rem Execute Gradle
74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
75 |
76 | :end
77 | @rem End local scope for the variables with windows NT shell
78 | if %ERRORLEVEL% equ 0 goto mainEnd
79 |
80 | :fail
81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
82 | rem the _cmd.exe /c_ return code!
83 | set EXIT_CODE=%ERRORLEVEL%
84 | if %EXIT_CODE% equ 0 set EXIT_CODE=1
85 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
86 | exit /b %EXIT_CODE%
87 |
88 | :mainEnd
89 | if "%OS%"=="Windows_NT" endlocal
90 |
91 | :omega
92 |
--------------------------------------------------------------------------------
/graphics/featureGraphic.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/graphics/featureGraphic.xcf
--------------------------------------------------------------------------------
/graphics/featureGraphic_clean.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/graphics/featureGraphic_clean.png
--------------------------------------------------------------------------------
/graphics/hypatia-test-file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/graphics/hypatia-test-file.png
--------------------------------------------------------------------------------
/graphics/hypatia-test-file.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/graphics/hypatia-test-file.xcf
--------------------------------------------------------------------------------
/graphics/ic_baseline_security_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/graphics/ic_baseline_security_24.xml.svg:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/graphics/makefile:
--------------------------------------------------------------------------------
1 | TEMPLATE := featureGraphic_clean.png
2 | LANG_FILES := $(wildcard translations/*.txt)
3 | BASE_OUTPUT_DIR := ../fastlane/metadata/android
4 | LANG_DIRS := $(patsubst translations/%.txt,$(BASE_OUTPUT_DIR)/%/images, $(LANG_FILES))
5 | PNG_FILES := $(patsubst translations/%.txt, $(BASE_OUTPUT_DIR)/%/images/featureGraphic.png, $(LANG_FILES))
6 |
7 | all: $(PNG_FILES)
8 |
9 | $(BASE_OUTPUT_DIR)/%/images/featureGraphic.png: translations/%.txt $(TEMPLATE)
10 | @mkdir -p $(dir $@)
11 | @TRANSLATION_CONTENT=$$(cat $< ); \
12 | convert $(TEMPLATE) \
13 | -gravity West -font 'Fira-Sans-Bold' -pointsize 75 -annotate +350-80 "Hypatia" \
14 | -gravity West -font 'Fira-Sans' -pointsize 45 -annotate +350+70 "$$TRANSLATION_CONTENT" $@
15 | @pngquant --force --ext .png --skip-if-larger --quality=65-80 $@
16 |
17 | clean:
18 | @rm -f $(PNG_FILES)
19 |
20 | .PHONY: all clean
21 |
--------------------------------------------------------------------------------
/graphics/translations/en-US.txt:
--------------------------------------------------------------------------------
1 | The world's first FOSS realtime
2 | malware scanner for Android
3 |
--------------------------------------------------------------------------------
/graphics/translations/es.txt:
--------------------------------------------------------------------------------
1 | El primer escáner de malware
2 | en tiempo real FOSS del mundo
3 | para Android
4 |
--------------------------------------------------------------------------------
/graphics/translations/pt-BR.txt:
--------------------------------------------------------------------------------
1 | O primeiro escaneador de
2 | malware em tempo real
3 | FOSS para Android do mundo
4 |
--------------------------------------------------------------------------------
/scripts/0avast-covid19.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #License: CC0
3 | #Description: Hypatia conversion script for https://github.com/avast/covid-19-ioc
4 |
5 | tail -n +2 */*.csv | sed 's/,/ , /' | awk '{ print $1 }' | sort -u >> avast-covid19.sha256
6 |
--------------------------------------------------------------------------------
/scripts/0clamav.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #License: CC0
3 | #Description: Hypatia conversion script for ClamAV databases (GPL-2.0)
4 |
5 | #sudo -i freshclam
6 | origDir="$PWD"
7 | mkdir /tmp/mss
8 | cd /tmp/mss
9 | cp /var/lib/clamav/main.c*d .
10 | cp /var/lib/clamav/daily.c*d .
11 | sigtool -u main.c*d
12 | sigtool -u daily.c*d
13 |
14 | mv /tmp/mss/*.fp* "$origDir/exclusions/"
15 | mv /tmp/mss/*.hsb "$origDir/raw/"
16 | mv /tmp/mss/*.hdb "$origDir/raw/"
17 | mv /tmp/mss/*.hdu "$origDir/raw/"
18 | mv /tmp/mss/*.hsu "$origDir/raw/"
19 |
--------------------------------------------------------------------------------
/scripts/0cybercure.sh:
--------------------------------------------------------------------------------
1 | wget "https://api.cybercure.ai/feed/get_hash?type=csv" -O - | sed 's/,/\n/g' >> raw/cybercure.md5
2 |
3 | sort -u -o raw/cybercure.md5 raw/cybercure.md5
4 |
--------------------------------------------------------------------------------
/scripts/0eset.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #License: CC0
3 | #Description: Hypatia conversion script for https://github.com/eset/malware-ioc (BSD-2-Clause)
4 |
5 | processHashes() {
6 | local name=$(basename $1);
7 | if [ -f $1/samples.$2 ]; then
8 | dos2unix $1/samples.$2
9 | while IFS= read -r line
10 | do
11 | echo "$line" >> ./eset.$2;
12 | done < "$1/samples.$2";
13 | fi;
14 | }
15 | export -f processHashes;
16 |
17 | find . -maxdepth 2 -mindepth 1 -type d -exec bash -c 'processHashes "{}" md5 hdb' \;
18 | find . -maxdepth 2 -mindepth 1 -type d -exec bash -c 'processHashes "{}" sha1 hsb' \;
19 | find . -maxdepth 2 -mindepth 1 -type d -exec bash -c 'processHashes "{}" sha256 hsb' \;
20 |
--------------------------------------------------------------------------------
/scripts/0genbloom.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #License: CC0
3 |
4 | rm production/index.html
5 | cp template.html production/index.html
6 | echo "