package fuzion24.device.vulnerability.vulnerabilities.helper; import android.content.Context; import android.content.SharedPreferences; import android.os.Build; import android.util.Base64; import java.io.File; import java.security.MessageDigest; import java.util.HashSet; import java.util.Scanner; import fuzion24.device.vulnerability.util.SharedPreferencesUtils; /** * Created by fuzion24 on 12/4/15. */ public class DeviceUpdateChecker { private DeviceUpdateChecker() { } public static boolean wasDeviceUpdated(Context ctx){ /* Take a hash of the build.prop and /proc/version If this changes, assume the device has been updated */ String buildPropFile = readFile("/system/build.prop"); String procVersion = readFile("/proc/version"); String fingerprint = hashString(buildPropFile + procVersion); String lastFingerprint = SharedPreferencesUtils.getBuildUpdateFingerprint(ctx); if(fingerprint.equals(lastFingerprint)){ return false; } else { SharedPreferencesUtils.setBuildUpdateFingerPrint(ctx, fingerprint); return true; } } private static String hashString(String data){ try { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(data.getBytes()); byte[] hash = md.digest(); return Base64.encodeToString(hash, Base64.DEFAULT); } catch (Exception e) { return ""; } } private static String readFile(String filename){ try { return new Scanner(new File(filename)).useDelimiter("\\Z").next(); }catch(Exception e){ return ""; } } }