Пример #1
0
        private void driveOpenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DriveSelector dl = new DriveSelector();

            dl.ShowDialog();
            if (dl.ok && dl.comboBox1.SelectedIndex != -1)
            {
                DriveLetter = dl.comboBox1.Items[dl.comboBox1.SelectedIndex].ToString()[0];
                if (device != null)
                {
                    device.Close();
                }
                device = new PhisonDevice(DriveLetter, rtb2);
                device.Open();
                tabControl1.Enabled            = true;
                toolsToolStripMenuItem.Enabled = true;
            }
        }
Пример #2
0
        private void dumpMemoryAreaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveFileDialog d = new SaveFileDialog();

            d.Filter = "*.bin|*.bin";
            if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                DriveSelector ds = new DriveSelector();
                ds.ShowDialog();
                if (ds.ok && ds.comboBox1.SelectedIndex != -1)
                {
                    char   letter = ds.comboBox1.Items[ds.comboBox1.SelectedIndex].ToString()[0];
                    string input  = Microsoft.VisualBasic.Interaction.InputBox("Enter region start and size in hex, like XXXX:YYYY", "", "0000:1000");
                    if (input != "" && input.Split(':').Length == 2)
                    {
                        string[] parts = input.Split(':');
                        int      start = Convert.ToInt32(parts[0].Trim(), 16);
                        int      size  = Convert.ToInt32(parts[1].Trim(), 16);
                        if (device != null)
                        {
                            device.Close();
                        }
                        int leaksize = 0x74;
                        int count    = size / leaksize;
                        if (count * leaksize < size)
                        {
                            count++;
                        }
                        int          addr    = start;
                        string       path    = Path.GetDirectoryName(Application.ExecutablePath);
                        byte[]       payload = File.ReadAllBytes(path + "\\img\\exploit\\exploit_dump_68.BIN");
                        MemoryStream m       = new MemoryStream();
                        for (int i = 0; i < count; i++)
                        {
                            MessageBox.Show("Copy transfer " + (i + 1) + " / " + count + " @0x" + addr.ToString("X4") + " : Please unplug and replug usb stick!");
                            device = new PhisonDevice(letter, rtb2);
                            device.Open();
                            if (device.GetRunMode() != PhisonDevice.RunMode.BootMode)
                            {
                                MessageBox.Show("Device is not in boot mode!");
                                break;
                            }
                            payload[0x35a4] = (byte)(addr >> 8);          //0x18 bytes
                            payload[0x35a6] = (byte)(addr & 0xFF);
                            payload[0x35ad] = (byte)((addr + 0x18) >> 8); //0x40 bytes
                            payload[0x35af] = (byte)((addr + 0x18) & 0xFF);
                            payload[0x35bd] = (byte)((addr + 0x58) >> 8); //0x10 bytes
                            payload[0x35bf] = (byte)((addr + 0x58) & 0xFF);
                            payload[0x35c8] = (byte)((addr + 0x68) >> 8); //0x8 bytes
                            payload[0x35ca] = (byte)((addr + 0x68) & 0xFF);
                            payload[0x35d3] = (byte)((addr + 0x70) >> 8); //0x4 bytes
                            payload[0x35d5] = (byte)((addr + 0x70) & 0xFF);
                            device.TransferFile(payload, pb1);
                            device.JumpToPRAM();
                            byte[] buff = device.RequestInfo(new byte[] { 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, 528);
                            m.Write(buff, 0x36, 0x18);
                            m.Write(buff, 0x50, 0x40);
                            m.Write(buff, 0x9C, 0x10);
                            m.Write(buff, 0xB0, 0x8);
                            m.Write(buff, 0xB8, 0x4);
                            device.Close();
                            addr += leaksize;
                        }
                        File.WriteAllBytes(d.FileName, m.ToArray());
                        MessageBox.Show("Done.");
                    }
                }
            }
        }