TL;DR:
- Collect Android environment information + (string escape + base64 encode)
- Send data to
fingerprintData
function in WebView viaWebView.evaluateJavascript
- Forward data sent into the WebView to
arkoseEnforcement.dataResponse(dataCollection)
in the JavaScriptapi.js
- Emit the event from
api.js
toenforcement.version_hash.js
Le.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.hasProximitySensorNum
TODO
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.BOARD
Build.SUPPORTED_ABIS
Build.HARDWARE
Build.SOC_MANUFACTURER
Build.SOC_MODEL
System.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 result
Pair 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.RELEASE
Build.VERSION.SDK_INT
System.getProperty("os.version", "")
Build.BOOTLOADER
Build.TAGS.split(",")
Build.TYPE
MediaCodecInfo.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()) / 60000
sha256(Settings.Global.getString(this.context.getContentResolver(), "device_name"))
(Settings.System.getInt(this.context.getContentResolver(), "screen_brightness", -1) * 100) / 255
Build.MANUFACTURER
Build.MODEL
Build.BRAND
Build.PRODUCT
Build.DEVICE
Build.SKU