private static void CheckSmc(string file) { try { Console.WriteLine("Checking {0}:", file); var smc = NAND.GetSmc(new NANDReader(file, true), true); if (Smc.GetType(ref smc) != Smc.SmcTypes.Retail) { return; } var ver = Smc.GetVersion(ref smc); Console.WriteLine("SMC Is clean... version: {0}", ver); if (!File.Exists(ver + ".bin")) { Console.WriteLine("Saving it!"); File.WriteAllBytes(ver + ".bin", smc); } } catch { } }
private void GetsmcbtnClick(object sender, EventArgs e) { _sw = Stopwatch.StartNew(); var ofd = new OpenFileDialog(); if (ofd.ShowDialog() != DialogResult.OK) { return; } var bw = new BackgroundWorker(); bw.DoWork += (o, args) => { try { using (var reader = new NANDReader(ofd.FileName)) { AddOutput("Grabbing SMC from NAND: "); var data = _x360NAND.GetSmc(reader, true); var smc = new Smc(); var type = smc.GetType(ref data); AddOutput("\r\nSMC Version: {0} [{1}]", smc.GetVersion(ref data), smc.GetMotherBoardFromVersion(ref data)); AddOutput("\r\nSMC Type: {0}", type); if (type == Smc.SmcTypes.Jtag || type == Smc.SmcTypes.RJtag) { Smc.JtagsmcPatches.AnalyseSmc(ref data); } AddOutput("\r\nSMC Glitch Patched: {0}", smc.CheckGlitchPatch(ref data) ? "Yes" : "No"); } } catch (X360UtilsException ex) { AddOutput("FAILED!"); AddException(ex.ToString()); } AddOutput(Environment.NewLine); AddDone(); }; bw.RunWorkerCompleted += BwCompleted; bw.RunWorkerAsync(); }