From cb09e369fb1ed41b5724a45929a49b42c2718203 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Sat, 3 Nov 2012 02:16:01 +0100 Subject: Introduce upgtools for sony nwz players This tool can unpack UPG archives for firmware updates. Change-Id: I32f5f1a84759198c7af4a4ecfd7aa65eaeda567a --- utils/nwztools/upgtools/mg.cpp | 67 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 utils/nwztools/upgtools/mg.cpp (limited to 'utils/nwztools/upgtools/mg.cpp') diff --git a/utils/nwztools/upgtools/mg.cpp b/utils/nwztools/upgtools/mg.cpp new file mode 100644 index 0000000..8816259 --- /dev/null +++ b/utils/nwztools/upgtools/mg.cpp @@ -0,0 +1,67 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2012 Amaury Pouly + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ +#include "mg.h" +#include +#include +#include +#include +#include + +using namespace CryptoPP; +namespace +{ + ECB_Mode< DES >::Decryption g_dec; + ECB_Mode< DES >::Encryption g_enc; + + inline int dec_des_ecb(void *in, int size, void *out, uint8_t *key) + { + g_dec.SetKey(key, 8); + g_dec.ProcessData((byte*)out, (byte*)in, size); + return 0; + } + + inline int enc_des_ecb(void *in, int size, void *out, uint8_t *key) + { + g_enc.SetKey(key, 8); + g_enc.ProcessData((byte*)out, (byte*)in, size); + return 0; + } +} + +int mg_decrypt_fw(void *in, int size, void *out, uint8_t *key) +{ + return dec_des_ecb(in, size, out, key); +} + +int mg_encrypt_fw(void *in, int size, void *out, uint8_t *key) +{ + return enc_des_ecb(in, size, out, key); +} + +int mg_decrypt_pass(void *in, int size, void *out, uint8_t *key) +{ + return dec_des_ecb(in, size, out, key); +} + +int mg_encrypt_pass(void *in, int size, void *out, uint8_t *key) +{ + return enc_des_ecb(in, size, out, key); +} -- cgit v1.1