I am trying to parse decrypted TLS/SSL from a .NET client, using Fiddler. After using the "from Deflated SAML" tool in the Text Wizard, I get a mix of binary and clear text. I would like to get the entire response in clear text. Here are some examples:
Request:
<?xml version="1.0" encoding="utf-8"?><soap:Envelopexmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><ProcessQuery xmlns:= "DUMMYTEXT"><requestArgs>"DUMMYTEXT"</requestArgs><dataArgs>"DUMMYTEXT"</dataArgs></ProcessQuery></soap:Body></soap:Envelope>
The reply from the server:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><ProcessQueryResponse xmlns=/* snip */><ProcessQueryResult>7b0HYBxJliUmL23Ke39K9UrX4HShCIBgEyTYkEAQ7MGIzeaS7B1pRyMpqyqBymVWZV1mFkDM7Z28995777333nvvvfe6O51OJ/ff/z9cZmQBbPbOStrJniGAqsgfP358Hz8ifo1f89f4NX6N/5se/MTz6+CX3+j1ddPmi/HZsr23hw9+/cXvf5mV6/zX+A3+9S9/rV/jN/x/AA==</ProcessQueryResult></ProcessQueryResponse></soap:Body></soap:Envelope>
After the "from DeflatedSAML" transform:
������������������System.Int32���m_value��O�
There is a mix of binary and clear text in the response. Another example response, after transforming from DeflatedSAML:
������������������������
SessionLog���SessionLogInsert����
������������������� ...
Again, a mix of text and binary. Other larger packets/sessions, when transformed from deflated SAML:
������������������NSystem.Data, /* snip */ ��System.Data.DataSet���DataSet.RemotingVersionDataSet.RemotingFormatDataSet.DataSetNameDataSet.NamespaceDataSet.PrefixDataSet.CaseSensitiveDataSet.LocaleLCIDDataSet.EnforceConstraintsDataSet.ExtendedPropertiesDataSet.Tables.CountDataSet.Tables_0DataTable_0.ConstraintsDataSet.Relations#DataTable_0.DataColumn_0.Expression#DataTable_0.DataColumn_1.Expression#DataTable_0.DataColumn_2.Expression#DataTable_0.DataColumn_3.Expression#DataTable_0.DataColumn_4.ExpressionDataTable_0.Rows.CountDataTable_0.Records.CountDataTable_0.RowStatesDataTable_0.RecordsDataTable_0.NullBitsDataTable_0.RowErrorsDataTable_0.ColumnErrors������System.VersionSystem.Data.SerializationFormat���System.Data.PropertyCollection���System.Collections.ArrayListSystem.Collections.ArrayListSystem.Collections.BitArraySystem.Collections.ArrayListSystem.Collections.ArrayListSystem.Collections.HashtableSystem.Collections.Hashtable��� �������System.Data.SerializationFormat���value__����������AccessControlSettings���� ���� �� ������ ��� ���
��� ��� ��� ��� ��� ���1���1��� ���
��� ��� ��� ������System.Version���_Major_Minor_Build _Revision����������������������System.Data.PropertyCollection���
LoadFactorVersionComparerHashCodeProviderHashSizeKeysValues���System.Collections.IComparer$System.Collections.IHashCodeProvider����Q8?����
��� ���
����System.Data.DataSetDateTime���value__���������������
���RoleName
������������������������������ ��� ������� ��� ��� ����������������������
���
FunctionID
������������������������������� ��� ��������
My question is, how do I decode (or is it unserialize?) the binary values, so that the entire message is in clear text? How does Fiddler do the decoding? Can I do it programmatically, for every packet/session? I cannot modify either the server or the client.
I have tried:
- WCF Binary Inspector. Results: "the input source is not correctly formatted"
- Wireshark. Learnt about public/private key encryption, decrypting SSL sessions, etc, but did not apply here since the client is using ECDHE encyption and is not browser-based.
- Charles Proxy. Did not get too far, is the same as Fiddler but requires a license.
- JSON inspector in Fiddler. Results: Invalid text at position x
- Various SO posts like this