Linux: Überprüfung des RSA-Schlüssels einer Android-Debug-Bridge (ADB)

Einleitung und Inhalt

In diesem Beitrag möchte ich dir zeigen, wie du die RSA-Schlüssels deiner Android-Debug-Bridge (ADB) überpüfen kannst. Wenn du erstmals von einem Computer per „Android-Debug-Bridge“ (kurz „ADB“) auf ein Android-Gerät zugreifen willst, dann wird dich das Android-Gerät (per Pop-up-Fenster) fragen, ob du diesen Zugriff zulassen willst. Um kontrollieren zu können ob der richtige Computer den Zugriff erhält, kannst du den angezeigten „Fingerabdruck“ mit dem Fingerabdruck des RSASchlüssels der ADB-Installation auf dem Computer abgleichen. In diesem Beitrag erkläre ich dir, wie du das machen kannst.

Voraussetzungen

Folgende Voraussetzungen müssen erfüllt sein, bevor du den RSA-Schlüssel deiner ADB-Installation überprüfen kannst:

  1. Computer mit Linux (Ich empfehle und verwende in dieser Anleitung ein Debian-Live-System),
  2. Installation von „ADB“ samt erzeugter RSA-Schlüssel und gestartetem ADB-Server (wie du das machst, habe ich hier erklärt).
  3. „SuperUser-/ Root-„Rechte auf dem Computer.
  4. Ein Android-Gerät mit aktivierten „Entwickleroptionen“ und aktiviertem „USB-Debugging„.
  5. Ein USB-Kabel zur Verbindung von Computer und Android-Gerät.

Sind die o.g. Voraussetzungen erfüllt, kannst du mit der Anleitung weiter machen:

Anleitung

  1. Verbinde das Android-Gerät mit dem Computer. Wenn der ADB-Server läuft, sollte das Android-Gerät jetzt nach der Erlaubnis des Zugriffs durch den Computer bitten.
  2. Starte auf dem Computer ein Terminal mit „Superuser-/ Root-„Rechten. Halte hierzu die „Alt“-Taste gedrückt, tippe dann kurz auf die Funktionstaste „F2“ und löse danach die Alt-Taste wieder. Gib nun in der sich öffnenden Befehlseingabe den Befehl „sudo gnome-terminal“ ein starte die Ausführung mit der Eingabetaste.
  3. Gib im Terminal deines Computers die Befehlskette
    cut -d" " -f1 ~/.android/adbkey.pub | openssl base64 -d | openssl md5 -c | cut -d" " -f2 | tr '[:lower:]' '[:upper:]'

    ein und starte die Ausführung der Befehlskette mit der Eingabetaste. Das im Terminal ausgegebene Ergebnis der Befehlskette sollte nun exakt mit dem angezeigten Fingerabdruck auf deinem Android-Gerät übereinstimmen.

Stimmen die Fingerabdrücke an dem Computer und dem Android-Gerät überein, dann tippe (optional) zunächst auf die Zeile „Von diesem Computer immer zulassen“ um die Option zu aktivieren. Abschließend tippe auf „OK„.

Bei fehlerhafter Prüfung: Sollte der Fingerabdruck nicht exakt übereinstimmen, solltest du den ADB-Server beenden, die vorhandenen Schlüssel entfernen und ADB dann wieder neu starten. Gib hierzu im Terminal deines Computers die Befehlskette „adb kill-server && rm ~/.android/* && adb keygen ~/.android/adbkey && adb start-server“ ein und starte die Ausführung mit der Eingabetaste. Der Befehl „adb kill-server“ beendet zunächst den ADB-Server. Der Befehl „rm“ steht hier für „remove“, also sinngemäß „entfernen“ und „~/.android/*“ steht für alle Dateien im Ordner ~/.android/ (dort liegen standardmäßig die erzeugten RSA-Schlüssel von ADB). Anschließend erzeugt der Befehl „adb keygen ~/.android/adbkey“ ein neues Paar RSA-Schlüssel. Abschließend startet der Befehl „adb start-server“ den ADB-Server neu. Überprüfe nun erneut den auf deinem Android-Gerät angezeigten Fingerabdruck des RSA-Schlüssels wie zuvor beschrieben.

Erläuterung

Die o.g. Befehlskette teilt sich in fünf Einzelschritte, welche jeweils durch einen senkrechten Strich „|“ (den sogenannten „Pipe-Operator„) miteinander verbunden werden. Der „Pipe-Operator“ sorgt dafür, dass die Ergebnisse des jeweils voran gegangenen Befehls an den nachfolgenden Befehl übergeben. In Einzelschritte läuft die Befehlskette folgendermaßen ab:

  1. cut -d“ “ -f1 ~/.android/adbkey.pub führt den Befehl „cut“ (auf deutsch sinngemäß ‚teilen‘) aus. Dieser Befehl splittet den Inhalt deiner RSA-Schlüsseldatei auf. Innerhalb der Datei „abdkey.pub“ steht nämlich nicht nur dein RSA-Schlüssel, sondern auch (durch ein Leerzeichen vom Schlüssel getrennt) dein Linux-Benutzername, ein „@“-Symbol und dein Linux-Systemname. Also in unserem Beispiel „[RSA-Schlüssel] root@[Linux-Systemname]“. Der Zusatz ‚-d“ „‚ sagt dem Befehl cut, dass es Leerzeichen als Trennzeichen verwenden soll. Der Zusatz „-f1“ sagt dem Befehl cut, dass er das erste Feld des Dateiinhalts ausgeben soll. Zuletzt wird dem Befehl cut mit „~/.android/adbkey.pub“ angegeben, welche Datei er splitten soll. Mit dem „|“ wird das extrahierte Segment nun dem nächsten Befehl übergeben.
  2. openssl base64 -d startet das gleichnamige Programm OpenSSL. Die Angabe „base64 -d“ weißt das Programm OpenSSL an, den von cut übergebenen RSA-Schlüssel zu dekodieren – denn dieser liegt in Base64-Kodierung vor. Mit dem „|“ wird der dekodierte RSA-Schlüssel nun dem nächsten Befehl übergeben.
  3. openssl md5 -c startet erneut das Programm OpenSSL. Die Angabe „md5“ weißt das Programm an, aus dem übergebenen (und base64-dekodierten) RSA-Schlüssel einen MD5-Hash zu erzeugen. Die Option „-c“ sorgt dafür, dass der MD5-Hash durch Trennzeichen („:“) so aufgeteilt wird, wie er auf dem Android-Gerät präsentiert wird. Mit dem „|“ wird das Ergebnis nun dem nächsten Befehl übergeben.
  4. cut -d“ “ -f2 startet erneut den Befehl cut, den wir schon aus dem ersten Befehl der Befehlskette kennen. Der Ausgabe von „openssl md5 -c“würde nun noch ein „(stdin)= “ voran stehen, also wäre der komplette Inhalt „(stdin)= [MD5-Hash]“. Erneut ist hier mit ‚-d“ „‚ das Leerzeichen als Trennzeichen angegeben, aber mit -f2 (statt -f1 im ersten Befehl) wird nun nicht das erste Feld, sondern das zweite Feld (der MD5-Hash) ausgegeben. Mit dem „|“ wird der bereinigte MD5-Hash nun dem nächsten Befehl übergeben.
  5. tr ‚[:lower:]‘ ‚[:upper:]‘ startet nun den Befehl tr (von translate = umwandeln oder transliterate = transliterieren). Die erste Textoption ‚[:lower:]‘ (steht für Kleinbuchstaben), gefolgt von einem Leerzeichen und der zweiten Textoption ‚[:upper:]‘ (steht für Großbuchstaben), weißt das Programm tr an, in dem übergebenen MD5-Hash alle Kleinbuchstaben durch Großbuchstaben zu ersetzen – so, wie es auch auf deinem Android-Gerät dargestellt ist.

2 Antworten zu “Linux: Überprüfung des RSA-Schlüssels einer Android-Debug-Bridge (ADB)”

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.