More fixes

- Fixup SHA1 hash calculation
- Show full notification text when expanded
- Make basic self test more robust
- Add a self test option that actually writes files
- Bump version to 3.0, since all previous versions are basically completely broken garbage

Signed-off-by: Tad <tad@spotco.us>
This commit is contained in:
Tad 2023-12-25 16:43:33 -05:00
parent 71cc9157a7
commit 72d1f97a96
No known key found for this signature in database
GPG key ID: B286E9F57A07424B
8 changed files with 43 additions and 7 deletions

View file

@ -6,8 +6,8 @@ android {
applicationId "us.spotco.malwarescanner"
minSdkVersion 19
targetSdkVersion 32
versionCode 120
versionName "2.40"
versionCode 121
versionName "3.0"
resConfigs 'en', 'af', 'de', 'el', 'es', 'fi', 'fr', 'it', 'pl', 'pt', 'ru', 'tr', 'zh-rCN'
}
buildTypes {

View file

@ -244,9 +244,12 @@ class Database {
public static boolean selfTest() {
if (signaturesMD5 != null && signaturesSHA1 != null && signaturesSHA256 != null) {
return signaturesMD5.mightContain("903616d0dbe074aa363d2d49c03f7362")
&& signaturesSHA1.mightContain("fc4a3e802894cc2229be77ec6f082d1aab744e54")
&& signaturesSHA256.mightContain("df44844a0e99ddd935e8419257440a2ca7ef3243435a67416fcbb6cd3ae560c3");
return signaturesMD5.mightContain("903616d0dbe074aa363d2d49c03f7362") //HypatiaHypatiaHypatia
&& signaturesMD5.mightContain("faf325d9d4b2a6c9457405eb31870b22") //HypatiaHypatiaHypatia-MD5
&& signaturesSHA1.mightContain("fc4a3e802894cc2229be77ec6f082d1aab744e54") //HypatiaHypatiaHypatia
&& signaturesSHA1.mightContain("04445ab9332cdca0031184165eb88a0a9dcec4ed") //HypatiaHypatiaHypatia-SHA1
&& signaturesSHA256.mightContain("df44844a0e99ddd935e8419257440a2ca7ef3243435a67416fcbb6cd3ae560c3") //HypatiaHypatiaHypatia
&& signaturesSHA256.mightContain("3be403a831795482e82e2f9bc3e57ca34744aca3756e297b056b9f9c41830eaf"); //HypatiaHypatiaHypatia-SHA256
}
return false;
}

View file

@ -228,6 +228,9 @@ public class MainActivity extends Activity {
scanExternal = !item.isChecked();
item.setChecked(scanExternal);
break;
case R.id.mnuSelfTestReal:
Utils.writeSelfTestFiles();
break;
case R.id.mnuFullCredits:
showCredits();
break;

View file

@ -88,7 +88,8 @@ class MalwareScanner extends AsyncTask<HashSet<File>, Object, String> {
new Notification.Builder(context.getApplicationContext())
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(context.getText(R.string.lblNotificationRealtimeDetection) + " " + malwareDetect[0])
.setContentText("File: >>>" + malwareDetect[1] + "<<<\nID: >>>" + hashsum.substring(0, 8) + "<<<")
.setContentText("File: >>>" + malwareDetect[1] + "<<<")
.setStyle(new Notification.BigTextStyle().bigText("File: >>>" + malwareDetect[1] + "<<<\nID: >>>" + hashsum.substring(0, 8) + "<<<"))
.setOngoing(true)
.setPriority(Notification.PRIORITY_MAX)
.setDefaults(Notification.DEFAULT_VIBRATE);
@ -314,7 +315,7 @@ class MalwareScanner extends AsyncTask<HashSet<File>, Object, String> {
fis.close();
fileHashesMD5.put(file, String.format("%032x", new BigInteger(1, digestMD5.digest())).toLowerCase());
fileHashesSHA1.put(file, String.format("%032x", new BigInteger(1, digestSHA1.digest())).toLowerCase());
fileHashesSHA1.put(file, String.format("%040x", new BigInteger(1, digestSHA1.digest())).toLowerCase());
fileHashesSHA256.put(file, String.format("%064x", new BigInteger(1, digestSHA256.digest())).toLowerCase());
} catch (Exception e) {
e.printStackTrace();

View file

@ -25,10 +25,13 @@ import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Environment;
import java.io.File;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.HashSet;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
@ -188,4 +191,22 @@ class Utils {
public static void setContext(Context context) {
Utils.context = context;
}
public static void writeSelfTestFiles() {
int rand = new Random().nextInt();
writeStringToFile(new File(Environment.getExternalStorageDirectory() + "/Hypatia-MD5-Test-" + rand + ".txt"), "HypatiaHypatiaHypatia-MD5");
writeStringToFile(new File(Environment.getExternalStorageDirectory() + "/Hypatia-SHA1-Test-" + rand + ".txt"), "HypatiaHypatiaHypatia-SHA1");
writeStringToFile(new File(Environment.getExternalStorageDirectory() + "/Hypatia-SHA256-Test-" + rand + ".txt"), "HypatiaHypatiaHypatia-SHA256");
}
public static void writeStringToFile(File fileOut, String s) {
//Write the file
try {
PrintWriter writer = new PrintWriter(fileOut, "UTF-8");
writer.print(s);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

View file

@ -44,6 +44,9 @@
android:title="@string/lblScanExternal"
android:checkable="true"
android:checked="false" />
<item
android:id="@+id/mnuSelfTestReal"
android:title="@string/lblSelfTest" />
<item
android:id="@+id/mnuFullCredits"
android:title="@string/lblFullCredits" />

View file

@ -82,4 +82,5 @@
<string name="confirm_uninstall_title">Confirm uninstall</string>
<string name="confirm_uninstall_summary">Are you sure you want to uninstall the following app?</string>
<string name="uninstallApp">Uninstall</string>
<string name="lblSelfTest">Write self test files</string>
</resources>

View file

@ -0,0 +1,4 @@
* Fixup SHA1 hash calculation
* Show full notification text when expanded
* Make basic self test more robust
* Add a self test option that actually writes files