Example #1
0
        public static async Task <bool> Load(bool forceReload = false)
        {
            if (Globals.Game.ActualGame == EGame.Fortnite && MenuItems.pakFiles.AtLeastOnePak())
            {
                if (forceReload)
                {
                    Dictionary <string, string> staticKeys = new Dictionary <string, string>();
                    if (!string.IsNullOrEmpty(Properties.Settings.Default.StaticAesKeys))
                    {
                        staticKeys = JsonConvert.DeserializeObject <Dictionary <string, string> >(Properties.Settings.Default.StaticAesKeys);
                    }

                    Dictionary <string, Dictionary <string, string> > oldDynamicKeys = new Dictionary <string, Dictionary <string, string> >();
                    try
                    {
                        if (!string.IsNullOrEmpty(Properties.Settings.Default.DynamicAesKeys))
                        {
                            oldDynamicKeys = JsonConvert.DeserializeObject <Dictionary <string, Dictionary <string, string> > >(Properties.Settings.Default.DynamicAesKeys);
                        }
                    }
                    catch (JsonSerializationException) { /* Needed for the transition bewteen global dynamic keys and "per game" dynamic keys */ }

                    BenResponse benResponse = await AesData.GetData().ConfigureAwait(false);

                    if (benResponse != null)
                    {
                        if (!string.IsNullOrEmpty(benResponse.MainKey))
                        {
                            string mainKey = $"0x{benResponse.MainKey[2..].ToUpper()}";
Example #2
0
        public static async Task <bool> Load(bool forceReload = false, bool forceReloadMain = false)
        {
            if (Globals.Game == EGame.Fortnite && MenuItems.pakFiles.AtLeastOnePak())
            {
                if (forceReload)
                {
                    Dictionary <string, string> staticKeys = new Dictionary <string, string>();
                    if (!string.IsNullOrEmpty(Properties.Settings.Default.StaticAesKeys))
                    {
                        staticKeys = JsonConvert.DeserializeObject <Dictionary <string, string> >(Properties.Settings.Default.StaticAesKeys);
                    }

                    Dictionary <string, string> oldDynamicKeys = new Dictionary <string, string>();
                    if (!string.IsNullOrEmpty(Properties.Settings.Default.DynamicAesKeys))
                    {
                        oldDynamicKeys = JsonConvert.DeserializeObject <Dictionary <string, string> >(Properties.Settings.Default.DynamicAesKeys);
                    }

                    BenResponse benResponse = await AesData.GetData().ConfigureAwait(false);

                    if (benResponse != null)
                    {
                        if (forceReloadMain || !staticKeys.TryGetValue(Globals.Game.ToString(), out var _) && !string.IsNullOrEmpty(benResponse.MainKey))
                        {
                            string mainKey = $"0x{benResponse.MainKey.Substring(2).ToUpper()}";
                            DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[AES]", $"BenBot Main key is {mainKey}");
                            staticKeys[Globals.Game.ToString()]       = mainKey;
                            Properties.Settings.Default.StaticAesKeys = JsonConvert.SerializeObject(staticKeys, Formatting.None);
                        }

                        string dynamicKeys = JsonConvert.SerializeObject(benResponse.DynamicKeys, Formatting.None);
                        DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[AES]", $"BenBot Dynamic keys are {dynamicKeys}");
                        Properties.Settings.Default.DynamicAesKeys = dynamicKeys;
                        Properties.Settings.Default.Save();

                        Dictionary <string, string> difference = benResponse.DynamicKeys
                                                                 .Where(x => !oldDynamicKeys.ContainsKey(x.Key) || !oldDynamicKeys[x.Key].Equals(x.Value))
                                                                 .ToDictionary(x => x.Key, x => x.Value);
                        foreach (KeyValuePair <string, string> KvP in difference)
                        {
                            Globals.gNotifier.ShowCustomMessage(
                                Properties.Resources.PakFiles,
                                string.Format(
                                    Properties.Resources.PakCanBeOpened,
                                    KvP.Key.Substring(KvP.Key.IndexOf("Paks/") + "Paks/".Length)),
                                "/FModel;component/Resources/lock-open-variant.ico");
                            DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[AES]", $"{KvP.Key} with key {KvP.Value} can be opened");
                        }

                        return(true);
                    }
                }
            }
            return(false);
        }