-
Star
(151)
You must be signed in to star a gist -
Fork
(35)
You must be signed in to fork a gist
-
-
Save jpatters/4553139 to your computer and use it in GitHub Desktop.
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')); |
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 !! ♥ tnx
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
Nice, this saved me a few hours to find my old password backup
just in case, here is a MSX BASIC version of the code 😎😁
10 LINE INPUT h$
20 st$ = ""
30 sh = VAL(RIGHT$(h$, 1))
40 h$ = LEFT$(h$, LEN(h$) -1)
50 FOR i = 1 TO LEN(h$) STEP 2
60 st$ = st$ + CHR$(VAL("&h" + MID$(h$, i, 2)) - sh)
70 NEXT i
80 PRINT st$
If you don't believe me, try it on https://msxpen.com/
Here's an online tool version: heidisql password decoder
Awesome, thanks!