Sunteți pe pagina 1din 67

Debugging

with Fiddler
Să vorbim despre...
Cum am ajuns aici?
A fost odată ca niciodată…
Oh nu! Ce s-a întâmplat?
Trebuie să existe o cale mai bună ...
O idee simplă prinde contur ...
Toate problemele din domeniul
informaticii pot fi rezolvate printr-un alt
nivel de indirectare.
- David Wheeler

Network
Applications Proxy Website
APIs
Doar două probleme
• Nu știu HTTP
• Nu știu C#
Fiddler: Evoluție
Unsprezece ani,
~ 35k linii de C #,
Peste 160 de versiuni de lansare,
o broșură întreagă,
o mutare la Telerik,
și două noi platforme acceptate later…
Un tur rapid prin Fiddler ...
UI Evolution - Lista sesiunilor web
Fiddler în Linux (Mint/Ubuntu)
Fiddler în Mac OSX
• Funcționează, dar, din cauza erorilor de interfață, este mai bine
să folosiți VirtualBox / Parallels / Fusion
Monitorizarea traficului
Architectura tipică
Depanare pe toate dispozitivele
PC
Mac
iOS

Fiddler Internet
Windows/Linux
Tablet
s
Phone
s
Fiddler ca Reverse Proxy

http://fiddler2.com/r/?reverseproxy
Win8/8.1 “Immersive” Apps & IE11
AppContainer blochează conexiunile de rețea „loopback”. În scopuri de depanare, puteți
dezactiva blocarea respectivă.

Ctrl+Click să-i scutească pe toți


AppContainers
.NET Applications
YourApp.exe.config or machine.config
<configuration>
  <system.net>
    <defaultProxy>
      <proxy bypassonlocal="false"
usesystemdefault=“false"
proxyaddress=
"http://127.0.0.1:8888" />
    </defaultProxy>
  </system.net>
</configuration>
node.js
Diferite biblioteci oferă abordări diferite ...
var http = require('http');
var options = {
host: '127.0.0.1',
port: 8888,
path: 'https://bayden.com/echo.aspx',
headers: { Host: "bayden.com“ },
method: 'POST'
};
var req = http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode + ‘ HEADERS: '
+ JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) { console.log('BODY: ' + chunk); });
});

req.write(‘Post Data\n');
req.end();
Protocoale
HTTPS Decriptare trafic
Din motive de securitate, proxy-urile nu pot „vedea” cererile HTTPS în mod normal. Pentru a activa
decriptarea traficului, Fiddler efectuează un atac „ man-in-the-middle”.

Decrypting CONNECT tunnel to www.fiddler2.com


GET
/fiddler2/

GET
/Fiddler2/Fiddler.css

GET
/Fiddler/images/FiddlerLogo.png
HTML5 WebSockets
WebSocket-urile permit comunicații socket bidirecționale
printr-o conexiune stabilită. Utilizare HTTP sau HTTPS.
FTP
Fiddler acceptă traficul FTP printr-un gateway FTP
încorporat. Proxy-ul FTP este dezactivat implicit.

SPDY / HTTP2
Fiddler recunoaște și etichetează conexiunile SPDY dacă
decriptarea HTTPS este dezactivată..
SPDY / HTTP2
Fiddler nu poate accepta SPDY până când SslStream
de la .NET nu acceptă ALPN. Vă rugăm să votați
pentru eroarea mea pe CONNECT:
https://
connect.microsoft.com/VisualStudio/feedback/ViewF
eedback.aspx?FeedbackID=812003
De asemenea, vă rugăm să votați pentru această altă eroare SslStream: https://
connect.microsoft.com/VisualStudio/feedback/details/811998/system-net-security-sslstream-ca
lls-localcertificateselection-callback-unconditionally-even-if-server-never-sends-certificatereq
uest-tls-message
Protocol Violations

prefs set fiddler.lint.HTTP True


Stocare și încărcare
trafic
Formate de ieșire
• Fiddler Session Archive • Copiați în clipboard
• Visual Studio .WebTest • Stocați ca fișier text simplu
• HTML5 AppCache Manifest • Extrageți corpuri de răspuns
• WCAT Load Test binar
• cURL Script • Arhivează într-o bază de date
• HTTP Archive Format (HAR)
• Meddler Script
Sau scrie-ți propria ...
SAZ format fișier
Fișierele Zip Session Archive conțin :
• Octeți de solicitare și răspuns
• Sincronizare și alte metadata
• WebSocket message
• HTML index fișiere

Din motive de securitate, fișierele SAZ pot fi criptate folosind AES


FiddlerCap – Capturi simple
http://www.fiddlercap.com

Interfață utilizator localizată la :


English | Français | Español | Português | 日本語 | русский
Formate importate
• HTTP Archive Format (HAR)
• Internet Explorer F12 Developer Tools (NETXML)
• Telerik Test Studio LoadTest
• Packet Capture (WireShark, tcpdump, NetMon)

• … sau scrie-l pe al tău


PCAP Import
Analiza traficului
TextWizard
Convertirea textului în web popular encodings.
Compararea traficului
Utilizați WinDiff sau altceva
la alegere pentru a compara
solicitările și răspunsurile
sesiunilor.
Compararea traficului
Utilizați Extensia Differ pentru a compara
simultan grupuri de sesiuni.
Filtrarea traficului
• Ignore Images & CONNECTs
• Application Type Filter
• Process Filter
• Troubleshooting with Help menu

Selectarea traficului
> Utilizarea QuickExec
> Utilizarea Find
Suport pentru expresii regulate
Reformatare SyntaxView
ImageView DataURL Support
Integrarea instrumentelor ImageView
Metadatу & GeoLocatie
HTML5 Media și FontPrevizualizări
X-Download-Initiator

https://fiddler2.com/dl/EnableDownloadInitiator.reg
cols add @request.X-Download-Initiator
Manipularea traficului
Rescrieri automate

• Reguli simple incorporate


• Comenzi HOST
Depanarea punctului de întrerupere

Folosiți Fiddler
Inspectors pentru a
modifica cererile și
răspunsurile….
Filtre Simple

Semnalizați, modificați sau eliminați anteturile din


toate cererile și răspunsurile.
Solicitare Composer
Creați cereri construite manual sau modificați și
retransmiteți o cerere capturată anterior.

Suporturi :
• Autentificare automata
• Încărcări de fișiere
• Redirecționarea urmăririi
• Urmărire URL secvențială
• CURL comenzi
AutoResponder
Redă din nou traficul
capturat sau generat.
FiddlerScript
FiddlerScript - Modificare cerere
static function OnBeforeRequest(oS: Session)
{

if (oS.uriContains(".aspx"))
{
oS["ui-color"] = "red";
}

if (m_DisableCaching)
{
oS.oRequest.headers.Remove("If-None-Match");
oS.oRequest.headers.Remove("If-Modified-Since");
oS.oRequest["Pragma"] = "no-cache";
}
}
FiddlerScript - Modificarea răspunsului
static function
OnBeforeResponse(oS: Session) {

oS.utilDecodeResponse();
oS.utilPrependToResponseBody(
"Injected Content!");

}
Powerups
Înțelegerea extensibilității
Fiecare componentă roșie este codul tău ...

Fiddler.exe
Inspector2

ExecAction.ex
Script / Batch

Inspector2
IFiddlerExtension
file

e IFiddlerExtension

Fiddler ScriptEngine
Your FiddlerScript
FiddlerCore

Xceed*.dll Makecert.exe
Înțelegerea extensibilității interfeței de utilizare
1. RulesOptions
2. ToolsActions
3. Custom menus
4. Custom columns
5. ContextActions
6. QuickExec handlers
7. Views
8. Request Inspectors
9. Response Inspectors
10.Import & Export Transcoders
Type-specific Inspectors
Expert Perf Analysis with neXpert
intruder21 Web Fuzzer

• By yamagata21
Watcher & x5s Security Auditors

http://websecuritytool.codeplex.com/ http
://xss.codeplex.com/
WCF Binary Inspector
Integrarea
ExecAction.exe
• Apeluri la OnExecAction în script sau extensii
• Alternativ, invocați direct trimițând un mesaj Windows :
oCDS.dwData = 61181; // Magic Cookie
oCDS.cbData = lstrlen(wzData * sizeof(WCHAR));
oCDS.lpData = wzData;

SendMessage(
FindWindow(NULL, "Fiddler - HTTP Debugging Proxy"),
WM_COPYDATA,
NULL,
(LPARAM) &oCDS
);
Aplicație Fiddler cu extensii Găzduirea aplicației dvs.
FiddlerCore
Fiddler.exe
Inspector2 YourApp.exe
ExecAction.ex

Inspector2
IFiddlerExtension
e

IFiddlerExtension

Fiddler ScriptEngine
Your FiddlerScript
FiddlerCore FiddlerCore

Xceed*.dll Makecert.exe DotNetZip CertMaker.dll


Programare cuFiddlerCore
// Call Startup to tell FiddlerCore to begin
// listening on the specified port, register as
// the system proxy and decrypt HTTPS traffic.
Fiddler.FiddlerApplication.Startup(8877, true, true);

Fiddler.FiddlerApplication.BeforeResponse +=
delegate(Fiddler.Session oS) {
Console.WriteLine("{0}:HTTP/{1} for {2}", oS.id,
oS.responseCode, oS.fullUrl);
};

// Later, call Shutdown to tell FiddlerCore to stop


// listening and unregister as the system proxy
Fiddler.FiddlerApplication.Shutdown();

S-ar putea să vă placă și