function heidiDecode(hex) { | |
var str = ''; | |
var shift = parseInt(hex.substr(-1)); | |
hex = hex.substr(0, hex.length - 1); | |
for (var i = 0; i < hex.length; i += 2) | |
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16) - shift); | |
return str; | |
} | |
document.write(heidiDecode('755A5A585C3D8141786B3C385E3A393')); |
Thanks
Thanks, I fired up a console in Firefox and retrieved my password!
thanks!
Awesome, thanks!
coool. saved my day
I wrote a PHP version if you want to do this server side!
https://gist.github.com/trevorbicewebdesign/6b747ba8e00a2e9f8001
Thanks ! Here a python version :
def decode(hx):
shift = int(hx[-1])
l = [int(hx[i:i+2], 16) for i in range(0, len(hx), 2)]
return ''.join(chr(v - shift) for v in l)
i try to make it more easy
just try this link
http://wendyliga.com/decoder/heidisqldecoder.html
thanks for Trevor Bice for php code
It's never late to say thank you, right? :)
You guys saved my day too.
https://github.com/Elektrik1/HeidiSQLDecode
Simple winforms aternative, fetches passwords right from registry, so no need to open/export at all. Quick and easy :)
Good god, I'm an idiot. Thanks so much for this.
Thanks, @jpatters! Here, have a PowerShell version with bonus registry lookup:
function Get-HeidiCreds {
$profile = "user@server"
$password = (Get-Item -Path registry::HKEY_CURRENT_USER\SOFTWARE\HeidiSQL\Servers\).OpenSubKey($profile.toString()).GetValue("Password").toString()
$username = (Get-Item -Path registry::HKEY_CURRENT_USER\SOFTWARE\HeidiSQL\Servers\).OpenSubKey($profile.toString()).GetValue("User").toString()
$shift = [Convert]::ToInt64($password.substring($password.toString().length-1,1))
$password = $password.substring(0,$password.toString().length-1)
$str = ""
for ($i=0; $i -lt $password.length; $i += 2) {
$val = [Convert]::ToInt64($password.substring($i,2), 16)
$val = '{0:x1}' -f ($val - $shift)
$val = $val | ForEach-Object {[Convert]::ToInt32($_,16)} | ForEach-Object {[Convert]::ToChar($_)}
$str += $val
}
$password = $str
return $username, $password
}
Note: You can use the same method to get credentials for SSH tunnel if configured, just choose those registry keys instead.
Thank you so much, it saved my day
PHP Decode:
php -r '$p=$argv[1];$s=substr($p,-1); echo implode(array_map(function($c)use($s){return chr($c - $s);},unpack("C*",hex2bin(substr($p,0,-1)))));' 303132333435363738390
Note that PHP's chr wraps negative numbers properly. Not all languages will do this. You may need ($c+256-$s)%256
. To test for that you should see if whatever you're using for chr produces the same for 0 - s
as 256 - s
.
If you're encoding your own password (generating conf)...
php -r 'echo bin2hex("Sweet as a corn that'\''s not yet born."), 0;'
There's no point to bother shifting it. Shifting and hex encoding is so weak it might as well be plain text.
@wendyliga Do you have everyone's password now :D?
you are a lifesaver
Thank you!
Thanks
THANKS A LOT!!!!
Wow !!
thank you,,
Hi!
Awesome! Thank u! We owe you one.
All the best.
And how encode a password?
I need to generate a settings file for Heidi with php for my all databases connections?
Thank you!
Thank You all :)
Thank you!
@IsraelIglesiasBIT not sure if you still need it considering this comment was two years ago, but here's a PowerShell solution for encoding passwords for Heidi:
$heidiPass = "password"
$obfuscatedPass = ''
$shift = Get-Random -Minimum 1 -Maximum 10
for ($i = 0; $i -lt $heidiPass.Length; $i++) {
$char = [int][char]$heidiPass[$i] + $shift
$hex = $char.ToString("X")
$obfuscatedPass += $hex
}
$obfuscatedPass += $shift.ToString()
a javascript snippet to encode a password:
function heidiCrypt(plain) {
crypted = ""
shift = Math.floor(Math.random() * 10)
for(i = 0; i < plain.length; i++) {
crypted += (plain.charCodeAt(i) + shift).toString(16).toUpperCase();
}
return crypted + shift;
}
console.log(heidiCrypt("password"));
@IsraelIglesiasBIT not sure if you still need it considering this comment was two years ago, but here's a PowerShell solution for encoding passwords for Heidi:
$heidiPass = "password" $obfuscatedPass = '' $shift = Get-Random -Minimum 1 -Maximum 10 for ($i = 0; $i -lt $heidiPass.Length; $i++) { $char = [int][char]$heidiPass[$i] + $shift $hex = $char.ToString("X") $obfuscatedPass += $hex } $obfuscatedPass += $shift.ToString()
Genius. This saved me big time. Thank you!
for nodejs and extract host,port,user,password and save to file
https://gist.github.com/an1creator/c1ea0ca5da38253d2e883bc631e4cc64
Thank you!