public static int Unpack(byte[] data, string Destination) { if (Directory.Exists(Destination)) return 1; else { ImgReader iReader; try { iReader = new ImgReader(data); } catch { return -1; } Directory.CreateDirectory(Destination); ImgUnpacker.UnpackSections(iReader, Destination); } return 0; }
public static void UnpackSections(ImgReader Reader, string Destination) { Console.WriteLine("UNPACKING SECTIONS:"); Console.WriteLine(); Console.Write("Saving old image header..."); File.WriteAllBytes(Path.Combine(Destination, "image.hdr"), Reader.cHdr.ToBytes()); ConsoleEx.WriteLine(ConsoleColor.Green, " OK."); Console.Write("Unpacking Kernel..."); WriteSection(Reader.GetKernelBytes(), Path.Combine(Destination, "zImage")); Console.Write("Unpacking Ramdisk..."); WriteSection(Reader.GetRamdiskBytes(), Path.Combine(Destination, "ram_disk.gz")); Console.Write("Unpacking Second Stage..."); WriteSection(Reader.GetSecStateBytes(), Path.Combine(Destination, "second.bin")); ConsoleEx.Write(ConsoleColor.Green, "Done!"); }
protected override void DoRead(TSynchronicity aSynchronicity) { ImgReader reader = new ImgReader(this, Provider.Tracer); reader.Read(aSynchronicity); }