Skip to content

anonymous /x.js
Created

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
/*
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);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.