public SCEEditor(X360IO IO) { InitializeComponent(); Header = new SCEHeader(); Header.Load(IO); lblHdrVersion.Text = string.Format("Header Version: 0x{0:X2}", Header.Version); lblFileType.Text = string.Format("File Type: 0x{0:X2} ({1})", Header.FileType, SCEHeader.FileTypes[Header.FileType]); lblFlags.Text = string.Format("Flags: 0x{0:X4}", Header.Flags); if (Header.IsContentEncrypted) { lblFlags.Text += " (ENCRYPTED)"; } else { lblFlags.Text += " (DECRYPTED)"; } lblHdrSize.Text = string.Format("Header Size: 0x{0:X2}", Header.HeaderSize); lblUnk1.Text = string.Format("Unknown 1: 0x{0:X2}", Header.Unknown1); lblUnk2.Text = string.Format("Unknown 2: 0x{0:X2}", Header.Unknown2); if (Header.FileType == 1 && !Header.IsContentEncrypted) { cmdUnfself.Enabled = true; } /*lblImgVersion.Text = string.Format("Image Version: {0:X2}", Package.ImageVersion); * lblFileCount.Text = string.Format("File Count: {0}", Package.FileCount); * lblHeaderSize.Text = string.Format("Header Size: {0:X2}", Package.HeaderSize); * lblDataSize.Text = string.Format("Data Size: {0:X2}", Package.DataSize); * txtHeaderHash.Text = Program.BytesToHexString(Package.HeaderHash); * txtPadding.Text = Program.BytesToHexString(Package.Padding);*/ tsmiExtractAll.Enabled = true; }
public void Save(X360IO io) { io.Stream.Position = Offset; io.Writer.Write(ID); io.Writer.Write(Value); io.Writer.WriteNullTerminatedAsciiString(Setting); }
public void Load(X360IO io) { IO = io; IO.Stream.Position = 0x0; Magic = IO.Reader.ReadUInt32(); Unknown1 = IO.Reader.ReadUInt32(); Unknown2 = IO.Reader.ReadUInt32(); Magic2 = IO.Reader.ReadUInt32(); if (Magic != 0xBCADADBC || Magic2 != 0xBCADADBC) { return; } IO.Stream.Position = 0x10; SettingEntries = new List <SettingEntry>(); DataEntries = new List <SettingDataEntry>(); while (true) { SettingEntry entry = new SettingEntry(); if (!entry.Load(IO)) { break; } SettingEntries.Add(entry); } IO.Stream.Position = 0xFFF0; DataMagic = IO.Reader.ReadUInt16(); if (DataMagic != 0x4D26) { return; } // data while (true) { SettingDataEntry entry = new SettingDataEntry(); entry.Load(IO); if (!(entry.Flags == 0xAABB && entry.FileNameOffset == 0xCCDD && entry.Checksum == 0xEE00)) { DataEntries.Add(entry); } else { break; } } foreach (SettingDataEntry entry in DataEntries) { if (entry.Flags != 0x7A) { SettingEntry ent = SettingEntries.Find(sec => sec.IsEntryOffset(entry.FileNameOffset + 0x10)); if (ent == null) { break; } ent.DataExists = true; entry.FileNameEntry = ent; } } }
public DataBaseEditor(X360IO IO) { InitializeComponent(); DataBase = new PackageDataBase(); DataBase.Load(IO); LoadEntries(); }
public void Load(X360IO io) { IO = io; IO.Stream.Position = 0x0; Magic = IO.Reader.ReadUInt32(); if (Magic != 0x53434500) { return; } Version = IO.Reader.ReadUInt32(); Flags = IO.Reader.ReadUInt16(); FileType = IO.Reader.ReadUInt16(); Unknown1 = IO.Reader.ReadUInt32(); HeaderSize = IO.Reader.ReadUInt64(); Unknown2 = IO.Reader.ReadUInt64(); switch (FileType) { case 1: MainHeader = new SCEELFHeader(this); break; case 3: MainHeader = new SCEPKGHeader(this); break; } if (MainHeader != null) { MainHeader.Load(); } }
public bool Load(X360IO io) { Offset = io.Stream.Position; ID = (EntryID)io.Reader.ReadUInt32(); Size = io.Reader.ReadUInt32(); Size2 = io.Reader.ReadUInt32(); Data = io.Reader.ReadBytes((int)Size); // BADBADBAD return(true); }
public RegistryEditor(X360IO IO) { InitializeComponent(); Registry = new PS3Registry(); Registry.Load(IO); lvwColumnSorter = new ListViewColumnSorter(); lvEntries.ListViewItemSorter = lvwColumnSorter; LoadEntries(); }
public bool Save(X360IO io) { Offset = io.Stream.Position; Size = (uint)Data.Length; Size2 = Size; io.Writer.Write((uint)ID); io.Writer.Write(Size); io.Writer.Write(Size2); io.Writer.Write(Data); return(true); }
public bool Load(X360IO io) { Offset = io.Stream.Position; ID = io.Reader.ReadUInt32(); Value = io.Reader.ReadByte(); if (Value == 0xEE) // 0xAABBCCDDEE { return(false); } Setting = io.Reader.ReadNullTerminatedAsciiString(); EndOffset = io.Stream.Position; return(true); }
public bool Load(X360IO io) { Offset = io.Stream.Position; Flags = io.Reader.ReadUInt16(); FileNameOffset = io.Reader.ReadUInt16(); Checksum = io.Reader.ReadUInt16(); Length = io.Reader.ReadUInt16(); Type = io.Reader.ReadByte(); Value = io.Reader.ReadBytes(Length); io.Stream.Position = Offset + 9 + Length; Terminator = io.Reader.ReadByte(); return(true); }
public void Load(X360IO io) { IO = io; IO.Stream.Position = 0x0; Magic = IO.Reader.ReadUInt32(); Entries = new List <DataBaseEntry>(); while (IO.Stream.Position < IO.Stream.Length) { DataBaseEntry entry = new DataBaseEntry(); entry.Load(IO); Entries.Add(entry); } }
public bool Save(X360IO io) { Offset = io.Stream.Position; Length = (ushort)Value.Length; if (FileNameEntry != null) { FileNameOffset = (ushort)(FileNameEntry.Offset - 0x10); } io.Writer.Write(Flags); io.Writer.Write(FileNameOffset); io.Writer.Write(Checksum); io.Writer.Write(Length); io.Writer.Write(Type); io.Writer.Write(Value); io.Stream.Position = Offset + 9 + Length; io.Writer.Write(Terminator); return(true); }
public PUPFile(X360IO IO) { InitializeComponent(); Package = new PlaystationUpdatePackage(); Package.Load(IO); lblPkgVersion.Text = string.Format("Update Package Version: 0x{0:X2}", Package.Version); lblImgVersion.Text = string.Format("Image Version: 0x{0:X2}", Package.ImageVersion); lblFileCount.Text = string.Format("File Count: {0}", Package.FileCount); lblHeaderSize.Text = string.Format("Header Size: 0x{0:X2}", Package.HeaderSize); lblDataSize.Text = string.Format("Data Size: 0x{0:X2}", Package.DataSize); txtHeaderHash.Text = Program.BytesToHexString(Package.HeaderHash); txtPadding.Text = Program.BytesToHexString(Package.Padding); PlaystationUpdatePackage.FileEntry versionentry = Package.Files.Find(sec => sec.ID == 0x100); if (versionentry != null) { byte[] data = Package.GetFileData(versionentry); string version = Encoding.ASCII.GetString(data); lblVersion.Text = "Version: " + version; } else { lblVersion.Text = "Version: N/A"; } foreach (PlaystationUpdatePackage.FileEntry entry in Package.Files) { ListViewItem item = new ListViewItem(entry.ID.ToString("X2")); string filename = (string)PlaystationUpdatePackage.FileNames[entry.ID]; if (String.IsNullOrEmpty(filename)) { filename = string.Format("file_{0:X2}.tar", entry.ID); } item.SubItems.Add(filename); item.SubItems.Add(entry.Size.ToString()); item.SubItems.Add(entry.Offset.ToString()); item.SubItems.Add(Program.BytesToHexString(entry.Hash.HMACSHA1)); item.Tag = entry; lvFiles.Items.Add(item); } tsmiExtractAll.Enabled = true; }
public void OpenFile(string fileName) { Text = ver + " - " + fileName; X360IO io = new X360IO(fileName, FileMode.Open, true); uint magic = io.Reader.ReadUInt32(); pnlContent.Controls.Clear(); switch (magic) { case 0x00000000: // PDB? DataBaseEditor editor = new DataBaseEditor(io); pnlContent.Controls.Add(editor); break; case 0x53434555: // PUP file PUPFile file = new PUPFile(io); // {AutoSize = true, BackColor = Color.Transparent}; pnlContent.Controls.Add(file); break; case 0x53434500: // SCE header SCEEditor form1 = new SCEEditor(io); // {AutoSize = true, BackColor = Color.Transparent}; pnlContent.Controls.Add(form1); break; case 0xBCADADBC: // registry file RegistryEditor form = new RegistryEditor(io); // { AutoSize = true, BackColor = Color.Transparent }; pnlContent.Controls.Add(form); break; default: // unknown MessageBox.Show("Unknown file!"); io.Close(); Text = ver; break; } }
public void Load(X360IO io) { IO = io; IO.Stream.Position = 0x0; Magic = IO.Reader.ReadInt64(); if (Magic != 0x5343455546000000) { return; } Version = IO.Reader.ReadInt64(); ImageVersion = IO.Reader.ReadInt64(); FileCount = IO.Reader.ReadInt64(); HeaderSize = IO.Reader.ReadInt64(); DataSize = IO.Reader.ReadInt64(); Files = new List <FileEntry>(); for (int i = 0; i < FileCount; i++) { FileEntry entry = new FileEntry { ID = IO.Reader.ReadInt64(), Offset = IO.Reader.ReadInt64(), Size = IO.Reader.ReadInt64(), Padding = IO.Reader.ReadInt64() }; Files.Add(entry); } Hashes = new List <HashEntry>(); for (int i = 0; i < FileCount; i++) { HashEntry entry = new HashEntry(); entry.FileID = IO.Reader.ReadInt64(); entry.HMACSHA1 = IO.Reader.ReadBytes(0x14); entry.Padding = IO.Reader.ReadInt32(); Hashes.Add(entry); Files[(int)entry.FileID].Hash = entry; } HeaderHash = IO.Reader.ReadBytes(0x14); Padding = IO.Reader.ReadBytes(0xC); }