content: 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 "";
          }
      }
  
  }
  