2017-08-20 2 views
0

Le contenu est crypté avec un crypteur CUSTOM. Fiddler capturé corps contenu est une chaîne encode base64 dans le texte brut enter image description herefiddler - décode le corps crypté personnalisé dans l'inspecteur par C# à la volée

Le flux de trafic d'application:

demande:

base64Encode(customEncryptFromStringTobytes(jsonString)) -> application -> http server

réponse

:

customDecryptFrombytesToString(base64Decode(jsonString)) <- application <- http server

Je la classe crypter/décrypter i nC#: string EncryptToBase64(string plainText); string DecryptFromBase64(string plainText);

je construis un exe pour faire la transformation, je me demande comment faire corps de demande de décodage Fiddler/respose par ce exe à la volée

Je veux contenu Fiddler show Décrypter dans inspecteur, et crypter à chaque fois I [Réémettre et modifier (E)] la demande.

J'ai trouvé quelque chose de proche mais je ne sais pas comment appeler un exe pour faire du décodage. http://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse

mise à jour: J'ai mis en œuvre l'inspecteur personnalisé pour Fiddler. voir la réponse ci-dessous.

+2

Je voudrais essayer de mettre en œuvre un [inspecteur personnalisé] (http://docs.telerik.com/fiddler/Extend-Fiddler/CustomInspector) pour Fiddler. – Robert

Répondre

0

Je crée une extension pour l'inspecteur personnalisée

exemple complet https://github.com/chouex/FiddlerExtensionExample

vous allez construire une dll et copiez le fichier aux inspecteurs et dossier Scripts dans Fiddler. redémarrer fiddler chargera l'extension.

note: J'ai utilisé le script pré/post-build pour copier dll et redémarrer fiddler dans vs projet.

inspecteur personnalisé: Cet exemple vient embellir le corps json.

public class ResponseInspector : Inspector2, IResponseInspector2 
{ 
    TextBox myControl; 
    private byte[] m_entityBody; 
    private bool m_bDirty; 

private bool m_bReadOnly; 

public bool bReadOnly 
{ 
    get { return m_bReadOnly; } 
    set 
    { 
     m_bReadOnly = value; 
     // TODO: You probably also want to turn your visible control CONFIG.colorDisabledEdit (false) or WHITE (true) here depending on the value being passed in. 
    } 
} 

public void Clear() 
{ 
    m_entityBody = null; 
    m_bDirty = false; 
    myControl.Text = ""; 
} 

public ResponseInspector() 
{ 
    // TODO: Add constructor logic here 
} 

public HTTPResponseHeaders headers 
{ 
    get { return null; // Return null if your control doesn't allow header editing. 
    } 
    set { } 
} 

public byte[] body 
{ 
    get { return m_entityBody; } 
    set 
    { 
     // Here's where the action is. It's time to update the visible display of the text 
     m_entityBody = value; 

     if (null != m_entityBody) 
     { 
      var text = System.Text.Encoding.UTF8.GetString(m_entityBody); 

       if (!String.IsNullOrEmpty(text) && text.StartsWith("{")) 
       { 
        text = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(text), Formatting.Indented); 
       } 

      myControl.Text = text; 
      // TODO: Use correct encoding based on content header. 
     } 
     else 
     { 
      myControl.Text = ""; 
     } 

     m_bDirty = false; 
     // Note: Be sure to have an OnTextChanged handler for the textbox which sets m_bDirty to true! 
    } 
} 

public bool bDirty 
{ 
    get { return m_bDirty; } 
} 

public override int GetOrder() 
{ 
    return 0; 
} 

public override void AddToTab(System.Windows.Forms.TabPage o) 
{ 
    myControl = new TextBox(); // Essentially the TextView class is simply a usercontrol containing a textbox. 
    myControl.Height = o.Height; 
    myControl.Multiline = true; 
    myControl.ScrollBars = ScrollBars.Vertical; 
    o.Text = "TextViewExample"; 
    o.Controls.Add(myControl); 
    o.Controls[0].Dock = DockStyle.Fill; 
} 
} 

pour le trafic Tamper (parle pas en question, mais je pense que cela est utile):

mettre en œuvre AutoTamperResponseBefore() dans IAutoTamper2

Cet exemple vient remplacer le texte de "xt" à "c1" dans chaque corps de requête

0

Ajouter un en-tête factice

Fiddler-Encoding: base64 

et encodez votre corps en utilisant base64 si elle contient des données binaires. Fiddler décodera les données avant de les transmettre au serveur.

Taken de http://www.fiddlerbook.com/fiddler/help/composer.asp

+0

Non, je ne demande pas de décoder SSL, Le contenu est crypté avec un chiffrement CUSTOM. Le corps du contenu capturé par fiddler est base64 encoder la chaîne en texte brut. –

+0

Altered answer @CharlesChou – twoleggedhorse

+0

Non, je ne transforme pas les données de base64-> binrary puis envoie au serveur. Je veux que les données que SHOWING IN INSPECTOR décode en utilisant base64 puis décodent par mon décrypteur personnalisé. Notez que le serveur doit recevoir exactement ce que le client envoie. –