21.04.2015

Cookie Injector code

// ==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');
})();