TL;DR:
- Collect Android environment information + (string escape + base64 encode)
- Send data to
fingerprintDatafunction in WebView viaWebView.evaluateJavascript - Forward data sent into the WebView to
arkoseEnforcement.dataResponse(dataCollection)in the JavaScriptapi.js - Emit the event from
api.jstoenforcement.version_hash.jsLe.emit("data_response", {message: "data_response", data: eventData, key: Jt.config.publicKey});
- Base64 decode +
JSON.parse:_o.sdkData.ef = parsed; - Append to BDA payload:
n.ef[t.key] = t.value;
2.4.1(11)
try
{
// [...]
}
catch(Exception e)
{
errors += key + ":" + e.getMessage() + ";";
}proximitySensor2.hasProximitySensor + "," + proximitySensor2.hasProximitySensorNumTODO
TODO
boolean keyboard = this.context.getResources().getConfiguration().keyboard != 1;Settings.Global.getInt(this.context.getContentResolver(), "adb_enabled", 0)this.context.getPackageManager().getPackageInfo(this.context.getPackageName(), 0).packageName;this.context.getPackageManager().getPackageInfo(this.context.getPackageName(), 0).versionName;public final String getSigningCredentials() throws PackageManager.NameNotFoundException
{
StringBuilder results = new StringBuilder();
for(Signature signature : this.context.getPackageManager().getPackageInfo(this.context.getPackageName(), PackageManager.GET_SIGNATURES).signatures)
{
results.append(new String(signature.toByteArray()));
}
return BaseSignalGroup.sha256AsHex(results.toString());
}Build.BOARDBuild.SUPPORTED_ABISBuild.HARDWAREBuild.SOC_MANUFACTURERBuild.SOC_MODELSystem.getProperty("os.arch", "");Runtime.getRuntime().availableProcessors();Prefs.sharedPreferences.getString("gpuInfo", "");public final ArrayList<Long> getStorageInfo()
{
ArrayList<Long> results = new ArrayList<>();
StatFs statFs = new StatFs(Environment.getDataDirectory().getPath());
results.add(statFs.getAvailableBlocksLong() * statFs.getBlockSizeLong());
results.add(statFs.getBlockCountLong() * statFs.getBlockSizeLong());
if(Environment.isExternalStorageRemovable())
{
StatFs statFs2 = new StatFs(Environment.getExternalStorageDirectory().getPath());
results.add(statFs2.getAvailableBlocksLong() * statFs2.getBlockSizeLong());
results.add(statFs2.getBlockCountLong() * statFs2.getBlockSizeLong());
}
return results;
}DisplayMetrics displayMetrics = new DisplayMetrics();
((WindowManager) this.context.getSystemService("window")).getDefaultDisplay().getRealMetrics(displayMetrics);
Pair<Integer, Integer> pair = new Pair<>(displayMetrics.widthPixels, displayMetrics.heightPixels);
arrayList.add(new SignalResult("mobile_sdk__screen_width", pair.first));
arrayList.add(new SignalResult("mobile_sdk__screen_height", pair.second));public final String getInputDevicesHash()
{
StringBuilder result = new StringBuilder();
int[] deviceIds = InputDevice.getDeviceIds();
if(deviceIds.length > 0)
{
for(int i : deviceIds)
{
InputDevice device = InputDevice.getDevice(i);
result.append(device.getName() + "," + device.getVendorId() + ";");
}
String str = deviceIds.length + "#" + result.toString();
return BaseSignalGroup.sha256AsHex(str.substring(str.indexOf("#") + 1));
}
return "";
}public final String getSensorsHash()
{
StringBuilder result = new StringBuilder();
List<Sensor> sensorList = ((SensorManager) this.context.getSystemService("sensor")).getSensorList(-1);
if(sensorList.size() > 0)
{
for(int i = 0; i < sensorList.size(); i++)
{
result.append(sensorList.get(i).getName() + "," + sensorList.get(i).getVendor() + ";");
}
return BaseSignalGroup.sha256AsHex(result.toString());
}
return null;
}[
CameraCharacteristics.LENS_FACING_FRONT,
CameraCharacteristics.LENS_FACING_BACK,
CameraCharacteristics.LENS_FACING_EXTERNAL, // other
]BiometricManager.from(this.context).canAuthenticate(255);
// returns based on resultPair pair2 = new Pair(str, Integer.valueOf(((BatteryManager) this.context.getSystemService("batterymanager")).getIntProperty(4)));
arrayList.add(new SignalResult("mobile_sdk__battery_status", (String) pair2.first));
arrayList.add(new SignalResult("mobile_sdk__battery_capacity", (Integer) pair2.second));"Un", "LR", "PU", "LL", or "P"
Build.VERSION.RELEASEBuild.VERSION.SDK_INTSystem.getProperty("os.version", "")Build.BOOTLOADERBuild.TAGS.split(",")Build.TYPEMediaCodecInfo.getSupportedTypes() encoded into JSON and sha256 hashed
Settings.Secure.getString(this.context.getContentResolver(), "android_id")sha256(Arrays.asList(this.context.getAssets().getLocales()).toString())context.getResources().getConfiguration().locale.getCountry()Locale.getDefault().getLanguage()TimeZone.getDefault().getOffset(new Date().getTime()) / 60000sha256(Settings.Global.getString(this.context.getContentResolver(), "device_name"))(Settings.System.getInt(this.context.getContentResolver(), "screen_brightness", -1) * 100) / 255Build.MANUFACTURERBuild.MODELBuild.BRANDBuild.PRODUCTBuild.DEVICEBuild.SKU