Package-level declarations

Types

Link copied to clipboard

Bounded IO pool for binder/disk/sensor reads — matches CollectorRuntime.passiveSemaphore.

Link copied to clipboard

Shared runtime scaffolding used by collectors: concurrency limits, per-category timeouts, API-level guards, safe Settings readers and a bounded/timed collect wrapper.

Link copied to clipboard
data class GlesFingerprintResult(val glEsVersion: String, val reqGlEsVersion: Int, val renderer: String, val vendor: String, val version: String, val extensionsHash: String, val eglExtensionsHash: String, val glslVersion: String, val glMaxTexture: String, val glMaxViewport: String)

Immutable result of an OpenGL ES / EGL fingerprint probe.

Link copied to clipboard
data class InstalledPackageProbe(val visibleCount: Int, val systemCount: Int, val userCount: Int)

Aggregate counts describing installed applications, without listing package names.

Link copied to clipboard
data class NsdDiscoveryResult(val servicesFound: Int, val serviceTypes: Map<String, Int>, val discoverySuccess: Boolean)

Aggregate result of an mDNS/NSD local-network service discovery sweep.

Link copied to clipboard

Heuristic custom-ROM detection and cross-ROM safe property reads. Works on stock OEM, LineageOS, GrapheneOS, /e/OS, crDroid, PixelExperience, MIUI, etc.

Link copied to clipboard
data class RomProfile(val family: String, val variant: String?, val confidence: String, val buildIntegrity: String, val spoofingHints: List<String>, val propertyHints: Map<String, String>)

Result of ROM detection: the identified family plus integrity/spoofing hints.

Link copied to clipboard

Pure functions that turn raw probe values into human-readable, privacy-aware descriptions.

Link copied to clipboard
data class TtsVoiceSummary(val localeCount: Int, val localeSample: String)

Summary of installed TTS voice locales.

Link copied to clipboard
data class WebViewFingerprintResult(val userAgent: String, val platform: String, val hardwareConcurrency: String, val deviceMemory: String, val canvasHash: String, val webglVendor: String, val webglRenderer: String, val webglHash: String, val timezone: String, val languages: String, val screenSize: String, val colorDepth: String, val pixelRatio: String, val maxTouchPoints: String, val audioContextHash: String)

Result of the in-app WebView browser-fingerprint probe.

Properties

Link copied to clipboard

Sentinel FingerprintSignal.value marking a probe that failed to collect.

Functions

Link copied to clipboard
inline fun MutableList<FingerprintSignal>.addOptional(category: SignalCategory, key: String, name: String, rationale: String = "Device API fingerprint signal.", block: () -> FingerprintSignal)

Adds signal only when block succeeds; failed probes are skipped (logged at WARN).

Link copied to clipboard
inline fun MutableList<FingerprintSignal>.addSafe(category: SignalCategory, key: String, name: String, rationale: String = "Device API fingerprint signal.", block: () -> FingerprintSignal)
Link copied to clipboard

Emits live SignalCategory.Audio signals as audio routing changes.

Link copied to clipboard
fun awLogW(section: String, message: () -> String)
Link copied to clipboard
inline suspend fun <T> awTrace(section: String, crossinline block: suspend () -> T): T

Perfetto / Systrace slice around suspend work. Near no-op when tracing off.

Link copied to clipboard

Emits live SignalCategory.Battery signals from the ACTION_BATTERY_CHANGED broadcast.

Link copied to clipboard

Returns the device's sensor list, capped at max entries and failing soft to empty.

Link copied to clipboard
Link copied to clipboard

Converts a byte array to a lowercase hex string.

Link copied to clipboard

Collects an OpenGL ES / EGL fingerprint by briefly creating an offscreen GL context.

Link copied to clipboard

Collects a summary of installed TTS voice locales via a short-lived TextToSpeech engine.

Link copied to clipboard

Runs the FINGERPRINT_HTML page in an offscreen WebView and collects the resulting browser fingerprint.

Link copied to clipboard
fun compoundSignal(category: SignalCategory, key: String, name: String, entries: List<SignalEntry>, rationale: String): FingerprintSignal

Builds a DisplayHint.Compound signal from key/value entries; the flat value is a newline-joined key: value rendering for exports.

Link copied to clipboard
fun countQuery(context: Context, uri: Uri, selection: String? = null): Int

Counts the rows a content-provider query returns without exposing their contents.

Link copied to clipboard
suspend fun discoverLocalNetworkServices(context: Context, timeoutMs: Long = 3500): NsdDiscoveryResult

Discovers mDNS/DNS-SD services on the local network via NsdManager for a bounded time.

Link copied to clipboard
fun failedSignal(category: SignalCategory, key: String, name: String, error: Throwable, rationale: String = "Device API fingerprint signal."): FingerprintSignal

Builds an error FingerprintSignal (DisplayHint.Error) representing a failed probe.

Link copied to clipboard
inline fun MutableList<FingerprintSignal>.forEachProbe(category: SignalCategory, rationale: String = "Device API fingerprint signal.", keyPrefix: String = "", namePrefix: String = "", crossinline block: () -> Map<String, String>)

Runs block to produce a probe map; each entry is collected via addSafe. A failing batch is skipped.

Link copied to clipboard
fun interpretedSignal(category: SignalCategory, key: String, name: String, summary: String, raw: String, rationale: String, displayHint: DisplayHint = DisplayHint.Plain, entries: List<SignalEntry> = emptyList()): FingerprintSignal

Builds a FingerprintSignal that carries both a human-friendly summary and the original raw value (retained in FingerprintSignal.rawValue).

Link copied to clipboard

Emits live SignalCategory.DeviceMotion signals from the accelerometer.

Link copied to clipboard

Probes accessibility-related Settings.Secure values (enabled a11y services hash, daltonizer/color-inversion, captioning preset and font scale).

Link copied to clipboard

Hashes the sorted set of visible account names via AccountManager.

Link copied to clipboard

Probes the Google Advertising ID (GAID) via reflection into Play Services.

Link copied to clipboard

Probes extended audio-hardware characteristics via AudioManager and the supplied output AudioDeviceInfos.

Link copied to clipboard

Probes extended battery telemetry from BatteryManager and the sticky battery broadcast intent.

Link copied to clipboard

Probes passive Bluetooth adapter capabilities.

Link copied to clipboard

Probes the camera inventory via CameraManager without opening any camera.

Link copied to clipboard

Probes the media codec inventory via MediaCodecList (Android 5+).

Link copied to clipboard

Probes the device's default/role-holder apps and key platform package versions.

Link copied to clipboard
fun probeDrmId(uuid: UUID): String?

Reads a DRM device-unique id (e.g. Widevine) via MediaDrm and returns it hashed as hex.

Link copied to clipboard

Reports the count of dynamically-connected sensors (Android 7+).

Link copied to clipboard

Returns a SHA-256 hash of the enabled input-methods list.

Link copied to clipboard

Counts enabled input methods from Settings.Secure.ENABLED_INPUT_METHODS.

Link copied to clipboard

Builds a label=bool string reporting presence of each feature in EXTENDED_FEATURES (fingerprint, face/iris biometrics, NFC, BLE, USB host, StrongBox, etc.).

Link copied to clipboard

Reports presence of environmental/extended sensors (light, proximity, pressure, humidity, ambient temperature, and hinge angle on Android 11+).

Link copied to clipboard

Probes a profile of Settings.Global values (boot count, airplane/auto-time, provisioning, Wi-Fi/mobile data, zen mode, HTTP proxy hash, private DNS host hash on Android 9+).

Link copied to clipboard

Probes connected input devices and installed input methods.

Link copied to clipboard

Probes installed-application counts via PackageManager.getInstalledApplications.

Link copied to clipboard

Probes assorted hardware/system properties in one pass.

Link copied to clipboard

Probes extended network characteristics from ConnectivityManager and the active network's NetworkCapabilities / android.net.LinkProperties.

Link copied to clipboard

Reports whether NFC is present and enabled via android.nfc.NfcAdapter.

Link copied to clipboard

Reads the configured notification-sound URI from Settings.System.

Link copied to clipboard
inline fun <T> probeOrNull(block: () -> T): T?

Runs block, returning its result or null if it throws.

Link copied to clipboard

Reads the configured ringtone URI from Settings.System.

Link copied to clipboard

Probes CPU/memory characteristics via Runtime and ActivityManager.

Link copied to clipboard

Reports installed SDK extension versions for R/S/T/U (Android 11+ via android.os.ext.SdkExtensions).

Link copied to clipboard
fun probeSecureHash(context: Context, key: String): String?

Reads a secure setting and returns its SHA-256 hash (for sensitive string values).

Link copied to clipboard

Probes a profile of Settings.Secure values (navigation mode, autofill/voice IME package, accessibility speak-password, one-handed mode, night display, notification-listener hash, IME subtype).

Link copied to clipboard

Reports the min/max reporting delay of the default accelerometer.

Link copied to clipboard

Reports the accelerometer's hardware FIFO max event count.

Link copied to clipboard

Hashes the (bounded) list of sensors reported by SensorManager.

Link copied to clipboard

Reports the power draw of a bounded sample of sensors.

Link copied to clipboard

Reports the maximum range of the default accelerometer, gyroscope, magnetometer and light sensors.

Link copied to clipboard

Reports the accelerometer's wake-up capability and reporting mode (Android 5+).

Link copied to clipboard

Hashes the sorted list of system shared library names.

Link copied to clipboard

Probes extended storage characteristics from Environment, StatFs and storage volumes.

Link copied to clipboard

Hashes the sorted list of all system features reported by PackageManager.

Link copied to clipboard

Probes a profile of user-facing Settings.System values (brightness, timeouts, haptics, rotation, pointer speed, alarm URI hash).

Link copied to clipboard

Probes extended telephony characteristics from TelephonyManager.

Link copied to clipboard
suspend fun probeTtsVoices(context: Context, timeoutMs: Long): List<String>

Enumerates installed text-to-speech voices by briefly initializing a TextToSpeech engine.

Link copied to clipboard

Probes presence of Vulkan graphics feature declarations.

Link copied to clipboard

Hashes a sample of the current system wallpaper (Android 7+).

Link copied to clipboard

Probes passive Wi-Fi capabilities via WifiManager without scanning networks.

Link copied to clipboard
fun readGlobalInt(context: Context, key: String, default: Int = -1): Int?

Reads an integer from Settings.Global, or null on failure.

Link copied to clipboard
fun readGlobalString(context: Context, key: String): String?

Reads a non-blank Settings.Global string, or null. @param key Global setting key.

Link copied to clipboard
fun readSecureInt(context: Context, key: String, default: Int = -1): Int?

Reads an integer from Settings.Secure, or null on failure.

Link copied to clipboard
fun readSecureString(context: Context, key: String): String?

Reads a non-blank Settings.Secure string, or null. @param key Secure setting key.

Link copied to clipboard
fun readSystemInt(context: Context, key: String, default: Int = -1): Int?

Reads an integer from Settings.System, or null on failure.

Link copied to clipboard
fun readSystemString(context: Context, key: String): String?

Reads a non-blank Settings.System string, or null. @param key System setting key.

Link copied to clipboard
fun safeInt(block: () -> Int): String

Runs block and stringifies its int result, returning "unavailable" if it throws.

Link copied to clipboard
fun safeString(block: () -> String): String

Runs block, returning its string result or "unavailable" if it throws.

Link copied to clipboard
fun sha256Hex(input: String): String

Computes the lowercase hex SHA-256 digest of input.

Link copied to clipboard
fun signal(category: SignalCategory, key: String, name: String, value: String, rationale: String, displayHint: DisplayHint = DisplayHint.Plain, entries: List<SignalEntry> = emptyList()): FingerprintSignal

Builds a plain FingerprintSignal for a single value.

Link copied to clipboard
fun tagsSignal(category: SignalCategory, key: String, name: String, tags: List<String>, rationale: String): FingerprintSignal

Builds a DisplayHint.Tags signal whose value is a comma-joined list of tags.