2013-04-29 3 views
6

Szenario: Ich versuche, eine Android-App zu debuggen, indem ich Anfragen über Fiddler vertrete.Warum können einige HTTPS-Anfragen auf Fiddler nicht entschlüsselt werden, während andere funktionieren?

bekam ich FiddlerRoot Zertifikat auf dem Android-Gerät installiert und die SSL-Entschlüsselung funktioniert für meist fordert, sondern auch für andere Anfragen kann ich nur über die HTTPS-Verbindung, und nichts anderes im Fiddler Protokoll. Ich denke, Bildanforderungen über SSL, die nicht entschlüsseln kann.

Ich habe überprüft, dass "Bilder ausblenden" deaktiviert ist, usw. Bilder, die abgerufen werden, werden in einer anderen Domäne als der Haupt-API gehostet, mit der die App kommuniziert.

Was könnte dieses Verhalten verursachen? Und wie bekomme ich die Bildanfragen in Fiddler?

Ich verwende den neuesten Fiddler4.

+0

Was sind die Zieldomänen und welche Apps stammen von diesen Anfragen? Einige Apps verwenden das Certificate Pinning, das im Fiddler-Buch beschrieben wird, um eine Einmischung durch Intermediäre zu verhindern. Andere haben fehlerhafte SSL-Implementierungen; siehe http://blogs.msdn.com/b/ieinternals/archive/2009/12/08/aes-is-not-a-valid-cipher-for-sslv3.aspx – EricLaw

Antwort

1

Es gibt viele Tutorials, wie Sie HTTP (s) Datenverkehr von Android mit Fiddler abfangen können. Versuchen Sie folgendes: http://docs.telerik.com/fiddler/configure-fiddler/tasks/configureforandroid

Es wird jedoch fehlschlagen, wenn Sie versuchen, Android SSL-Datenverkehr von einer Anwendung und nicht von einem Browser abzufangen und zu entschlüsseln.

Es kann sein, dass die Anwendung eine Zertifikat-Pinning verwendet - und Sie können diese Verbindung wahrscheinlich nicht entschlüsseln. Ursache verloren! Aber wahrscheinlich, der Grund ist ein Fehler in der HttpsUrlConnection Pipeline-Implementierung.

Um das Problem zu lösen, gehen Sie mit den folgenden Schritten:

  1. In Fiddler auf "Regeln-> Anpassen Regeln";
  2. Suchfunktion OnBeforeResponse im Skript
  3. In der Funktion Körper folgenden Code:

    if (oSession.oRequest["User-Agent"].indexOf("Dalvik") > -1 && 
        oSession.HTTPMethodIs("CONNECT")) { 
        oSession.oResponse.headers["Connection"] = "Keep-Alive"; 
    } 
    
  4. Speichern Sie die Datei und starten Sie Fiddler.

Verwandte Themen