public
anonymous / x.js
Last active

  • Download Gist
x.js
JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
 
 
/*
 
 
This file has been modified from Onur Yalazi's original distribution
by Brandon Goldsworthy and Alejandro Carrazzoni. This version only works with
Ubiquity 0.5 or newer. For Ubiquity 0.1.x go to
http://www.yalazi.org/ubiquity/commands/bugmenot.js
 
 
Changes:
Added a preview. The preview shows all of bugmenot's results,
though execute will still only insert the highest rated one.
Use current window location as default url for both preview and execute
Add error callback to jQuery call to bugmenot's page.
If not in editable field, opens bugmenot in new tab
Adapted to work in Parser 2.
 
Onur's original attribution info is left in-tact below.
You can get his original file there.
*/
 
CmdUtils.CreateCommand({
names: ["bugmenot", "find logins"],
homepage: "http://www.yalazi.org/ubiquity",
author: { name: "Onur YALAZI", email: "yalazi@gen3.com.tr"},
license: "MPL",
description: "modified by Brandon Goldsworthy and Alejandro Carrazzoni. Get password for current page or entry from bugmenot.com",
help: "If you're in an editable text area, inserts username and password",
 
_decodeIt: function(data,key) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o11 = "";var o21 = ""; var o31 = "";
var h11 = "";var h21 = ""; var h31 = "";var h41 = "";
var bits1 = ""; var i1 = 0; var enc1 = "";
 
do {
h11 = b64.indexOf(data.charAt(i1++));
h21 = b64.indexOf(data.charAt(i1++));
h31 = b64.indexOf(data.charAt(i1++));
h41 = b64.indexOf(data.charAt(i1++));
bits1 = h11 << 18 | h21 << 12 | h31 << 6 | h41;
o11 = bits1 >> 16 & 255;
o21 = bits1 >> 8 & 255;
o31 = bits1 & 255;
if (h31 == 64) {
enc1 += String.fromCharCode(o11);
} else if (h41 == 64) {
enc1 += String.fromCharCode(o11, o21);
} else {
enc1 += String.fromCharCode(o11, o21, o31);
}
} while (i1 < data.length);
 
 
strInput = enc1;
strOutput = "";
intOffset = (key + 112) / 12;
for (i1 = 4; i1 < strInput.length; i1++) {
thisLetter = strInput.charAt(i1);
thisCharCode = strInput.charCodeAt(i1);
newCharCode = thisCharCode - intOffset;
strOutput += String.fromCharCode(newCharCode);
}
return strOutput;
},
_inField: function(){
//gleaned from CmdUtils.setSelection
return context.focusedWindow.document.designMode == "on" ||
(context.focusedElement && context.focusedElement.selectionStart >= 0);
},
_getPassword: function(args, parent, pblock) {
 
var baseUrl = "http://www.bugmenot.com/view/" + args.modifier.text;
 
if (!pblock && !this._inField()){
Utils.openUrlInBrowser(baseUrl);
 
}else{
jQuery.ajax({
url:baseUrl,
error:function(){
if (pblock){
pblock.innerHTML += "Passwords not found.<br />";
}else{
displayMessage("Passwords not found.");
CmdUtils.setSelection("Passwords not found.");
}
},
success:function( passwords ) {
key = parseInt(passwords.match(/key.=.([0-9]*)/)[1]);
var result = "";
 
arrayToWork = passwords.split("<div class=\"account\"");
if (arrayToWork.length && arrayToWork.length > 1) {
o_password = "";
o_username = "";
o_rate = 0;
 
for (i=0;i<arrayToWork.length; i++) {
if (pair = arrayToWork[i].match(/d\('(.*)'\)/g)) {
 
rate = parseInt(arrayToWork[i].match(/[0-9]{1,3}%/));
 
username = pair[0].match(/'(.*)'/)[1];
username = parent._decodeIt( username, key );
 
password = pair[1].match(/'(.*)'/)[1];
password = parent._decodeIt( password, key);
 
if (pblock){
pblock.innerHTML += rate + "% " + username + ":" + password + "<br />";
}
 
if (rate > o_rate) {
o_password = password;
o_username = username;
o_rate = rate;
}
}
}
if (o_rate > 0) {
result = o_username + ':' + o_password;
} else {
result = 'Passwords not found.';
if (pblock){
pblock.innerHTML += "Passwords not found.<br />";
}
}
} else {
result = 'Passwords not found.';
if (pblock){
pblock.innerHTML += "Passwords not found.<br />";
}
}
 
if (!pblock){
displayMessage(result);
CmdUtils.setSelection(result);
}
}
});
}
},
 
arguments: [{role: "modifier", nountype: noun_arb_text, label: "url"}],
preview: function( pblock, args ) {
pblock.innerHTML = "";
if (args.modifier.text.length < 1){
args.modifier.text = String(Application.activeWindow.activeTab.document.location);
}
pblock.innerHTML = "Passwords for: " + args.modifier.text + "<br />";
this._getPassword(args, this, pblock);
},
execute: function( args ) {
if (args.modifier.text.length < 1){
args.modifier.text = String(Application.activeWindow.activeTab.document.location);
}
this._getPassword(args, this, false);
}
});

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.