Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android emulator detection BlueStacks and Genymotion #94

Closed
MikhailCarpov opened this issue Dec 1, 2020 · 2 comments
Closed

Android emulator detection BlueStacks and Genymotion #94

MikhailCarpov opened this issue Dec 1, 2020 · 2 comments
Labels
enhancement New feature or request wontfix This will not be worked on

Comments

@MikhailCarpov
Copy link

I have tested android emulators for windows.

  1. Emulators have the "platform: linux i686" parameter. Test phones must have a platform arm. Is this an argument for spoofing detection?
  2. BlueStacks emulator doesn't have a working api speech for the latest chrome. Is this an argument for spoofing detection?
  3. Genymotion has a mention of emulation. See the webgl on the screen.
  4. To improve the quality of phone spoofing detection, you can use the Gyroscope api.

Genymotion 2020-12-01 07 17 06
Genymotion 2020-12-01 07 17 23
Genymotion 2020-12-01 07 17 32
BlueStacks  2020-12-01 07 18 36
BlueStacks  2020-12-01 07 18 52
BlueStacks 2020-12-01 07 18 42

@abrahamjuliot
Copy link
Owner

Nice catch. This will now render in the template as "Android [emulator]". I tested this in BlueStacks and Android VirtualBox.

I see these static irregularities in emulators as noteworthy, but not on the same level as spoofing (API tampering or random noise). Since emulators, as far as I know, are not hostile to fingerprinting, and the browsers running on them can be trusted in many contexts (with or without the Speech API), these can be welcomed as unique and fair. Webgl, platform/userAgent, and the unsupported Speech API ultimately give the device and browser a unique fingerprint.

However, in #95, I can expand on a platform/userAgent test to detect mismatches (including android without arm). The detected mismatch would be collected in the loose fingerprint trash bin since machine spoofing can mismatch and appear genuine at random (causing instability). As the loose fingerprint count increases, the browser will lose score points. Some user agent switchers don't match the user agent and platform, so every time a mismatch is triggered, points will be taken.

Gyroscope API

Interesting. I will give this more research. It requires permission that may not carry across sessions. But, I wonder if there is a leak in the Sensor API. I'm adding this to #48.

@abrahamjuliot abrahamjuliot added the enhancement New feature or request label Dec 3, 2020
@abrahamjuliot abrahamjuliot added the wontfix This will not be worked on label Sep 17, 2022
@abrahamjuliot
Copy link
Owner

Closing for now. I observed some false positives in emulator detection. There are many types that are not very straightforward to detect.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

2 participants