Skip to content

Commit 02ecdd1

Browse files
committed
Merge pull request #95 from Fuzion24/feature/check_for_device_updates
Feature/check for device updates
2 parents 489b1d9 + 07889ee commit 02ecdd1

File tree

4 files changed

+73
-5
lines changed

4 files changed

+73
-5
lines changed

app/src/main/java/fuzion24/device/vulnerability/util/DeviceInfo.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ public class DeviceInfo {
2626
private final String[] supportedABIS;
2727

2828

29-
3029
private final String buildID;
3130

3231

@@ -97,7 +96,6 @@ public static String readKernelVersion() {
9796
return System.getProperty("os.version");
9897
}
9998

100-
10199
public String getKernelVersion() {
102100
return kernelVersion;
103101
}

app/src/main/java/fuzion24/device/vulnerability/util/SharedPreferencesUtils.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public class SharedPreferencesUtils {
1313
private static final String PREFS_LAST_LIST_OF_SCANS = "PREFS_LIST_OF_SCANS";
1414
private static final String PREFS_FIRST_RUN = "PREFS_FIRST_RUN";
1515
private static final String PREFS_AUTOMATIC_SHARING_ENABLE = "PREFS_AUTOMATIC_SHARING_ENABLE";
16+
private static final String BUILD_FINGERPRINT_HASH = "BUILD_FINGERPRINT_HASH";
17+
1618

1719
private static final String PREFS_NAME = "com.nowsecure.android.vts.PREFERENCE_FILE_KEY";
1820

@@ -57,4 +59,16 @@ public static void setTheListOfScansAvailable(Context context, List<String> list
5759
editor.apply();
5860
}
5961

62+
public static void setBuildUpdateFingerPrint(Context context, String fingerprint){
63+
SharedPreferences.Editor editor = getPreferences(context).edit();
64+
65+
editor.putString(BUILD_FINGERPRINT_HASH, fingerprint);
66+
67+
editor.apply();
68+
}
69+
70+
public static String getBuildUpdateFingerprint(Context context){
71+
return getPreferences(context).getString(BUILD_FINGERPRINT_HASH, null);
72+
}
73+
6074
}

app/src/main/java/fuzion24/device/vulnerability/vulnerabilities/VulnerabilityOrganizer.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import android.content.Context;
55
import android.util.Log;
66

7-
import java.lang.reflect.Method;
87
import java.util.ArrayList;
98
import java.util.List;
109

@@ -34,7 +33,7 @@ public class VulnerabilityOrganizer {
3433

3534
//TODO: Maybe add dates to each of these and sort chronologically
3635
public static List<VulnerabilityTest> getTests(Context ctx){
37-
List<VulnerabilityTest> allTests = new ArrayList<VulnerabilityTest>();
36+
List<VulnerabilityTest> allTests = new ArrayList<>();
3837
allTests.add(new ZipBug9950697());
3938
allTests.add(new ZipBug8219321());
4039
allTests.add(new ZipBug9695860());
@@ -56,7 +55,7 @@ public static List<VulnerabilityTest> getTests(Context ctx){
5655
allTests.add(new CVE20151528());
5756
allTests.add(new CVE_2015_6616());
5857

59-
List<VulnerabilityTest> filteredTest = new ArrayList<VulnerabilityTest>();
58+
List<VulnerabilityTest> filteredTest = new ArrayList<>();
6059
String cpuArch1 = SystemUtils.propertyGet(ctx, "ro.product.cpu.abi");
6160
String cpuArch2 = SystemUtils.propertyGet(ctx, "ro.product.cpu.abi2");
6261

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package fuzion24.device.vulnerability.vulnerabilities.helper;
2+
3+
import android.content.Context;
4+
import android.content.SharedPreferences;
5+
import android.os.Build;
6+
import android.util.Base64;
7+
8+
import java.io.File;
9+
import java.security.MessageDigest;
10+
import java.util.HashSet;
11+
import java.util.Scanner;
12+
13+
import fuzion24.device.vulnerability.util.SharedPreferencesUtils;
14+
15+
/**
16+
* Created by fuzion24 on 12/4/15.
17+
*/
18+
public class DeviceUpdateChecker {
19+
public static boolean wasDeviceUpdated(Context ctx){
20+
21+
/*
22+
Take a hash of the build.prop and /proc/version
23+
If this changes, assume the device has been updated
24+
*/
25+
String buildPropFile = readFile("/system/build.prop");
26+
String procVersion = readFile("/proc/version");
27+
28+
String fingerprint = hashString(buildPropFile + procVersion);
29+
String lastFingerprint = SharedPreferencesUtils.getBuildUpdateFingerprint(ctx);
30+
if(fingerprint.equals(lastFingerprint)){
31+
return false;
32+
} else {
33+
SharedPreferencesUtils.setBuildUpdateFingerPrint(ctx, fingerprint);
34+
return true;
35+
}
36+
}
37+
38+
private static String hashString(String data){
39+
try {
40+
MessageDigest md = MessageDigest.getInstance("SHA");
41+
md.update(data.getBytes());
42+
byte[] hash = md.digest();
43+
return Base64.encodeToString(hash, Base64.DEFAULT);
44+
} catch (Exception e) {
45+
return "";
46+
}
47+
}
48+
49+
private static String readFile(String filename){
50+
try {
51+
return new Scanner(new File(filename)).useDelimiter("\\Z").next();
52+
}catch(Exception e){
53+
return "";
54+
}
55+
}
56+
57+
}

0 commit comments

Comments
 (0)