Fallstricke bei der Identifizierung eines Android-GerÀts


Einige Entwickler mĂŒssen möglicherweise die Android-GerĂ€te ihrer Benutzer identifizieren. Meistens geschieht dies nicht, um das GerĂ€t zu erkennen, sondern um die spezifische Installation der Anwendung zu bestimmen. Ich habe auch mehrere FĂ€lle getroffen, in denen es notwendig war, wenn der Entwickler mehrere Anwendungen hatte und verstehen wollte, dass sie in derselben Umgebung funktionieren.

Laut Google ist die Identifizierung eines GerĂ€ts einfach. Aber wir reden ĂŒber Android :)

Dieser Artikel konzentriert sich auf Anwendungen oder Bibliotheken, die nicht an Google-Dienste angehÀngt werden möchten.

Tauchen wir also in dieses wunderbare Abenteuer ein, eine eindeutige GerÀtekennung zu erhalten.

Hier sehen wir verschiedene Möglichkeiten:


  • Werbe-ID
  • IMEI
  • MAC-Adresse
  • Seriennummer
  • Android ID

Bis jetzt sieht es nicht schlecht aus, oder? Es gibt bis zu fĂŒnf Möglichkeiten, eine eindeutige Kennung fĂŒr ein Android-GerĂ€t zu erhalten. Ich bin mir sicher, wenn Sie immer noch im Netzwerk rascheln, werden Sie sicherlich noch ein paar andere Wege finden, aber hier habe ich die beliebtesten gemacht. Also lass uns in Ordnung gehen.

Werbe-ID


Dies ist eine eindeutige Werbekennung, die von Google Play-Diensten bereitgestellt wird. Damit Werbung funktioniert, muss Google verstehen, welche Anzeigen einem bestimmten Nutzer geschaltet werden können und welche Anzeigen bereits mit den in den Anwendungen integrierten Werbebannern geschaltet wurden. Dies bedeutet auch, dass Sie diese Kennung verlieren, wenn Ihre Anwendung beispielsweise von Amazon heruntergeladen wird. Außerdem mĂŒssen Sie Google-Bibliotheken in Ihre Anwendung ziehen.

dependencies { compile 'com.android.support:appcompat-v7:21.0.3' compile 'com.google.android.gms:play-services:6.5.87' } 

Fazit: Wir identifizieren das GerÀt nicht in allen FÀllen.

Aber wir wollen sicher, richtig? Dann mach weiter.

IMEI


Dies ist die internationale Kennung fĂŒr mobile GerĂ€te, die in GSM-Telefonen verwendet werden. Die IMEI-Nummer wird von Netzwerken verwendet, um Smartphones zu identifizieren und den Zugriff auf ein Netzwerk gestohlener oder auf der schwarzen Liste stehender GerĂ€te zu blockieren. Leider kann bei IMEI eine Reihe von Problemen auftreten:


 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { String imei = telephonyMgr.getImei(); } else { String imei = telephonyMgr.getDeviceId(); } 

Schlussfolgerung: Wir identifizieren das GerÀt nicht in allen FÀllen und sie können uns auch tÀuschen: C.

MAC-Adresse


Nicht 100% zuverlĂ€ssig. Google selbst spricht darĂŒber , aber leider habe ich wirklich einige Anwendungen getroffen, die sich auf die MAC-Adresse des GerĂ€ts stĂŒtzten. Tu das nicht.
Möglicherweise kann eine Mac-Adresse von der WLAN- oder Bluetooth-Hardware eines GerĂ€ts abgerufen werden. Wir empfehlen, dies nicht als eindeutige Kennung zu verwenden. ZunĂ€chst verfĂŒgen nicht alle GerĂ€te ĂŒber WLAN. Wenn das WLAN nicht eingeschaltet ist, meldet die Hardware möglicherweise nicht die Mac-Adresse.

Seriennummer


Es wird als eindeutige Seriennummer des GerĂ€ts betrachtet, die bis zum „Ende“ erhalten bleibt. Sie können es so bekommen:

 //Until Android 7.1 (SDK 25) Build.SERIAL //Android 8 (SDK 26) ++ Build.getSerial() 

Und jetzt zu den Problemen. Um eine Seriennummer zu erhalten, mĂŒssen Sie den Benutzer zunĂ€chst um die Erlaubnis READ_PHONE_STATE bitten , und der Benutzer kann dies ablehnen. Zweitens kann die Seriennummer geĂ€ndert werden .

Fazit: Wir identifizieren das GerĂ€t nicht in allen FĂ€llen, wir mĂŒssen die Erlaubnis des Benutzers einholen, der sie betrĂŒgt und uns trotzdem tĂ€uschen kann.

Android ID


- Hier ist es! - Wir mĂŒssen schreien. - Die Lösung fĂŒr alle unsere Probleme!

Die Android ID ist auch eine eindeutige GerÀtekennung. Dies ist ein 64-Bit-Wert, der beim ersten Start des GerÀts generiert und gespeichert wird.
Sie können es so bekommen:

 Secure.getString(getContentResolver(), Secure.ANDROID_ID); 

Es scheint, dass eine so kurze Leitung uns Kopfschmerzen bei der Identifizierung des GerĂ€ts erspart. Sogar die Google-Leute verwenden im Beispiel Android_ID fĂŒr LVL .

Und hier bröckeln unsere Hoffnungen und nichts wird mehr so ​​sein wie zuvor. Nach dem Update auf Android 8 ist Android_ID nun fĂŒr jede installierte Anwendung eindeutig. Abgesehen davon kĂŒmmert sich Google um uns, sodass Anwendungen, die vor dem Update installiert wurden, dieselben Bezeichner haben, die Google mithilfe eines speziell dafĂŒr geschriebenen Dienstes speichert. Wenn die Anwendung jedoch deinstalliert und anschließend neu installiert wird, unterscheidet sich Android_ID. Um dies zu verhindern, mĂŒssen Sie KeyValueBackup verwenden.


Dieser Sicherungsdienst muss jedoch registriert werden, und es muss auch der Paketname angegeben werden. DarĂŒber hinaus heißt es in der Dokumentation, dass dies aus irgendeinem Grund möglicherweise nicht funktioniert. Und wer ist schuld? Niemand, einfach so.

Allgemeine Schlussfolgerung


Wenn Sie ein gutes Backend haben, erfassen Sie einfach die Besetzung des GerĂ€ts (installierte Anwendungen, Dienste, alle Daten ĂŒber das GerĂ€t, die Sie erhalten können) und vergleichen Sie die bereits vorhandenen Parameter. Betrachten Sie einen Prozentsatz der akzeptablen Änderungen.

PS Ich veröffentliche alle Sammlungen wie immer im Telegrammkanal @paradisecurity , und der Link kann in meinem Profil oder bei der Suche nach Telegrammen nach Namen gefunden werden.

GlĂŒcklich :)

Source: https://habr.com/ru/post/de434726/


All Articles