Telerik Forums
Fiddler Forum
5 answers
739 views

Hello there,

I know every time you install Fiddler in a different machine and enable it to decrypt HTTPS it generates a new certificate that is different for each machine and you need to install it in client devices so the decryption can happen.  I thought I had find a way around this until today it didn't work for me anymore but just want to ask in case something can still be done :-).

I built a cloud server and installed Fiddler and set it up to decrypt HTTPS then configured a bunch of devices to accept the certificate and everything was fine.  Once finished my testing since cloud servers cost money and I didn't wanna pay for it while idle I created an image and deleted the server in hopes next time I would have all the configuration and it seemed to work fine.  I recreated the server from the image a bunch of times and every time I was able to connect the devices and do my testing no problem... well, until today when I just did the same again and I'm getting the …  "!SecureClientPipeDirect failed: System.ComponentModel.Win32Exception The credentials supplied to the package were not recognized for pipe (CN=*.somerandomdomain.com, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com)" .. which basically means if I'm correct I need to generate a new certificate which then I need to install in all the clients :-\ .. I tried just downloading the certificate again from the fiddler proxy URL but it is the same of course and if I do a binary compare using "fc.exe /b" I can confirm they're identical so it seems my only way would be to generate a new one … before I give up to that, is there anything else I could do to avoid having to do it? my main issue is I don't have all the devices on hand and now I'd have to reach to every user and explain one by one how to do this and some of them are not that tech savvy :-(

Cheers,

Carlos.

 

Eric R | Senior Technical Support Engineer
Telerik team
 answered on 16 Apr 2020
2 answers
369 views

Hi,

 

I am using FiddlerCore with PuppeteerSharp browser automation tests in order to get performance metrics (thanks to FiddlerCore) like page loading time, DOM loading time, TTFB, HTTPs handshake time, ns lookup...etc.

I am facing a problem trying to access some website like: https://outlook.office.com which redirects to to Microsoft login portal. I have the impression that I am missing some configuration in my code but I cannot figure out what the problem is. The code I am use is the following: 

internal class FiddlerProxy : IDisposable
{
    public string Uri { get; private set; }
    public Proxy ProxyEndpoint { get; private set; }
    public int SessionCount { get; private set; }
 
    internal FiddlerProxy(string uri)
    {
        Uri = uri;
        ProxyEndpoint = null;
        SessionCount = 1;
    }
 
    public void Start()
    {
        // Register for the FiddlerCore events
        FiddlerApplication.AfterSessionComplete += OnAfterSessionComplete;
        FiddlerApplication.BeforeRequest += OnBeforeRequest;
        FiddlerApplication.OnNotification += delegate (object sender, NotificationEventArgs oNEA) { Console.WriteLine("** NotifyUser: " + oNEA.NotifyString); };
        FiddlerApplication.Log.OnLogString += delegate (object sender, LogEventArgs oLEA) { Console.WriteLine("** LogString: " + oLEA.LogString); };
         
        // Create an HTTPs certificate and Start the proxy
        if (!InstallCertificate())
            throw new InvalidOperationException("Creating a certiicate failed. Https traffic cannot be captured.");
 
        if (FiddlerApplication.IsStarted())
            Stop();
 
        FiddlerApplication.Startup(0, FiddlerCoreStartupFlags.Default & ~FiddlerCoreStartupFlags.RegisterAsSystemProxy);
        ProxyEndpoint = FiddlerApplication.CreateProxyEndpoint(FiddlerApplication.oProxy.ListenPort, true, "localhost");
    }
 
    public static bool InstallCertificate()
    {
        if (!CertMaker.rootCertExists())
        {
            if (!CertMaker.createRootCert())
                return false;
 
            if (!CertMaker.trustRootCert())
                return false;
        }
 
        return true;
    }
 
    private void OnBeforeRequest(Session session)
    {
        if (!ShouldProcess(session))
            return;
        else
        {
            // Do something
        }
    }
 
    private void OnAfterSessionComplete(Session session)
    {
        if (!ShouldProcess(session))
            return;
 
        Console.WriteLine($"Session no. {SessionCount++} coming from :{session.fullUrl}:");
        Console.WriteLine(session.Timers.ToString(true));
    }
 
    private bool ShouldProcess(Session session)
    {
        if (session.RequestMethod.Equals("CONNECT", StringComparison.InvariantCultureIgnoreCase))
            return false;
 
        if (session.fullUrl.Contains(Uri))
            return true;
        else
            return false;
    }
 
    public void Stop()
    {
        if (ProxyEndpoint != null)
        {
            ProxyEndpoint.Detach();
            ProxyEndpoint.Dispose();
        }
         
        FiddlerApplication.AfterSessionComplete -= OnAfterSessionComplete;
        if (FiddlerApplication.IsStarted())
        {
            FiddlerApplication.Shutdown();
        }
    }
 
    public void Dispose()
    {
        Stop();
    }
}

Then I use FiddlerProxy class in Main() method in Program.cs as follows:

static void Main(string[] args)
{
    var uriToMonitor = "https://outlook.office.com";
    using (var fiddlerProxy = new FiddlerProxy(uriToMonitor))
    {
        fiddlerProxy.Start();
        LoadPageUsingPuppeteerSharp(uriToMonitor, fiddlerProxy.ProxyEndpoint.ListenPort).Wait();
    }
    Console.ReadLine();
}
 
public static async Task LoadPageUsingPuppeteerSharp(string uri, int proxyPort)
{
    var launchOptions = new LaunchOptions
    {
        ExecutablePath = @".\chrome-win\chrome.exe",
        Headless = false,
        IgnoreHTTPSErrors = true,
        Args = new[] {
            $"--proxy-server=127.0.0.1:{proxyPort}",
            "--no-sandbox",
            "--disable-infobars",
            "--disable-setuid-sandbox",
            "--ignore-certificate-errors"
        }
    };
 
    using (var browser = await Puppeteer.LaunchAsync(launchOptions))
    {
        var context = await browser.CreateIncognitoBrowserContextAsync();
        using (var page = await context.NewPageAsync())
        {
            await page.SetUserAgentAsync("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3563.0 Safari/537.36");
            await page.SetViewportAsync(new ViewPortOptions { Width = 1500, Height = 800 });
             
            await page.GoToAsync(uri);
        }
    }
}

 

Attached are the console output that I get when running my program, and two screenshots of my chrome browser.

One last question, is it possible to configure an HTTP Proxy (some proxy that we have in our organisation) through which FiddlerCore can send requests?

 

Thank you in advance for your help.

Adel

ADEL
Top achievements
Rank 1
 answered on 16 Apr 2020
3 answers
1.2K+ views

I'm using the latest Fiddler version and O365 extension, but I'm still unable to get through the authentication process when using Oauth.  I've been trying with EWS editor, and both Oauth and basic fail.  Outlook fails to connect to an Exchange Online mailbox.  Using Chrome and IE can't get to outlook on the web, or google.com for that matter.  It seems to be having a problem with SSL, but I'm not clear on that.

 

EWS editor error using basic

Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.InternalExecute()

Exception details: Message: The request failed. The underlying connection was closed: An unexpected error occurred on a send.
Type: Microsoft.Exchange.WebServices.Data.ServiceRequestException
Source: Microsoft.Exchange.WebServices

 

EWS editor error using Oauth

System.Threading.Tasks.Task`1.get_Result()

Exception details:
Message: One or more errors occurred.
Type: System.AggregateException
Source: mscorlib

matt
Top achievements
Rank 1
 answered on 13 Apr 2020
16 answers
2.5K+ views

Installing Fiddler, downloaded from the "only" Download link for Win. I have a Win7 VM (not native Win), which didn't have any .NET installed. I had 4.5.2 available, so I installed that. Then installed Fiddler, which failed with error on start. Analysing the error, I found out that installer had given me  Fiddler v2.6.3.49793. Tried to install .NET v2, but it didn't go in. Tried to install .NET v4.0 but that refused to install as well. I needed to uninstall .NET 4.5.2, and then install .NET 4.0 (a lot of boots and struggle there). Finally with .NET v4.0 I uninstalled Fiddler and re-installed, to get v4 of Fiddler. Then it worked.

Just wanted to share - if somebody else stumbles upon the same problem.

The error Fiddler 2 gave was: "Type: System.ArgumentException, Source: mscorlib...."

Is this how you wanted it to behave like ?

 

Eric R | Senior Technical Support Engineer
Telerik team
 answered on 13 Apr 2020
1 answer
230 views

When using O365 extension and trying ws-fed auth to O365 fiddler chrashes, fiddler works alright when disabling extension

---------------------------
Uncaught Exception in Session #387
---------------------------
Fiddler has encountered an unexpected problem. If you believe this is a bug in Fiddler, please copy this message by hitting CTRL+C, and submit a bug report at http://www.telerik.com/forums/fiddler.

Length cannot be less than zero.

Parameter name: length

Type: System.ArgumentOutOfRangeException
Source: mscorlib
   at System.String.Substring(Int32 startIndex, Int32 length)

   at EXOFiddlerInspector.SessionProcessor.SetAuthentication(Session session)

   at EXOFiddlerInspector.Services.ActivationService.AutoTamperResponseAfter(Session _session)

   at Fiddler.FiddlerExtensions.(Session ) in C:\Jenkins\Fiddler_Windows\workspace\Fiddler2\Common\Application\Extensions.cs:line 866

   at Fiddler.Session.‘() in C:\Jenkins\Fiddler_Windows\workspace\Fiddler2\Common\Core\Session.cs:line 4073

   at Fiddler.ServerChatter.ŽŒ() in C:\Jenkins\Fiddler_Windows\workspace\Fiddler2\Common\Core\ServerChatter.cs:line 1520

   at Fiddler.ServerChatter.Œ() in C:\Jenkins\Fiddler_Windows\workspace\Fiddler2\Common\Core\ServerChatter.cs:line 1474

   at Fiddler.Session.‘() in C:\Jenkins\Fiddler_Windows\workspace\Fiddler2\Common\Core\Session.cs:line 3751

   at Fiddler.Session.(Object ) in C:\Jenkins\Fiddler_Windows\workspace\Fiddler2\Common\Core\Session.cs:line 3526


Fiddler v5.0.20194.41348 (x64 AMD64) [.NET 4.0.30319.42000 on Microsoft Windows NT 10.0.18363.0]
---------------------------
OK   
---------------------------

Eric R | Senior Technical Support Engineer
Telerik team
 answered on 10 Apr 2020
4 answers
33.3K+ views
Hi,

I reviewed prior posts and I see that this question has been asked before but either I don't fully understand the solution or my problem is slightly different.  I am attempting to user Fiddler with SSL decryption enabled to visit a site that we use for a vendor product (which is based in Flash).   I am able to access alot of other HTTPs sites (such as Google, Paypal, etc.) and view the resulting traffic, but I cannot access this particular site that I need.

I installed Fiddler today so I have the newest copy.

I see the following log entry when I try to access the site:

16:48:19:9974 fiddler.network.https> HTTPS handshake to <> failed. System.IO.IOException Received an unexpected EOF or 0 bytes from the transport stream.

The SSL certificate is in the trusted root store.    When I attempt to visit the site, I am prompted to accept the untrusted certificate and then IE attempts to load the page for quite some time and never gets through.   I also tried in Chrome just to make sure this wasn't a browser-specfic problem.

I think I am very close and just need a little help to get through.   Please let me know any information I can provide to get to the bottom of this.  Thank you in advance. 
Eric R | Senior Technical Support Engineer
Telerik team
 answered on 10 Apr 2020
3 answers
672 views

I downloaded the "fiddler...dmg" and installed it. When I try to run it, I get this error "“Progress Telerik Fiddler” can’t be opened because Apple cannot check it for malicious software.".

Is this ready for MacOS at this point. I can't disable the verification in a corporate environment.

Now what?

Eric R | Senior Technical Support Engineer
Telerik team
 answered on 08 Apr 2020
1 answer
113 views

I had trouble using Fiddler for iOS in localhost env.

( PC browser(IE) and Android are OK !)

 

A heavy request posts to server in iOS,

but Fuddler capture request twice.

dose anyone some idea?

 

like this:

-------------------------------------------

# Result  Protocol Host URL 

↓              HTTPS AAA test/RestAAA

   200       HTTP      Tunnel to AAA:443

  500       HTTPS AAA test/RestAAA     ←not expectation

-------------------------------------------

after , first HTTPS request is return 200,and Collect Json Data.

 

:)

Eric R | Senior Technical Support Engineer
Telerik team
 answered on 07 Apr 2020
2 answers
371 views
I am trying to get Fiddler running on a Mac and I keep getting the error that my connection is not private and I can't navigate to any sites, therefore rending Fiddler useless.  I've searched through the forums, but all of the solutions I've found have been for the Windows version.  I have verified that the "Decrypt HTTPS" box is checked, but if there's more that needs to be done on the Mac version, I have not found it.
Robert
Top achievements
Rank 1
 answered on 05 Apr 2020
1 answer
221 views

I'm trying to parse some data from a socket in C#. The socket uses the Permessage-Deflate extension. While the packet types are all text, some of the packets show illegible characters. 

 

If I select a packet and go to the HexView tab, I can right-click the packet, choose Copy/Copy as Base64, paste it into the TextWizard and then transform it from DeflatedSAML. This parsed the packet perfectly. 

 

What is being done here in terms of encodings etc in C# equivalent code? I can't seem to go from a string received as a packet in C# to getting the same result as those steps in Fiddler, no matter what options in terms of encoding or decompression I cycle through. . . 

Is there a 'flag' byte at the start of a packet that indicates whether a packet contains plain text or compressed data, out of interest?

I'd appreciate any pointers at all on this. 

Eric R | Senior Technical Support Engineer
Telerik team
 answered on 02 Apr 2020
Narrow your results
Selected tags
Tags
+? more
Top users last month
Rob
Top achievements
Rank 3
Bronze
Iron
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Top users last month
Rob
Top achievements
Rank 3
Bronze
Iron
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?