Every now and then I get someone asking me for an ftp password. Mine have always been stored in FileZilla. I don’t know them by heart. There is no problem with this except that FileZilla encrypts them. Thank God decrypting FileZilla 2 passwords is easy. Here is some as2 code to accomplish it:
function decrypt(numeric:String):String {
var decrypted:String = "";
var encrypted:String = "";
var secret:String = "FILEZILLA1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (numeric.length % 3 == 0) {
for (var i:Number = 0; i < numeric.length; i += 3) {
var charCode:Number = parseInt(numeric.substr(i, 3), 10);
encrypted += String.fromCharCode(charCode);
}
for (var i:Number = 0; i < encrypted.length; i++) {
var secretCharIndex:Number = (encrypted.length + i) % secret.length;
var numA:Number = encrypted.charCodeAt(i);
var numB:Number = secret.charCodeAt(secretCharIndex);
decrypted += String.fromCharCode(numA ^ numB);
}
} else {
decrypted = "ERROR: Length must be multiple of 3.";
}
return decrypted;
}
function encrypt(decrypted:String):String {
var numeric:String = "";
var encrypted:String = "";
var secret:String = "FILEZILLA1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (var i:Number = 0; i < decrypted.length; i++) {
var secretCharIndex:Number = (decrypted.length + i) % secret.length;
var numA:Number = decrypted.charCodeAt(i);
var numB:Number = secret.charCodeAt(secretCharIndex);
var charCode:Number = numA ^ numB;
encrypted += String.fromCharCode(charCode);
var paddedcharCode:String = charCode.toString(10);
while (paddedcharCode.length < 3) {
paddedcharCode = "0" + paddedcharCode;
}
numeric += paddedcharCode;
}
return numeric;
}
And a working example:
Hi
I just translated it in Javascript.
So it’s now available online :
http://static.t4ke.com/web/filezilla-password-recovery/
Dude, this just saved me quite a bit of embarassment. Thanks!
This code sure saved me a lot of trouble when attempting to recover a password from a backed-up Filezilla xml file that is more than two years old… Thanks so much!