Fiddler – Entschlüsseln Android HttpsUrlConnection SSL Verkehr

Ich habe unzählige Stunden damit verbracht, Android-SSL-Verkehr über Fiddler für HttpsUrlConnection mit sehr wenig Erfolg zu entschlüsseln. Wie kann ich Fiddler zuverlässig konfigurieren, um SSL-Datenverkehr von einer Android-App mit HttpsUrlConnection zu entschlüsseln?

Hier sind meine Schritte

  • Android: 2 relatives Layout in Halbbildschirm geteilt
  • Push-Aktivität auf der rechten Seite, wenn offene Schublade
  • Android 4.3 mit Genymotion uvesafb: nicht ausgeführt / sbin / v86d
  • So geben Sie Aktivitäten an, die nur für Telefone oder Tablets auf Android sind
  • Gradle-Synchronisierung fehlgeschlagen: Fehler beim Erstellen von Build Tools Revision 24.0.0 rc1
  • Ist Secure.ANDROID_ID für jedes Gerät eindeutig?
    1. Fiddler auf PC ausführen (mit den richtigen Einstellungen: HTTPS Connect erfassen, HTTPS-Verkehr entschlüsseln, Remotecomputer verbinden)
    2. Konfigurieren Sie die drahtlose Verbindung auf dem Android-Gerät zum Proxy über den PC, der den Geiger führt
    3. Von Android-Gerät öffnen Browser zu http: // [IP von PC laufen Fiddler]: 8888 und laden Sie "FiddlerRoot Zertifikat". Benennen und installieren.
    4. Öffnen Sie https://www.google.com im Android-Browser und sehen Sie den entschlüsselten Verkehr in Fiddler auf dem PC.

    Die oben genannten Werke. Das Problem ist, dass Nicht-Browser-Android-Verkehr zeigt sich in Fiddler als Tunnel verbinden. Meine anfängliche Forschung schlug vor, dass das Problem war, wie Certs über HttpsUrlConnection vertraut wurden, so dass ich sicher war, alle Certs auf diesem Artikel zu vertrauen https://secure.mcafee.com/us/resources/white-papers/wp-defeating-ssl -cert-validation.pdf

    Leider vertrauensvoll alle Certs nicht für mich mit HttpsUrlConnection arbeiten, also habe ich aufgehört zu untersuchen. Ein paar Tage später habe ich mich entschlossen, es noch einmal zu versuchen und war überrascht zu finden, dass der Geigerverkehr für HttpsUrlConnection entschlüsselt wurde! Leider habe ich keine weiteren Änderungen vorgenommen, um das zu beheben, also bin ich nicht ganz sicher, warum es angefangen hat zu arbeiten. Das Gerät, mit dem es arbeitet, ist ein LG-Optimus L9 Android Version 4.0.4 und ist verwurzelt.

    Jetzt versuche ich, dies für eine Nexus 7 Android Version 4.2.2 (nicht verwurzelt) zu konfigurieren, aber leider sehe ich im Fiedler die Verbindungstunnel. Da das Zertifikat auf beiden Geräten die gleiche serielle und die app hab ich testen ist identisch bin ich stumped, warum ich kann nicht konfigurieren Fiddler mit einem anderen Android-Gerät.

    Zusammenfassen

    • Fiddler kann SSL-Verkehr vom LG Optimus entschlüsseln, zeigt aber nur Tunnel von Nexus 7
    • Beide Geräte laufen die gleiche App, die HttpsUrlConnection für Netzwerkanforderungen verwendet
    • Beide Geräte haben das gleiche Fiddler-Zertifikat installiert (Serien-Match) und kein anderes User-Zertifikat installiert.
    • Denken Sie nicht, dass diese Sache aber …
      • Das verwurzelte Gerät (LG Optimus Android 4.0.4) verwendet Proxy Droid, um auf den PC, der den Geiger führt, zu zeigen
      • Nicht verwurzeltes Gerät (Nexus 7 Android 4.2.2) mit eingebautem "modify network", um auf PC laufenden Fiedler zu zeigen

  • Wiederholung des Bildes beim Scrollen in der Android-Rasteransicht mit Universal Image Loader
  • Wie lade ich den Android Emulator aus der Kommandozeile?
  • Wie man die Anwendung nicht beantwortet (ANR) aus Aktivität und von BroadcastReceiver
  • Android-Dialog: Titelleiste entfernen
  • Erkennung, wenn ValueAnimator fertig ist
  • Noch ein weiteres getView, das mehrfach genannt wird
  • 3 Solutions collect form web for “Fiddler – Entschlüsseln Android HttpsUrlConnection SSL Verkehr”

    Meine Forschung zeigte, dass es einen Fehler in HttpsUrlConnection Pipeling-Implementierung gibt.

    Um ein Problem zu lösen, müssen Sie folgende Schritte in Fiddler durchführen:

    1. Im Fiddler klicken Sie auf "Regeln-> Anpassen von Regeln";

    2. Im geöffneten Skript und finde die Funktion OnBeforeResponse

    3. Im Funktionskörper füge folgenden Code hinzu:

      if (oSession.oRequest["User-Agent"].indexOf("Dalvik") > -1 && oSession.HTTPMethodIs("CONNECT")) { oSession.oResponse.headers["Connection"] = "Keep-Alive"; } 

    4.Save-Datei und Neustart Fiddler

    Hier ist ein Workaround.

    Angenommen, der Hostname Ich sende meine https Anfragen an ist myHostName.com fügen Sie die folgenden Fiddler's CustomRules.js

     if (!oSession.isHTTPS && !oSession.HTTPMethodIs("CONNECT") && (oSession.HostnameIs("myHostName")) { oSession.oRequest.headers.UriScheme = "https"; } 

    Dann im Android-Code aktualisieren Sie die URL, um HTTP anstelle von https zu verwenden.

    Jetzt wird der Client mit Fiddler ohne SSL kommunizieren und alle Anforderung / Antwortverkehr wird sichtbar sein.

    Der offensichtliche Nachteil dieses Ansatzes ist, dass die URLs im Client geändert werden müssen, um http zu verwenden. Ich habe diesen Ansatz nicht lange genug benutzt, um zusätzliche Nachteile zu entdecken.

    Das verwurzelte Gerät ist der Schlüssel. Zumindest in meinem Szenario.

    Ich habe das LG Optimus Android 4.0.4 nicht entwurzelt und es wurde auf 4.1.2 aktualisiert. Ich versuchte Fiedler werden alle die gleichen Schritte, aber nur die Verbindungstunnel zeigten.

    Ich verwurzelte das LG Optimus wieder und sofort kann ich alle Anfragen / Antworten über Fiedler sehen.

    Ich nehme an, die N7 zu verwurzeln, wird es auch erlauben, zu arbeiten.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.