Launch Burp from inside Fiddler
I've written the article about FiddlerScript last week and I've gotten reply like this:
Yes, I know Burp rulez but I love Fiddler without reason so match so that I've just written Fiddler Script for launching Burp. Add these code snippet to your CustomRules.js of FiddlerScript, you can see 2 menu items, "Launch burp" in Tools menu, "Use Upstream Burp" in "Rules" menu. Click "Launch burp" first and turn-on "Use Upstream Burp" to start inspecting http traffic with Burp.@hasegawayosuke Burp Suite(@Burp_Suite) Rulez!
— Jeremy Bae (@opt9) January 28, 2016
Enjoy!
class Handlers
{
public static const m_burpPort : String = "8080";
public static RulesOption( "Use Upstream &Burp" )
var m_UseBurp: boolean = false;
public static ToolsAction( "Launch &burp" )
function launchBurp(){
const cmd = "cmd";
const cmdArgs = "/c java -jar -Xmx1024m";
const burpFolder = "C:\\Program Files (x86)\\burp";
var req : System.Net.HttpWebRequest;
var res : System.Net.HttpWebResponse;
var running : Boolean = false;
var files : String[];
var i : Number;
var burpJar : String = "";
try{
FiddlerObject.StatusText = "Checking burp already running";
var req = System.Net.HttpWebRequest( System.Net.WebRequest.Create( "http://localhost:" + m_burpPort ) );
req.Headers.Add( "X-check-burp", "1" );
res = System.Net.HttpWebResponse( req.GetResponse() );
if( res.StatusDescription === "OK" ){
running = true;
}
}catch( e ){
running = false;
}
if( !running ){
// search latest burp jar
files = System.IO.Directory.GetFiles( burpFolder, "burpsuite*.jar" );
for( i = 0; i < files.length; i++ ){
if( files[ i ] > burpJar ){
burpJar = files[ i ];
}
}
if( burpJar === "" ){
FiddlerObject.alert( "nou found burpsuite*.jar in " + burpFolder );
return;
}
FiddlerObject.StatusText = "Launching burp...";
System.Diagnostics.Process.Start( cmd, cmdArgs + " \"" + burpJar + "\"" );
FiddlerObject.StatusText = "";
}else{
FiddlerObject.StatusText = "burp is already running";
}
}
static function OnBeforeRequest(oSession: Session) {
if( oSession.oRequest.headers.Exists( "X-check-burp" ) ){
oSession["ui-hide"] = "burp";
}
if( m_UseBurp ){
oSession.bypassGateway = false;
oSession[ "x-overrideGateway" ] = "localhost:" + m_burpPort;
}
}
}