|
// ==UserScript== |
|
// @name Cookie Injector |
|
// @namespace BearsWithWings |
|
// @description Inject Cookie String From Wireshark Dump Into Any Webpage |
|
// @version 2.0.1 |
|
// @include * |
|
// @exclude https?://gmail.com/* |
|
// @exclude https?://mail.google.com/* |
|
// ==/UserScript== |
|
|
|
//Anonomyous function wrapper |
|
(function (){ |
|
//Ensure that there is only one instance of the cookieInjector Object |
|
if(typeof this["cookieInjector"] == "undefined"){ |
|
cookieInjector = {}; |
|
} |
|
|
|
//Make a local refrence to the cookie Injector object to save on typing |
|
var cI = cookieInjector; |
|
//Make the cookieInjector object globally viewable |
|
unsafeWindow['cookieInjector'] = cI; |
|
|
|
/** |
|
* Cookie Injector createDiv function |
|
* Sets up the cookie injector dialogue |
|
*/ |
|
cI.createDiv = function(){ |
|
//Create the DIV to contain the Dialog |
|
cI.dialog = document.createElement('div'); |
|
cI.dialog.id = "cookieInjectorDiv"; |
|
cI.dialog.innerHTML = "<div align='center'>Wireshark Cookie Dump:<br/><input type='text' id='cookieInjectorCookie'/><br/><button onclick='cookieInjector.writeCookie();'>OK</button><button onclick='cookieInjector.hide();'>Cancel</button></div>"; |
|
cI.dialog.style.display = "none"; |
|
cI.dialog.style.position = "fixed"; |
|
cI.dialog.style.opacity = "0.9"; |
|
cI.dialog.style.top = "40%"; |
|
cI.dialog.style.background= "#DDDDDD"; |
|
cI.dialog.style.left = "40%"; |
|
cI.dialog.style.width = "20%"; |
|
cI.dialog.style.zIndex = "99999"; |
|
document.body.appendChild(cI.dialog); |
|
cI.visible = false; |
|
} |
|
|
|
/** |
|
* Show the dialog |
|
*/ |
|
cI.show = function(){ |
|
if(!cI.dialog) { |
|
cI.createDiv(); |
|
} |
|
cI.dialog.style.display = "block"; |
|
cI.visible = true; |
|
} |
|
|
|
/** |
|
* Hide the dialog |
|
*/ |
|
cI.hide = function(){ |
|
cI.dialog.style.display = "none"; |
|
cI.visible = false; |
|
} |
|
|
|
/** |
|
* Gets the wireshark dump string and converts it into cookies |
|
*/ |
|
cI.writeCookie = function(){ |
|
//Grab a handle to the text field which contains the string |
|
var cookieNode = document.getElementById('cookieInjectorCookie'); |
|
var cookieText = cI.cleanCookie(cookieNode.value); |
|
cookieNode.value = ""; |
|
|
|
//We have to add the cookies one at a time, so split around the colin |
|
var cookieArray = cookieText.split(";"); |
|
for(var x=0; x<cookieArray.length; x++){ |
|
//We want the path to be the root, the host is filled in automatically |
|
//since we are on the same webpage that we captured the cookies on |
|
document.cookie = cookieArray[x]+"; path=/"; |
|
} |
|
|
|
alert("All Cookies Have Been Written"); |
|
cI.hide(); |
|
} |
|
|
|
/** |
|
* Do a little big of cleanup on the cookie string, Mostly we are looking |
|
* To get rid of the "Cookie: " string that Wireshark prepends to the cookie string |
|
*/ |
|
cI.cleanCookie = function(cookieText){ |
|
var cookie = cookieText.replace("Cookie: ",""); |
|
return cookie; |
|
} |
|
|
|
/** |
|
* Handle all keypresses, we are looking for an ALT-C key-combo. Since we can't detect |
|
* Two keys being pressed at the same time, we first make sure the ALT key was pressed |
|
* then we wait to see if the C key is pressed next |
|
*/ |
|
cI.keyPress = function (e){ |
|
//Check to see if "C" is pressed after ALT |
|
if(e.keyCode == 67 && cI.ctrlFire){ |
|
if(!cI.visible){ |
|
cI.show(); |
|
}else{ |
|
cI.hide(); |
|
} |
|
} |
|
|
|
//Make sure the Alt key was previously depressed |
|
if(e.keyCode == 18){ |
|
cI.ctrlFire = true; |
|
}else{ |
|
cI.ctrlFire = false; |
|
} |
|
} |
|
|
|
//Capture all onkeydown events, so we can filter for our key-combo |
|
cI.visible = false; |
|
window.addEventListener('keydown', cI.keyPress,'false'); |
|
})(); |