Skip to content

Instantly share code, notes, and snippets.

@lab313ru
Last active September 28, 2023 12:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lab313ru/474fc32f76ce3c23698d905dc0df16af to your computer and use it in GitHub Desktop.
Save lab313ru/474fc32f76ce3c23698d905dc0df16af to your computer and use it in GitHub Desktop.
Decrypt yamaha yas-109 updates
import os.path
import sys
from base64 import b64decode
K = [0x1223A837, 0x4098287D, 0x36408361, 0x98473752]
IV = [0x38374682, 0x92023238, 0x34983765, 0x20876291]
K1 = 'L4XsRBMa8vOfO8f5rtisTQo4XqizUI4NkZMcNpWgSq7AByiUEyvHLc1YCfKX061W1aUjSSmd/tpWEm7YfeANq/mX48asu5kFAR4fPoF0kjk+Pz3uzXHuLSimF7TCm6CW5ia3gASIl1YiEa1dyHTO3A=='
K2 = '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'
K3 = 'AldnYWZ+RvnkcE++0U8jgGNKLFpMOqfloNrnCWYtdRJB9wElokWxZFCbfkgoJ27dD1zpRHRAcNRT6yOWsr8lAvuKP9A0t+JsTW39v9xZ88vcNGctOTUT3EA8UPHz/LzuXGxaYT5TTf11IIzFMyv9vI6aBiUxtukWoDotFQ4KKwubjIH5P4IU5oXj3rfBTVdFCS1ozC+wspfAJ+/OWl8N7VVY5n+sl+cx2Pq2JWVThNMdJIgb5W8DdYta+Va5hZMe+WmZdZBT1Swxw7dX9FK1q6Fs/mr8XhsyhZZqtuYFiMAz397HuWEqn1s33LoVlt59Nvtjv+5tEZabnM10yiNAWTG8+u6QF9b5DPeUf4BOoRkxvDOnetwt/OZXE5vMuc0bISs2nR1ZVhfteyxnRYXjlCj7W7cZs0YA1oxS18bYzeYZ7/9GSwmDHj9iY1iL6CBE+BhxbehVW3gBkDdlgWN+NK2JkGGq36dNKU65MK+l6zf6fyP0ENvfg25inlh2OtM4bdJAsL4XqklImdj0sm3fF2Jx/1M6EIFZry5AxrebBgZcahUvDb7hsyyLWH/GlRGAwjj1+4Tlal1TVblHEnIlczp1/Tezc1iLqs3p2BVTDdw='
def decrypt_key(key_buf, key, iv, dest):
tmp_path = 'tmp_key.bin'
open(tmp_path, 'wb').write(b64decode(key_buf))
os.system('openssl aes-128-cbc -d -md md5 -in %s -out %s -iv %s -K %s' % (tmp_path, dest, iv, key))
os.remove(tmp_path)
def decrypt_file(key_path, path, dest):
os.system('openssl enc -d -aes-128-cbc -md md5 -kfile %s -in %s -out %s' % (key_path, path, dest))
def main(path):
key = '%x%x%x%x' % (K[0], K[1], K[2], K[3])
iv = '%x%x%x%x' % (IV[0], IV[1], IV[2], IV[3])
tmp_dec = 'tmp_dec.bin'
decrypt_key(K1, key, iv, tmp_dec)
fh, fe = os.path.splitext(path)
decrypt_file(tmp_dec, path, '%s_dec%s' % (fh, fe))
if __name__ == '__main__':
main(sys.argv[1])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment