public void writeXCIToTextbox() { header = XCIManager.GetXCIHeader(selectXCIDialog.FileName); gcInfo = XCIManager.DecryptGamecardInfo(header); rtbGameInfo.Text += "[" + selectXCIDialog.SafeFileName + "]\n"; rtbGameInfo.Text += "Header: " + header.ToString() + "\n"; rtbGameInfo.Text += "Game Card Info: " + gcInfo.ToString() + "\n"; }
// Methods internal static gamecard_info DecryptGamecardInfo(xci_header header) { // REVERSE THA IV byte[] iv_flipped = new byte[XCIManager.XCI_IV_SIZE]; Array.Copy(header.GamecardIV, iv_flipped, XCIManager.XCI_IV_SIZE); Array.Reverse(iv_flipped); // GameCardInfo Decrypt var decrypt = mainForm.AES128CBC.CreateDecryptor(XCIManager.XCI_GAMECARDINFO_KEY, iv_flipped); var gcInfoStream = new MemoryStream(header.GamecardInfo); var gcCryptoStream = new CryptoStream(gcInfoStream, decrypt, CryptoStreamMode.Read); // Create the struct XCIManager.gamecard_info gamecardInfoStruct = Utils.FromStream <XCIManager.gamecard_info>(gcCryptoStream); // Clean stuff up gcInfoStream.Close(); gcCryptoStream.Close(); decrypt.Dispose(); return(gamecardInfoStruct); }