├── .gitignore ├── .gitlab-ci.yml ├── .idea ├── assetWizardSettings.xml ├── caches │ ├── build_file_checksums.ser │ └── gradle_models.ser ├── codeStyles │ └── Project.xml ├── compiler.xml ├── deploymentTargetDropDown.xml ├── deploymentTargetSelector.xml ├── encodings.xml ├── gradle.xml ├── jarRepositories.xml ├── migrations.xml ├── misc.xml ├── modules.xml └── vcs.xml ├── LICENSE ├── README.de.md ├── README.es.md ├── README.fr.md ├── README.it.md ├── README.md ├── README.pl.md ├── README.tr.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── ic_launcher-playstore.png │ ├── java │ └── us │ │ └── spotco │ │ └── malwarescanner │ │ ├── Database.java │ │ ├── EventReceiver.java │ │ ├── GPGDetachedSignatureVerifier.java │ │ ├── LinkScannerService.java │ │ ├── MainActivity.java │ │ ├── MalwareScanner.java │ │ ├── MalwareScannerService.java │ │ ├── NotificationPromptActivity.java │ │ ├── RecursiveFileObserver.java │ │ ├── SignatureDatabase.java │ │ └── Utils.java │ └── res │ ├── drawable-hdpi │ └── ic_notification.png │ ├── drawable-mdpi │ └── ic_notification.png │ ├── drawable-xhdpi │ └── ic_notification.png │ ├── drawable-xxhdpi │ └── ic_notification.png │ ├── drawable │ ├── ic_launcher_foreground.xml │ └── ic_launcher_monochrome.xml │ ├── layout │ └── content_main.xml │ ├── menu │ └── menu_main.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── values-af │ ├── arrays.xml │ └── strings.xml │ ├── values-ar │ └── strings.xml │ ├── values-cs │ ├── arrays.xml │ └── strings.xml │ ├── values-de │ ├── arrays.xml │ └── strings.xml │ ├── values-el │ ├── arrays.xml │ └── strings.xml │ ├── values-es │ ├── arrays.xml │ └── strings.xml │ ├── values-et │ └── strings.xml │ ├── values-fi │ ├── arrays.xml │ └── strings.xml │ ├── values-fr │ ├── arrays.xml │ └── strings.xml │ ├── values-gl │ ├── arrays.xml │ └── strings.xml │ ├── values-hr │ └── strings.xml │ ├── values-in │ └── strings.xml │ ├── values-it │ ├── arrays.xml │ └── strings.xml │ ├── values-ja │ └── strings.xml │ ├── values-pl │ ├── arrays.xml │ └── strings.xml │ ├── values-pt-rBR │ ├── arrays.xml │ └── strings.xml │ ├── values-pt │ ├── arrays.xml │ └── strings.xml │ ├── values-ro │ └── strings.xml │ ├── values-ru │ ├── arrays.xml │ └── strings.xml │ ├── values-sk │ └── strings.xml │ ├── values-tr │ ├── arrays.xml │ └── strings.xml │ ├── values-uk │ └── strings.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values │ ├── arrays.xml │ ├── colors.xml │ ├── dimens.xml │ ├── ic_launcher_background.xml │ └── strings.xml │ └── xml │ └── accessibility_service_config.xml ├── build.gradle ├── debugkey.pk8 ├── debugkey.x509.pem ├── fastlane └── metadata │ └── android │ ├── cs │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── de │ ├── full_description.txt │ ├── images │ │ └── phoneScreenshots │ │ │ ├── 01-Main.png │ │ │ ├── 02-Detection.png │ │ │ └── 03-Notification.png │ ├── short_description │ └── title.txt │ ├── en-US │ ├── changelogs │ │ ├── 101.txt │ │ ├── 102.txt │ │ ├── 103.txt │ │ ├── 105.txt │ │ ├── 107.txt │ │ ├── 109.txt │ │ ├── 110.txt │ │ ├── 112.txt │ │ ├── 113.txt │ │ ├── 116.txt │ │ ├── 118.txt │ │ ├── 119.txt │ │ ├── 120.txt │ │ ├── 121.txt │ │ ├── 122.txt │ │ ├── 301.txt │ │ ├── 302.txt │ │ ├── 305.txt │ │ ├── 306.txt │ │ ├── 307.txt │ │ ├── 308.txt │ │ ├── 309.txt │ │ ├── 310.txt │ │ ├── 311.txt │ │ ├── 312.txt │ │ ├── 314.txt │ │ ├── 40.txt │ │ ├── 41.txt │ │ ├── 42.txt │ │ ├── 43.txt │ │ ├── 44.txt │ │ ├── 45.txt │ │ ├── 46.txt │ │ ├── 47.txt │ │ ├── 48.txt │ │ ├── 49.txt │ │ ├── 50.txt │ │ ├── 51.txt │ │ ├── 52.txt │ │ ├── 54.txt │ │ ├── 55.txt │ │ ├── 56.txt │ │ ├── 57.txt │ │ ├── 58.txt │ │ ├── 59.txt │ │ ├── 60.txt │ │ ├── 61.txt │ │ ├── 62.txt │ │ ├── 63.txt │ │ ├── 64.txt │ │ ├── 65.txt │ │ ├── 67.txt │ │ ├── 68.txt │ │ ├── 69.txt │ │ ├── 70.txt │ │ ├── 71.txt │ │ ├── 72.txt │ │ ├── 73.txt │ │ ├── 74.txt │ │ ├── 75.txt │ │ ├── 76.txt │ │ ├── 77.txt │ │ ├── 79.txt │ │ ├── 80.txt │ │ ├── 81.txt │ │ ├── 82.txt │ │ ├── 83.txt │ │ ├── 84.txt │ │ ├── 85.txt │ │ ├── 86.txt │ │ ├── 87.txt │ │ ├── 88.txt │ │ ├── 89.txt │ │ ├── 90.txt │ │ ├── 91.txt │ │ ├── 92.txt │ │ ├── 93.txt │ │ ├── 94.txt │ │ ├── 95.txt │ │ ├── 96.txt │ │ ├── 97.txt │ │ └── 99.txt │ ├── full_description.txt │ ├── images │ │ ├── featureGraphic.png │ │ ├── icon.png │ │ └── phoneScreenshots │ │ │ ├── 01-Main.png │ │ │ ├── 02-Detection.png │ │ │ └── 03-Notification.png │ ├── short_description.txt │ └── title.txt │ ├── es │ ├── full_description.txt │ ├── images │ │ └── featureGraphic.png │ ├── short_description.txt │ └── title.txt │ ├── fr │ ├── full_description.txt │ ├── images │ │ └── phoneScreenshots │ │ │ ├── 01-Main.png │ │ │ ├── 02-Detection.png │ │ │ └── 03-Notification.png │ └── title.txt │ ├── pl-PL │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── pt-BR │ ├── full_description.txt │ ├── images │ │ └── featureGraphic.png │ ├── short_description.txt │ └── title.txt │ └── ru │ ├── full_description.txt │ └── short_description.txt ├── gradle.properties ├── gradle ├── verification-keyring.gpg ├── verification-keyring.keys ├── verification-metadata.xml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── graphics ├── featureGraphic.xcf ├── featureGraphic_clean.png ├── hypatia-test-file.png ├── hypatia-test-file.xcf ├── ic_baseline_security_24.xml ├── ic_baseline_security_24.xml.svg ├── makefile └── translations │ ├── en-US.txt │ ├── es.txt │ └── pt-BR.txt ├── scripts ├── 0avast-covid19.sh ├── 0clamav.sh ├── 0cybercure.sh ├── 0eset.sh ├── 0genbloom.sh ├── 0malshare-bulk.sh ├── 0malshare-combine.sh ├── 0sanesecurity.sh ├── 0stalkerware.sh ├── 0targetedthreats.sh ├── 0threatfox.sh ├── 0threatview.sh └── Main.java └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | # To contribute improvements to CI/CD templates, please follow the Development guide at: 2 | # https://docs.gitlab.com/ee/development/cicd/templates.html 3 | # This specific template is located at: 4 | # https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Android.gitlab-ci.yml 5 | 6 | # Read more about this script on this blog post https://about.gitlab.com/2018/10/24/setting-up-gitlab-ci-for-android-projects/, by Jason Lenny 7 | # If you are interested in using Android with FastLane for publishing take a look at the Android-Fastlane template. 8 | 9 | image: openjdk:11-jdk 10 | 11 | variables: 12 | 13 | # ANDROID_COMPILE_SDK is the version of Android you're compiling with. 14 | # It should match compileSdkVersion. 15 | ANDROID_COMPILE_SDK: "30" 16 | 17 | # ANDROID_BUILD_TOOLS is the version of the Android build tools you are using. 18 | # It should match buildToolsVersion. 19 | ANDROID_BUILD_TOOLS: "30.0.3" 20 | 21 | # It's what version of the command line tools we're going to download from the official site. 22 | # Official Site-> https://developer.android.com/studio/index.html 23 | # There, look down below at the cli tools only, sdk tools package is of format: 24 | # commandlinetools-os_type-ANDROID_SDK_TOOLS_latest.zip 25 | # when the script was last modified for latest compileSdkVersion, it was which is written down below 26 | ANDROID_SDK_TOOLS: "7583922" 27 | 28 | # Packages installation before running script 29 | before_script: 30 | - apt-get --quiet update --yes 31 | - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 32 | 33 | # Setup path as ANDROID_SDK_ROOT for moving/exporting the downloaded sdk into it 34 | - export ANDROID_SDK_ROOT="${PWD}/android-home" 35 | # Create a new directory at specified location 36 | - install -d $ANDROID_SDK_ROOT 37 | # Here we are installing androidSDK tools from official source, 38 | # (the key thing here is the url from where you are downloading these sdk tool for command line, so please do note this url pattern there and here as well) 39 | # after that unzipping those tools and 40 | # then running a series of SDK manager commands to install necessary android SDK packages that'll allow the app to build 41 | - wget --output-document=$ANDROID_SDK_ROOT/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip 42 | # move to the archive at ANDROID_SDK_ROOT 43 | - pushd $ANDROID_SDK_ROOT 44 | - unzip -d cmdline-tools cmdline-tools.zip 45 | - pushd cmdline-tools 46 | # since commandline tools version 7583922 the root folder is named "cmdline-tools" so we rename it if necessary 47 | - mv cmdline-tools tools || true 48 | - popd 49 | - popd 50 | - export PATH=$PATH:${ANDROID_SDK_ROOT}/cmdline-tools/tools/bin/ 51 | - export PATH=$PATH:${ANDROID_SDK_ROOT}/build-tools/${ANDROID_BUILD_TOOLS}/ 52 | 53 | # Nothing fancy here, just checking sdkManager version 54 | - sdkmanager --version 55 | 56 | # use yes to accept all licenses 57 | - yes | sdkmanager --licenses || true 58 | - sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" 59 | - sdkmanager "platform-tools" 60 | - sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" 61 | 62 | # Not necessary, but just for surity 63 | - chmod +x ./gradlew 64 | 65 | # Basic android and gradle stuff 66 | # Check linting 67 | lintDebug: 68 | interruptible: true 69 | stage: build 70 | script: 71 | - ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint 72 | artifacts: 73 | paths: 74 | - app/lint/reports/ 75 | 76 | # Make Project 77 | assembleDebug: 78 | interruptible: true 79 | stage: build 80 | script: 81 | - ./gradlew assembleDebug 82 | - apksigner sign --key "debugkey.pk8" --cert "debugkey.x509.pem" app/build/outputs/apk/debug/app-debug.apk 83 | artifacts: 84 | paths: 85 | - app/build/outputs/ 86 | 87 | # Run all tests, if any fails, interrupt the pipeline(fail it) 88 | debugTests: 89 | interruptible: true 90 | stage: test 91 | script: 92 | - ./gradlew -Pci --console=plain :app:testDebug 93 | -------------------------------------------------------------------------------- /.idea/caches/build_file_checksums.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/.idea/caches/build_file_checksums.ser -------------------------------------------------------------------------------- /.idea/caches/gradle_models.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/.idea/caches/gradle_models.ser -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | xmlns:android 14 | 15 | ^$ 16 | 17 | 18 | 19 |
20 |
21 | 22 | 23 | 24 | xmlns:.* 25 | 26 | ^$ 27 | 28 | 29 | BY_NAME 30 | 31 |
32 |
33 | 34 | 35 | 36 | .*:id 37 | 38 | http://schemas.android.com/apk/res/android 39 | 40 | 41 | 42 |
43 |
44 | 45 | 46 | 47 | .*:name 48 | 49 | http://schemas.android.com/apk/res/android 50 | 51 | 52 | 53 |
54 |
55 | 56 | 57 | 58 | name 59 | 60 | ^$ 61 | 62 | 63 | 64 |
65 |
66 | 67 | 68 | 69 | style 70 | 71 | ^$ 72 | 73 | 74 | 75 |
76 |
77 | 78 | 79 | 80 | .* 81 | 82 | ^$ 83 | 84 | 85 | BY_NAME 86 | 87 |
88 |
89 | 90 | 91 | 92 | .* 93 | 94 | http://schemas.android.com/apk/res/android 95 | 96 | 97 | ANDROID_ATTRIBUTE_ORDER 98 | 99 |
100 |
101 | 102 | 103 | 104 | .* 105 | 106 | .* 107 | 108 | 109 | BY_NAME 110 | 111 |
112 |
113 |
114 |
115 |
116 |
-------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/deploymentTargetDropDown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/deploymentTargetSelector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 19 | 20 | -------------------------------------------------------------------------------- /.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | 24 | 25 | 29 | 30 | -------------------------------------------------------------------------------- /.idea/migrations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | 36 | 59 | 60 | 61 | 62 | 63 | 64 | 66 | 67 | 68 | 69 | 70 | Android API 19 Platform 71 | 72 | 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 | [Hypatia im F-Droid open source app store](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 | ![Banner](https://divestos.org/images/featureGraphics/Hypatia.png) 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 | [Consíguelo en F-Droid](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 | [Disponible sur F-Droid](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 | [Disponibile su F-Droid](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 | ![Banner](https://divestos.org/images/featureGraphics/Hypatia.png) 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 | [Get it on F-Droid](https://f-droid.org/packages/us.spotco.malwarescanner/) 13 | [Translation status](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 | [Pobierz w F-Droid](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 | ![Banner](https://divestos.org/images/featureGraphics/Hypatia.png) 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 | [Get it on F-Droid](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 | 4 | 5 | 10 | 14 | 17 | 20 | 23 | 27 | 31 | 35 | 40 | 45 | 50 | 55 | 58 | 61 | 62 | 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
  • 15 |
16 | -------------------------------------------------------------------------------- /fastlane/metadata/android/cs/short_description.txt: -------------------------------------------------------------------------------- 1 | Skener malware v reálném čase 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/cs/title.txt: -------------------------------------------------------------------------------- 1 | Hypatia 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/de/full_description.txt: -------------------------------------------------------------------------------- 1 |

Hypatia ist der weltweit erste FOSS-Malwarescanner für Android. Er basiert auf Signatur-Datenbanken im Stil von ClamAV.

2 | 3 | Funktionen 4 |
    5 |
  • Nahezu keine Auswirkungen auf den Akku: Sie werden keinerlei Auswirkungen auf den Akku bemerken
  • 6 |
  • Extrem schnell: kleine Dateien (1MB) werden in 20ms gescannt, große Dateien (40MB) in 1000ms.
  • 7 |
  • Speichereffizient: mit den standardmäßig aktivierten Datenbanken verbraucht Hypatia weniger als 120MB.
  • 8 |
  • Manueller Scan: erlaubt die Auswahl von /system, internem Speicher, externem Speicher und installierten Apps
  • 9 |
  • Echtzeit-Scanner: kann Malware direkt bei neugeschriebenen oder unbenannten Dateien im internen Speicher erkennen
  • 10 |
  • Vollständig offline: Das Internet wird nur zum Herunterladen von Signatur-Datenbanken verwendet, die Dateien verlassen niemals Ihr Gerät
  • 11 |
  • Persistenz: automatischer Neustart beim Booten/Update
  • 12 |
  • Winzige Codebasis: mit weniger als 1000 sloc kann sie sogar von jemandem mit grundlegenden Programmierkenntnissen geprüft werden
  • 13 |
  • Minimale Abhängigkeiten: die App verwendet nur Bibliotheken, wenn es nötig ist
  • 14 |
  • Signatur-Datenbanken können auf Wunsch des Benutzers aktiviert/deaktiviert werden
  • 15 |
-------------------------------------------------------------------------------- /fastlane/metadata/android/de/images/phoneScreenshots/01-Main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/de/images/phoneScreenshots/01-Main.png -------------------------------------------------------------------------------- /fastlane/metadata/android/de/images/phoneScreenshots/02-Detection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/de/images/phoneScreenshots/02-Detection.png -------------------------------------------------------------------------------- /fastlane/metadata/android/de/images/phoneScreenshots/03-Notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/de/images/phoneScreenshots/03-Notification.png -------------------------------------------------------------------------------- /fastlane/metadata/android/de/short_description: -------------------------------------------------------------------------------- 1 | Ein Echtzeit Schadsoftware-Scanner -------------------------------------------------------------------------------- /fastlane/metadata/android/de/title.txt: -------------------------------------------------------------------------------- 1 | Hypatia 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/101.txt: -------------------------------------------------------------------------------- 1 | * This release brings new and updated translations: 2 | * @Manuel-Senpai for updated Spanish translations. 3 | * @Balthazar1234 for updated German translations. 4 | * @Sdarfeesh for new Simplified Chinese translations. 5 | * @cardpuncher for new Turkish and updated French translations. 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/102.txt: -------------------------------------------------------------------------------- 1 | * Fix the downloader when many databases are enabled 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/103.txt: -------------------------------------------------------------------------------- 1 | * Tommaso Fonda for updated Italian translations 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/105.txt: -------------------------------------------------------------------------------- 1 | Now translated into Greek thanks to Dimitris Vagiakakos! 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/107.txt: -------------------------------------------------------------------------------- 1 | * New database with 60k+ signatures from MalwareBazaar by abuse.ch 2 | * @Manuel-Senpai for updated Spanish translations. 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/109.txt: -------------------------------------------------------------------------------- 1 | * Switch database from HashMap to BloomFilter 2 | * This dramatically reduces memory usage 3 | * Raise mimimum required Android version to KitKat 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/110.txt: -------------------------------------------------------------------------------- 1 | * Fix a bug 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/112.txt: -------------------------------------------------------------------------------- 1 | * Elimiates all local database conversion 2 | * Server now serves up the optimized bloom filters directly for smaller downloads 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/113.txt: -------------------------------------------------------------------------------- 1 | * Fix scanning all apps on Android 11 and higher 2 | * Many database downloader changes: 3 | * Store the new database separately and move into place 4 | * Check for network connection before trying to download 5 | * Don't immediately delete the database on download start 6 | * Only delete new database on download failure 7 | * Wait until all downloads complete before attempting reload 8 | * Inform the user when all downloads are finished 9 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/116.txt: -------------------------------------------------------------------------------- 1 | * Better normalize all hashes 2 | * Self-test function to ensure databases are correctly loaded 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/118.txt: -------------------------------------------------------------------------------- 1 | * Handle all detections via notifications 2 | * Add the ability to lookup, delete/uninstall, or ignore detections 3 | * After a manual scan inform the user if there were matches or not 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/119.txt: -------------------------------------------------------------------------------- 1 | * Show the approximate signature count 2 | * Unbreak hash processing: md5 & sha1 were getting mixed up for years 3 | * Add many checks to database processing 4 | * Ignore hashes of empty content 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/120.txt: -------------------------------------------------------------------------------- 1 | * Fixup signature count miscalculation when database already loaded 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/121.txt: -------------------------------------------------------------------------------- 1 | * Fixup SHA1 hash calculation 2 | * Show full notification text when expanded 3 | * Make basic self test more robust 4 | * Add a self test option that actually writes files 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/122.txt: -------------------------------------------------------------------------------- 1 | * Small crash fix 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/301.txt: -------------------------------------------------------------------------------- 1 | * Improve notification action handling 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/302.txt: -------------------------------------------------------------------------------- 1 | * Restore support for Android 4.1 / Jelly Bean 2 | * Code cleanup 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/305.txt: -------------------------------------------------------------------------------- 1 | * Fix signature count reseting on update but not changed 2 | * Better handle reloads when extended DB is enabled 3 | * Metered connection warning 4 | * Block all actions when appropriate 5 | * Use a wakelock instead of keeping the screen on 6 | * Increase max scan sizes: 500MB manual, 250MB realtime 7 | * Always check if files can be read before scanning 8 | * Resolve true paths to avoid duplicates from symlinks 9 | * Scan more app paths 10 | * Scan more system paths 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/306.txt: -------------------------------------------------------------------------------- 1 | * Crash fix when scanning apps in some cases 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/307.txt: -------------------------------------------------------------------------------- 1 | * Added Czech translations from @Fjuro 2 | * Updated Russian translations from @t1011 3 | * Updated Spanish translations from @gallegonovato 4 | * Updated Turkish translations from @cardpuncher 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/308.txt: -------------------------------------------------------------------------------- 1 | * Added Galician translations from @ghose 2 | * Added Brazilian Portuguese translations from @lucasmz 3 | * Updated German translations from @thereisnoanderson 4 | * Updated Italian translations from Tommaso Fonda 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/309.txt: -------------------------------------------------------------------------------- 1 | * Reduce size of app 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/310.txt: -------------------------------------------------------------------------------- 1 | * The database override option now has a choice for primary servers or a Cloudflare mirror 2 | * Updated/merged Brazilian translations from @lucasmz 3 | * Updated Russian fastlane translations from @t1011 4 | * Updated Russian fastlane translations from @yurtpage 5 | * Fastlane feature graphic banners are now translated thanks to @eloitor and @lucasmz 6 | * Repo READMEs have received translated F-Droid badges from @eloitor 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/311.txt: -------------------------------------------------------------------------------- 1 | * Ability to scan screen content for malicious links 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/312.txt: -------------------------------------------------------------------------------- 1 | * Many optimizations to the link scanner feature 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/314.txt: -------------------------------------------------------------------------------- 1 | Translation updates thanks to the following contributors: 2 | - Arabic: abdelbasset jabrane, ABDO GM 3 | - Chinese (Simplified): Crit, 大王叫我来巡山 4 | - Chinese (Traditional Han script): 張可揚 5 | - Croatian: lukapiplica 6 | - Estonian: Priit Jõerüüt 7 | - Finnish: Ricky Tigg 8 | - German: thereisnoanderson, Ettore Atalan 9 | - Indonesian: Adrien N 10 | - Italian: Tommaso Fonda, Dark Space 11 | - Japanese: honyaku 12 | - Portuguese: ssantos 13 | - Romanian: Renko 14 | - Russian: Andrey 15 | - Slovak: Pa Di 16 | - Spanish: gallegonovato 17 | - Ukrainian: Fqwe1 18 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/40.txt: -------------------------------------------------------------------------------- 1 | * Rebranding 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/41.txt: -------------------------------------------------------------------------------- 1 | * Night mode support 2 | * AndroidX migration 3 | * Optimize images 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/42.txt: -------------------------------------------------------------------------------- 1 | * Fix the realtime scanner 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/43.txt: -------------------------------------------------------------------------------- 1 | * Fix for Scoped Storage enforcement on Q 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/44.txt: -------------------------------------------------------------------------------- 1 | * Clarification 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/45.txt: -------------------------------------------------------------------------------- 1 | * Drop old databases 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/46.txt: -------------------------------------------------------------------------------- 1 | * Add ESET's database 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/47.txt: -------------------------------------------------------------------------------- 1 | * Update dependencies 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/48.txt: -------------------------------------------------------------------------------- 1 | * Improve log output 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/49.txt: -------------------------------------------------------------------------------- 1 | * Update server URL 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/50.txt: -------------------------------------------------------------------------------- 1 | * Add the German string translations, credit Petra Mirelli 2 | * Add the German README, credit Petra Mirelli 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/51.txt: -------------------------------------------------------------------------------- 1 | * Typo fixes 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/52.txt: -------------------------------------------------------------------------------- 1 | * More German string translations, credit Petra Mirelli 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/54.txt: -------------------------------------------------------------------------------- 1 | * Fixup last release 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/55.txt: -------------------------------------------------------------------------------- 1 | * Add the French translations, credit Tibaux and Mirelli 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/56.txt: -------------------------------------------------------------------------------- 1 | * Fix an exception with the notification counter 2 | * Ensure the database is really loaded before a scan 3 | * Inform the user when a scan is cancelled 4 | * Allow quicker cancelling of scan (when in the middle of hashing) 5 | * Don't block main thread when updating databases 6 | * Change the fab color depending on the scan state 7 | * Add a simple textual progress bar to scans 8 | * Make text output selectable 9 | * Add a test signature 10 | * Small sanity checks 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/57.txt: -------------------------------------------------------------------------------- 1 | * More small fixes 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/58.txt: -------------------------------------------------------------------------------- 1 | * Don't try to load the database multiple times at once 2 | * Add the signature count to the notification 3 | * Format numbers for the locale 4 | * Improve check for when no databases are available 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/59.txt: -------------------------------------------------------------------------------- 1 | * More fastlane metadata and screenshots 2 | * Translation work 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/60.txt: -------------------------------------------------------------------------------- 1 | * Adding 'versionName' from 'app/gradle.build' to UI 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/61.txt: -------------------------------------------------------------------------------- 1 | * Add a comphrensive credits menu 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/62.txt: -------------------------------------------------------------------------------- 1 | * Add the initial Italian translations by Dante 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/63.txt: -------------------------------------------------------------------------------- 1 | * Add padding to txtLogOutput 2 | * Code cleanup 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/64.txt: -------------------------------------------------------------------------------- 1 | * Add the Italian README, credit Petra Mirelli 2 | * Add the Spanish translations, credit Petra Mirelli 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/65.txt: -------------------------------------------------------------------------------- 1 | * Add the Portuguese translations, credit @inkhorn 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/67.txt: -------------------------------------------------------------------------------- 1 | * Fix storage access on 11 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/68.txt: -------------------------------------------------------------------------------- 1 | * Fixup Orbot detection 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/69.txt: -------------------------------------------------------------------------------- 1 | * Added Russian translation, credit @q1011 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/70.txt: -------------------------------------------------------------------------------- 1 | * Translations work 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/71.txt: -------------------------------------------------------------------------------- 1 | * fastlane work 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/72.txt: -------------------------------------------------------------------------------- 1 | * Update gradle wrapper 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/73.txt: -------------------------------------------------------------------------------- 1 | * Show scan speed too 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/74.txt: -------------------------------------------------------------------------------- 1 | * Improve database descriptions and add a new database source 2 | * Translation work 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/75.txt: -------------------------------------------------------------------------------- 1 | * Invert the fileHashes* HashMaps 2 | * Translation work 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/76.txt: -------------------------------------------------------------------------------- 1 | * Don't find files recursively on main thread 2 | * Reduce number of threadpools 3 | * Ensure there are always enough threads available 4 | * Cap the queue limit on thread pools 5 | * Do work on main thread if queues are full, thereby blocking 6 | * Use more thread safe objects 7 | * Replace some runnables with lambas 8 | * Code cleanup 9 | * Typo fixes 10 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/77.txt: -------------------------------------------------------------------------------- 1 | * Translation work 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/79.txt: -------------------------------------------------------------------------------- 1 | * Add the Afrikaans translations, credit Oswald van Ginkel 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/80.txt: -------------------------------------------------------------------------------- 1 | * Add the option to change server URL. Such replacement must have the same file names. Database generation scripts in source code repository. 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/81.txt: -------------------------------------------------------------------------------- 1 | * Add the Finnish translations, credit huuhaa 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/82.txt: -------------------------------------------------------------------------------- 1 | * Translation work 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/83.txt: -------------------------------------------------------------------------------- 1 | * Disable obfuscation 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/84.txt: -------------------------------------------------------------------------------- 1 | * Add Polish translations thanks to Marcin Mikołajczak 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/85.txt: -------------------------------------------------------------------------------- 1 | * Update dependencies 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/86.txt: -------------------------------------------------------------------------------- 1 | * Fix crash when starting manual scan 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/87.txt: -------------------------------------------------------------------------------- 1 | * Enables strict gradle dependency verification 2 | * Themed app icon 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/88.txt: -------------------------------------------------------------------------------- 1 | * Fix inability to fully scan on Android 11 and higher 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/89.txt: -------------------------------------------------------------------------------- 1 | * Refine the Spanish translations, credit @senpai33 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/90.txt: -------------------------------------------------------------------------------- 1 | * Add support for the Amnesty International Investgations database 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/91.txt: -------------------------------------------------------------------------------- 1 | * Various memory optimizations 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/92.txt: -------------------------------------------------------------------------------- 1 | * Don't trim hashes as much to reduce false positives 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/93.txt: -------------------------------------------------------------------------------- 1 | * Don't trim hashes as much to reduce false positives 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/94.txt: -------------------------------------------------------------------------------- 1 | * Make the app smalller 2 | * Colorize the manual scan button when possible 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/95.txt: -------------------------------------------------------------------------------- 1 | * Fix crash on Android <8.0 2 | * Skip certain actions when a manual scan is running 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/96.txt: -------------------------------------------------------------------------------- 1 | * Add support for the Echap stalkerware database 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/97.txt: -------------------------------------------------------------------------------- 1 | * Databases are now verified using GPG signatures 2 | * Users must use "Update databases" before use after installing this update 3 | * Databases that are not signed or fail to verify will be ignored 4 | * A custom database key is allowed to maintain support for third party database repos 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/99.txt: -------------------------------------------------------------------------------- 1 | * Fix for Android pre-7.1 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/full_description.txt: -------------------------------------------------------------------------------- 1 |

Hypatia is the worlds first FOSS malware scanner for Android. It is powered by ClamAV style signature databases.

2 | 3 | Features 4 |
    5 |
  • Near zero battery impact: you'll never notice any impact on battery at all
  • 6 |
  • Extremely fast: it can scan small files (1MB) in 20ms, and even large files (40MB) in 1000ms.
  • 7 |
  • Memory efficient: with the default databases enabled it uses under 120MB.
  • 8 |
  • Regular scan: allowing selection of /system, internal storage, external storage, and installed apps
  • 9 |
  • Realtime scanner: can detect malware in realtime on write/rename in internal storage
  • 10 |
  • Completely offline: Internet is only used to download signature databases, files will never ever leave your device
  • 11 |
  • Persistence: will automatically restart on boot/update
  • 12 |
  • Tiny codebase: coming in at under 1000 sloc, it can be audited by even someone with basic programming experience
  • 13 |
  • Minimal dependencies: the app only uses libraries when necessary
  • 14 |
  • Signature databases can be enabled/disabled at the users demand
  • 15 |
16 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/featureGraphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/en-US/images/featureGraphic.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/en-US/images/icon.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/01-Main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/en-US/images/phoneScreenshots/01-Main.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/02-Detection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/en-US/images/phoneScreenshots/02-Detection.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/03-Notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/en-US/images/phoneScreenshots/03-Notification.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | A real-time malware scanner 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Hypatia 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/es/full_description.txt: -------------------------------------------------------------------------------- 1 |

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
  • 15 |
16 | -------------------------------------------------------------------------------- /fastlane/metadata/android/fr/images/phoneScreenshots/01-Main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/fr/images/phoneScreenshots/01-Main.png -------------------------------------------------------------------------------- /fastlane/metadata/android/fr/images/phoneScreenshots/02-Detection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/fr/images/phoneScreenshots/02-Detection.png -------------------------------------------------------------------------------- /fastlane/metadata/android/fr/images/phoneScreenshots/03-Notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Divested-Mobile/Hypatia/2223a4d7892b9a6566eabe314d279a0a8f5d9cca/fastlane/metadata/android/fr/images/phoneScreenshots/03-Notification.png -------------------------------------------------------------------------------- /fastlane/metadata/android/fr/title.txt: -------------------------------------------------------------------------------- 1 | Hypatia 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pl-PL/full_description.txt: -------------------------------------------------------------------------------- 1 |

Hypatia to pierwszy w świecie FOSS skaner złośliwego oprogramowania na Androida. Jest oparty o bazy danych sygnatur w stylu ClamAV.

2 | 3 | Funkcje 4 |
    5 |
  • Prawie zerowy wpływ na baterię – nigdy nie zauważysz wpływu na zużycie baterii
  • 6 |
  • Ekstremalnie szybki – może skanować małe pliki files (1MB) w 20ms, a nawet większe pliki (40MB) w 1000ms.
  • 7 |
  • Oszczędny dla pamięci – z domyślnymi bazami danych wykorzystuje mniej niż 120MB.
  • 8 |
  • Zwykłe skanowanie – pozwala wybrać /system, pamięć wewnętrzną, zewnętrzną i zainstalowane aplikacje
  • 9 |
  • Skaner w czasie rzeczywistym – może wykrywać złośliwe oprogramowanie podczas nadpisywania/zmian nazw w pamięci wewnętrznej
  • 10 |
  • Całkowicie offline – Internet wykorzystywany jest jedynie do pobierania baz danych sygnatur, pliki nigdy nie opuszczą Twojego urządzenia
  • 11 |
  • Trwałość – automatycznie restartuje się po uruchomieniu/aktualizacji
  • 12 |
  • Niewielki kod – zawiera mniej niż 1000 linii kodu, może zostać zaudytowany nawet przez osobę z podstawową wiedzą o programowaniu
  • 13 |
  • Minimalne zależności – aplikacja wykorzystuje biblioteki jedynie gdy są potrzebne
  • 14 |
  • Bazy danych sygnatur mogą być włączone/wyłączone na życzenie użytkownika
  • 15 |
16 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pl-PL/short_description.txt: -------------------------------------------------------------------------------- 1 | Skaner złośliwego oprogramowania w czasie rzeczywistym 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pl-PL/title.txt: -------------------------------------------------------------------------------- 1 | Hypatia 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pt-BR/full_description.txt: -------------------------------------------------------------------------------- 1 |

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 | 3 | 4 | 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 "
" >> production/index.html
 7 | sed -i "s/\[DATE\]/$(date -u)/" production/index.html
 8 | java -jar HypatiaDatabaseConverter-0.1__.jar raw/ >> production/index.html
 9 | echo "
" >> production/index.html 10 | cat extended.html >> production/index.html 11 | mv raw/hypatia-*-bloom.bin production/ 12 | 13 | sed -s 'N;/md5: 0, sha1: 0, sha256: 0/!P;D' -i production/index.html 14 | 15 | 16 | sed -r '/Skipping/{/virustotal/!s~[^ -~]{64}+~&~}' -i production/index.html 17 | sed -r '/Skipping/{/virustotal/!s~[^ -~]{40}+~&~}' -i production/index.html 18 | sed -r '/Skipping/{/virustotal/!s~[^ -~]{32}+~&~}' -i production/index.html 19 | -------------------------------------------------------------------------------- /scripts/0malshare-bulk.sh: -------------------------------------------------------------------------------- 1 | #startdate=2013-04-06 2 | #enddate=2017-09-11 3 | 4 | startdate=2017-09-14 5 | enddate=2024-04-10 6 | 7 | curr="$startdate" 8 | while true; do 9 | #echo "https://malshare.com/daily/_disabled/$curr/malshare_fileList.$curr.txt" 10 | echo "https://malshare.com/daily/$curr/malshare_fileList.$curr.txt" 11 | [ "$curr" \< "$enddate" ] || break 12 | curr=$( date +%Y-%m-%d --date "$curr +1 day" ) 13 | done 14 | -------------------------------------------------------------------------------- /scripts/0malshare-combine.sh: -------------------------------------------------------------------------------- 1 | sort -u malshare-md5/malshare_fileList.2013-*.txt > raw-extended/malshare-2013.md5 2 | sort -u malshare-md5/malshare_fileList.2014-*.txt > raw-extended/malshare-2014.md5 3 | sort -u malshare-md5/malshare_fileList.2015-*.txt > raw-extended/malshare-2015.md5 4 | sort -u malshare-md5/malshare_fileList.2016-*.txt > raw-extended/malshare-2016.md5 5 | sort -u malshare-md5/malshare_fileList.2017-*.txt > raw-extended/malshare-2017.md5 6 | 7 | sort -u malshare-sha256/malshare_fileList.2017-*.sha256.txt > raw/malshare-2017.sha256 8 | sort -u malshare-sha256/malshare_fileList.2018-*.sha256.txt > raw/malshare-2018.sha256 9 | sort -u malshare-sha256/malshare_fileList.2019-*.sha256.txt > raw/malshare-2019.sha256 10 | sort -u malshare-sha256/malshare_fileList.2020-*.sha256.txt > raw/malshare-2020.sha256 11 | sort -u malshare-sha256/malshare_fileList.2021-*.sha256.txt > raw/malshare-2021.sha256 12 | sort -u malshare-sha256/malshare_fileList.2022-*.sha256.txt > raw/malshare-2022.sha256 13 | sort -u malshare-sha256/malshare_fileList.2023-*.sha256.txt > raw/malshare-2023.sha256 14 | sort -u malshare-sha256/malshare_fileList.2024-*.sha256.txt > raw/malshare-2024.sha256 15 | -------------------------------------------------------------------------------- /scripts/0sanesecurity.sh: -------------------------------------------------------------------------------- 1 | cd sanesecurity-real/ 2 | 3 | #rsync -av rsync://rsync.sanesecurity.net/sanesecurity . 4 | 5 | for f in *.hsb; do 6 | echo "" >> "../raw/sanesecurity-$f"; 7 | cat "$f" >> "../raw/sanesecurity-$f"; 8 | sort -u -o "../raw/sanesecurity-$f" "../raw/sanesecurity-$f"; 9 | done 10 | 11 | for f in *.hdb; do 12 | echo "" >> "../raw/sanesecurity-$f"; 13 | cat "$f" >> "../raw/sanesecurity-$f"; 14 | sort -u -o "../raw/sanesecurity-$f" "../raw/sanesecurity-$f"; 15 | done 16 | 17 | rm -v ../raw/sanesecurity-crdfam.clamav.hdb ../raw/sanesecurity-doppelstern.hdb ../raw/sanesecurity-malware.expert.hdb 18 | -------------------------------------------------------------------------------- /scripts/0stalkerware.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #License: CC0 3 | #Description: Hypatia conversion script for https://github.com/AssoEchap/stalkerware-indicators (CC BY 4.0) 4 | 5 | while IFS=, read -r col1SHA col2Package col3Certificate col4Version col5Name 6 | do 7 | if [ -n "$col1SHA" ] && [ -n "$col5Name" ]; then 8 | echo "$col1SHA:0:$col5Name" >> ./stalkerware.hsb; 9 | fi; 10 | done < samples.csv; 11 | 12 | sed -i '1d' stalkerware.hsb; 13 | -------------------------------------------------------------------------------- /scripts/0targetedthreats.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #License: CC0 3 | #Description: Hypatia conversion script for https://github.com/botherder/targetedthreats (CC BY-SA 4.0) 4 | 5 | while IFS=, read -r col1MD5 col2SHA256 col3Family col4Actor col5Country col6Report 6 | do 7 | col4Actor=$(sed -e 's/^"//' -e 's/"$//' <<< "$col4Actor"); 8 | col3Family=$(sed -e 's/^"//' -e 's/"$//' <<< "$col3Family"); 9 | if [ -n "$col4Actor" ] && [ -n "$col3Family" ]; then 10 | description="$col4Actor-$col3Family"; 11 | elif [ -n "$col4Actor" ] && [ -z "$col3Family" ]; then 12 | description="$col4Actor"; 13 | elif [ -z "$col4Actor" ] && [ -n "$col3Family" ]; then 14 | description="$col3Family"; 15 | fi; 16 | if [ -z "$description" ]; then 17 | description="targetedthreats"; 18 | fi; 19 | 20 | col1MD5=$(sed -e 's/^"//' -e 's/"$//' <<< "$col1MD5"); 21 | if [ -n "$col1MD5" ]; then 22 | echo "$col1MD5:0:$description" >> ./targetedthreats.hdb; 23 | fi; 24 | 25 | col2SHA256=$(sed -e 's/^"//' -e 's/"$//' <<< "$col2SHA256"); 26 | if [ -n "$col2SHA256" ]; then 27 | echo "$col2SHA256:0:$description" >> ./targetedthreats.hsb; 28 | fi; 29 | done < samples.csv; 30 | 31 | sed -i '1d' targetedthreats.hdb; 32 | sed -i '1d' targetedthreats.hsb; 33 | -------------------------------------------------------------------------------- /scripts/0threatfox.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #License: CC0 3 | #Description: Hypatia conversion script for https://threatfox.abuse.ch/export/csv/sha256/full/ (CC0) 4 | 5 | tail -n +10 full_sha256.csv | awk '{ print $4 } ' | sed 's/^"//' | sed 's/",$//' > threatfox.sha256 6 | -------------------------------------------------------------------------------- /scripts/0threatview.sh: -------------------------------------------------------------------------------- 1 | wget "https://threatview.io/Downloads/MD5-HASH-ALL.txt" -O - | sed 's/MD5 of //' >> raw/threatview.md5 2 | wget "https://threatview.io/Downloads/SHA-HASH-FEED.txt" -O - >> raw/threatview.sha1 3 | 4 | sort -u -o raw/threatview.md5 raw/threatview.md5 5 | sort -u -o raw/threatview.sha1 raw/threatview.sha1 6 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' --------------------------------------------------------------------------------