Пример #1
0
 private static int DoDecrypt()
 {
     Logger.WriteLog("========== hadesFirm Firmware Decrypter ==========\n", false);
     Logger.WriteLog("Decrypting file " + CmdLine.file + "...", false);
     CmdLine.CreateProgressbar();
     if (CmdLine.file.EndsWith(".enc2"))
     {
         Crypto.SetDecryptKey(CmdLine.region, CmdLine.model, CmdLine.version);
     }
     else if (CmdLine.file.EndsWith(".enc4"))
     {
         Crypto.SetDecryptKey(CmdLine.version, CmdLine.logicValue);
     }
     if (Crypto.Decrypt(CmdLine.file, Path.GetFileNameWithoutExtension(CmdLine.file), false) != 0)
     {
         Logger.WriteLog("\nError decrypting file", false);
         Logger.WriteLog("Please make sure the filename is not modified and verify the version / logicValue argument", false);
         File.Delete(Path.GetFileNameWithoutExtension(CmdLine.file));
         return(3);
     }
     Logger.WriteLog("\nDecrypting successful", false);
     return(0);
 }
Пример #2
0
        private static int DoDownload()
        {
            Logger.WriteLog("========== hadesFirm Firmware Downloader ==========\n", false);
            Command.Firmware fw;
            if (string.IsNullOrEmpty(CmdLine.version))
            {
                fw = Command.UpdateCheckAuto(CmdLine.model, CmdLine.region, CmdLine.binary);
                if (fw.FetchAttempts == 0)
                {
                    return(5);
                }
            }
            else
            {
                fw = Command.UpdateCheck(CmdLine.model, CmdLine.region, CmdLine.version, CmdLine.binary, false);
            }
            if (fw.Version == null)
            {
                return(2);
            }
            string str = Path.Combine(CmdLine.folder, fw.Filename);

            Logger.WriteLog("Downloading...\n", false);
            CmdLine.CreateProgressbar();
            int num1;

            do
            {
                Utility.ReconnectCmdLine();
                Utility.ReconnectDownload = false;
                num1 = Command.Download(fw.Path, fw.Filename, fw.Version, fw.Region, fw.Model_Type, str, fw.Size, false);
            }while (Utility.ReconnectDownload);
            if (num1 != 200 && num1 != 206)
            {
                Logger.WriteLog("Error: " + (object)num1, false);
                return(4);
            }
            if (CmdLine.autodecrypt)
            {
                if (str.EndsWith(".enc2"))
                {
                    Crypto.SetDecryptKey(fw.Region, fw.Model, fw.Version);
                }
                else if (str.EndsWith(".enc4"))
                {
                    if (fw.BinaryNature == 1)
                    {
                        Crypto.SetDecryptKey(fw.Version, fw.LogicValueFactory);
                    }
                    else
                    {
                        Crypto.SetDecryptKey(fw.Version, fw.LogicValueHome);
                    }
                }
                Logger.WriteLog("\nDecrypting...\n", false);
                CmdLine.CreateProgressbar();
                CmdLine.fwdest = Path.Combine(Path.GetDirectoryName(str), Path.GetFileNameWithoutExtension(fw.Filename));
                int num2 = Crypto.Decrypt(str, CmdLine.fwdest, false);
                File.Delete(str);
                if (num2 != 0)
                {
                    File.Delete(CmdLine.fwdest);
                    return(3);
                }
            }
            if (!string.IsNullOrEmpty(CmdLine.metafile))
            {
                CmdLine.SaveMeta(fw);
            }
            Logger.WriteLog("\nFinished", false);
            return(0);
        }