Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Text;
- using System.Security.Cryptography;
- using System.Text.RegularExpressions;
- //{"objective":{"objectiveID":"EquipRandomWeapon","requirements":[{"requirementID":"r1","satisfied":false,"currentEquippedDwellers":0,"targetWeaponIDs":["MissileLauncher","MissileLauncher_Rusty","MissileLauncher_Enhanced","MissileLauncher_Hardened","MissileLauncher_Guided","MissileLauncher_MissLauncher"]}],"completed":false,"incrementLevel":1},"incLevel":6,"lottery":[false,true,true,true,true]}]}
- public static class FalloutShelterDecrypt
- {
- private const string initVector = "tu89geji340t89u2";
- private const string passPhrase = "UGxheWVy";
- private const int keysize = 256;
- private const string m_strObjetive_EquipMissileLauncher_NotComplete = "\"targetWeaponIDs\":[\"MissileLauncher\",\"MissileLauncher_Rusty\",\"MissileLauncher_Enhanced\",\"MissileLauncher_Hardened\",\"MissileLauncher_Guided\",\"MissileLauncher_MissLauncher\"]}],\"completed\":false,";
- private const string m_strObjetive_EquipMissileLauncher____Replaced = "\"targetWeaponIDs\":[\"Shotgun\"]}],\"completed\":true,";
- public static bool IsBase64String(this string s)
- {
- s = s.Trim();
- return (s.Length % 4 == 0) && Regex.IsMatch(s, @"^[a-zA-Z0-9\+/]*={0,3}$", RegexOptions.None);
- }
- public static bool IsObjectiveBug_EquipMissileLauncher(String strText)
- {
- return (strText.IndexOf(m_strObjetive_EquipMissileLauncher_NotComplete) != -1);
- }
- public static string Encrypt(string Text)
- {
- byte[] initVectorBytes = Encoding.UTF8.GetBytes(initVector);
- byte[] plainTextBytes = Encoding.UTF8.GetBytes(Text);
- Rfc2898DeriveBytes password = new Rfc2898DeriveBytes(passPhrase, initVectorBytes);
- byte[] keyBytes = password.GetBytes(keysize / 8);
- RijndaelManaged symmetricKey = new RijndaelManaged();
- symmetricKey.Mode = CipherMode.CBC;
- ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initVectorBytes);
- MemoryStream memoryStream = new MemoryStream();
- CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write);
- cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
- cryptoStream.FlushFinalBlock();
- byte[] Encrypted = memoryStream.ToArray();
- memoryStream.Close();
- cryptoStream.Close();
- return Convert.ToBase64String(Encrypted);
- }
- public static string Decrypt(string EncryptedText)
- {
- byte[] initVectorBytes = Encoding.ASCII.GetBytes(initVector);
- byte[] DeEncryptedText = Convert.FromBase64String(EncryptedText);
- Rfc2898DeriveBytes password = new Rfc2898DeriveBytes(passPhrase, initVectorBytes);
- byte[] keyBytes = password.GetBytes(keysize / 8);
- RijndaelManaged symmetricKey = new RijndaelManaged();
- symmetricKey.Mode = CipherMode.CBC;
- ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes);
- MemoryStream memoryStream = new MemoryStream(DeEncryptedText);
- CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read);
- byte[] plainTextBytes = new byte[DeEncryptedText.Length];
- int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
- memoryStream.Close();
- cryptoStream.Close();
- return Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount);
- }
- static void Main(string[] args)
- {
- if (args.Length < 1)
- {
- Console.WriteLine("Usage: FOSFixObjectives.exe input_file (or drag the save file onto this file)");
- Console.Read();
- return; //nothing to do.
- }
- String data = File.ReadAllText(args[0]);
- if (IsBase64String(data))
- {
- String decryptedData = Decrypt(data);
- int nQuestsCompleted = 0;
- while (IsObjectiveBug_EquipMissileLauncher(decryptedData))
- {
- decryptedData = decryptedData.Replace(m_strObjetive_EquipMissileLauncher_NotComplete, m_strObjetive_EquipMissileLauncher____Replaced);
- nQuestsCompleted++;
- }
- if (nQuestsCompleted > 0)
- {
- File.WriteAllText(args[0], Encrypt(decryptedData));
- Console.WriteLine("{0:D} Equip Missile Launcher Objective(s) Replaced.", nQuestsCompleted);
- Console.Read();
- return; //done.
- }
- else
- {
- Console.WriteLine("No \"Equip Missile Launcher Objective\" found to fix! If Objectives Still does not work, please submit your save file for investigation!");
- Console.Read();
- return; //done
- }
- }
- else
- {
- Console.WriteLine("not a valid Fallout Shelter Save File");
- Console.Read();
- return; //done
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment