Add support for the Echap stalkerware database

Signed-off-by: Tad <tad@spotco.us>
This commit is contained in:
Tad 2023-03-06 20:10:27 -05:00
parent d052fff807
commit 76d06b504f
No known key found for this signature in database
GPG key ID: B286E9F57A07424B
7 changed files with 27 additions and 4 deletions

View file

@ -65,6 +65,7 @@ Credits
- ESET for extra databases (BSD 2-Clause) - ESET for extra databases (BSD 2-Clause)
- Nex (@botherder) for extra databases (CC BY-SA 4.0) - Nex (@botherder) for extra databases (CC BY-SA 4.0)
- Amnesty International for extra databases (CC BY 2.0) - Amnesty International for extra databases (CC BY 2.0)
- Echap for extra databases (CC BY 4.0)
- RecursiveFileObserver.java (GPLv3): Daniel Gultsch, ownCloud Inc., Bartek Przybylski - RecursiveFileObserver.java (GPLv3): Daniel Gultsch, ownCloud Inc., Bartek Przybylski
- Petra Mirelli for the German/Spanish/Italian translations, the app banner/feature graphic, and various tweaks. - Petra Mirelli for the German/Spanish/Italian translations, the app banner/feature graphic, and various tweaks.
- Jean-Luc Tibaux and Petra Mirelli for the French translations. - Jean-Luc Tibaux and Petra Mirelli for the French translations.

View file

@ -6,8 +6,8 @@ android {
applicationId "us.spotco.malwarescanner" applicationId "us.spotco.malwarescanner"
minSdkVersion 16 minSdkVersion 16
targetSdkVersion 32 targetSdkVersion 32
versionCode 95 versionCode 96
versionName "2.29" versionName "2.30"
resConfigs 'en', 'af', 'de', 'es', 'fi', 'fr', 'it', 'pl', 'pt', 'ru' resConfigs 'en', 'af', 'de', 'es', 'fi', 'fr', 'it', 'pl', 'pt', 'ru'
} }
buildTypes { buildTypes {

View file

@ -96,6 +96,9 @@ class Database {
if (prefs.getBoolean("SIGNATURES_AMNESTY", true)) { if (prefs.getBoolean("SIGNATURES_AMNESTY", true)) {
signatureDatabases.add(new SignatureDatabase(baseURL, "amnesty.hsb.gz")); signatureDatabases.add(new SignatureDatabase(baseURL, "amnesty.hsb.gz"));
} }
if (prefs.getBoolean("SIGNATURES_STALKERWARE", true)) {
signatureDatabases.add(new SignatureDatabase(baseURL, "stalkerware.hsb.gz"));
}
if (prefs.getBoolean("SIGNATURES_ESET", true)) { if (prefs.getBoolean("SIGNATURES_ESET", true)) {
signatureDatabases.add(new SignatureDatabase(baseURL, "eset.hdb.gz")); signatureDatabases.add(new SignatureDatabase(baseURL, "eset.hdb.gz"));
signatureDatabases.add(new SignatureDatabase(baseURL, "eset.hsb.gz")); signatureDatabases.add(new SignatureDatabase(baseURL, "eset.hsb.gz"));

View file

@ -150,14 +150,16 @@ public class MainActivity extends Activity {
localizeDBDescription("ClamAV: Daily\n • SIZE: SIZE_LARGE\n • LICENSE: GPL-2.0\n • AUTHOR: Cisco\n • SOURCE: https://clamav.net\n"), localizeDBDescription("ClamAV: Daily\n • SIZE: SIZE_LARGE\n • LICENSE: GPL-2.0\n • AUTHOR: Cisco\n • SOURCE: https://clamav.net\n"),
localizeDBDescription("ESET\n • SIZE: SIZE_SMALL\n • LICENSE: BSD 2-Clause\n • AUTHOR: ESET\n • SOURCE: https://github.com/eset/malware-ioc\n"), localizeDBDescription("ESET\n • SIZE: SIZE_SMALL\n • LICENSE: BSD 2-Clause\n • AUTHOR: ESET\n • SOURCE: https://github.com/eset/malware-ioc\n"),
localizeDBDescription("Targeted Threats\n • SIZE: SIZE_SMALL\n • LICENSE: CC BY-SA 4.0\n • AUTHOR: Nex\n • SOURCE: https://github.com/botherder/targetedthreats\n"), localizeDBDescription("Targeted Threats\n • SIZE: SIZE_SMALL\n • LICENSE: CC BY-SA 4.0\n • AUTHOR: Nex\n • SOURCE: https://github.com/botherder/targetedthreats\n"),
localizeDBDescription("Amnesty Tech Investigations\n • SIZE: SIZE_SMALL\n • LICENSE: CC BY 2.0\n • AUTHOR: Amnesty International\n • SOURCE: https://github.com/amnestytech/investigations")}; localizeDBDescription("Amnesty Tech Investigations\n • SIZE: SIZE_SMALL\n • LICENSE: CC BY 2.0\n • AUTHOR: Amnesty International\n • SOURCE: https://github.com/amnestytech/investigations\n"),
localizeDBDescription("Stalkerware\n • SIZE: SIZE_SMALL\n • LICENSE: CC BY 4.0\n • AUTHOR: Echap\n • SOURCE: https://github.com/AssoEchap/stalkerware-indicators")};
final boolean[] databaseDefaults = { final boolean[] databaseDefaults = {
prefs.getBoolean("SIGNATURES_CLAMAV-ANDROID", true), prefs.getBoolean("SIGNATURES_CLAMAV-ANDROID", true),
prefs.getBoolean("SIGNATURES_CLAMAV-MAIN", false), prefs.getBoolean("SIGNATURES_CLAMAV-MAIN", false),
prefs.getBoolean("SIGNATURES_CLAMAV-DAILY", false), prefs.getBoolean("SIGNATURES_CLAMAV-DAILY", false),
prefs.getBoolean("SIGNATURES_ESET", true), prefs.getBoolean("SIGNATURES_ESET", true),
prefs.getBoolean("SIGNATURES_TARGETEDTHREATS", true), prefs.getBoolean("SIGNATURES_TARGETEDTHREATS", true),
prefs.getBoolean("SIGNATURES_AMNESTY", true)}; prefs.getBoolean("SIGNATURES_AMNESTY", true),
prefs.getBoolean("SIGNATURES_STALKERWARE", true)};
Dialog databaseDialog; Dialog databaseDialog;
AlertDialog.Builder databaseBuilder = new AlertDialog.Builder(this); AlertDialog.Builder databaseBuilder = new AlertDialog.Builder(this);
@ -171,6 +173,7 @@ public class MainActivity extends Activity {
prefs.edit().putBoolean("SIGNATURES_ESET", databaseDefaults[3]).apply(); prefs.edit().putBoolean("SIGNATURES_ESET", databaseDefaults[3]).apply();
prefs.edit().putBoolean("SIGNATURES_TARGETEDTHREATS", databaseDefaults[4]).apply(); prefs.edit().putBoolean("SIGNATURES_TARGETEDTHREATS", databaseDefaults[4]).apply();
prefs.edit().putBoolean("SIGNATURES_AMNESTY", databaseDefaults[5]).apply(); prefs.edit().putBoolean("SIGNATURES_AMNESTY", databaseDefaults[5]).apply();
prefs.edit().putBoolean("SIGNATURES_STALKERWARE", databaseDefaults[6]).apply();
}); });
databaseDialog = databaseBuilder.create(); databaseDialog = databaseBuilder.create();

View file

@ -15,6 +15,7 @@
<item>• ESET: Signature Databases</item> <item>• ESET: Signature Databases</item>
<item>• Nex (@botherder): Signature Databases</item> <item>• Nex (@botherder): Signature Databases</item>
<item>• Amnesty International: Signature Databases</item> <item>• Amnesty International: Signature Databases</item>
<item>• Echap: Signature Databases</item>
<item>• RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski</item> <item>• RecursiveFileObserver.java: Daniel Gultsch, ownCloud Inc., Bartek Przybylski</item>
<item>• Google: App Icon</item> <item>• Google: App Icon</item>
</string-array> </string-array>

View file

@ -0,0 +1 @@
* Add support for the Echap stalkerware database

14
scripts/0stalkerware.sh Normal file
View file

@ -0,0 +1,14 @@
#!/bin/bash
#License: GPLv3
#Description: Hypatia conversion script for https://github.com/AssoEchap/stalkerware-indicators (CC BY 4.0)
while IFS=, read -r col1SHA col2Package col3Certificate col4Version col5Name
do
if [ -n "$col1SHA" ] && [ -n "$col5Name" ]; then
echo "$col1SHA:0:$col5Name" >> ./stalkerware.hsb;
fi;
done < samples.csv;
sed -i '1d' stalkerware.hsb;
gzip stalkerware.hsb;