private void BtnTargetSettings_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                Control c      = (Control)sender;
                Point   locate = new Point(c.Location.X + e.Location.X, ((Control)sender).Location.Y + e.Location.Y);

                ContextMenuStrip columnsMenu = new ContextMenuStrip();


                ((ToolStripMenuItem)columnsMenu.Items.Add("Big endian", null, new EventHandler((ob, ev) => {
                    FileWatch.currentFileInfo.bigEndian = !FileStub.FileWatch.currentFileInfo.bigEndian;

                    if (VanguardCore.vanguardConnected)
                    {
                        FileWatch.UpdateDomains();
                    }
                }))).Checked = FileWatch.currentFileInfo.bigEndian;

                ((ToolStripMenuItem)columnsMenu.Items.Add("Auto-Uncorrupt", null, new EventHandler((ob, ev) => {
                    FileWatch.currentFileInfo.autoUncorrupt = !FileWatch.currentFileInfo.autoUncorrupt;
                }))).Checked = FileWatch.currentFileInfo.autoUncorrupt;

                ((ToolStripMenuItem)columnsMenu.Items.Add("Use Caching + Multithreading", null, new EventHandler((ob, ev) => {
                    FileWatch.currentFileInfo.useCacheAndMultithread = !FileWatch.currentFileInfo.useCacheAndMultithread;
                }))).Checked = FileWatch.currentFileInfo.useCacheAndMultithread;

                columnsMenu.Show(this, locate);
            }
        }
        public void EnableTargetInterface()
        {
            var diff = lbTarget.Location.X - btnBrowseTarget.Location.X;

            originalLbTargetLocation = lbTarget.Location;
            lbTarget.Location        = btnBrowseTarget.Location;
            lbTarget.Visible         = true;

            btnTargetSettings.Visible = false;

            btnBrowseTarget.Visible = false;
            originalLbTargetSize    = lbTarget.Size;
            lbTarget.Size           = new Size(lbTarget.Size.Width + diff, lbTarget.Size.Height);
            btnUnloadTarget.Visible = true;
            cbTargetType.Enabled    = false;



            FileWatch.EnableInterface();

            lbExecution.Visible         = true;
            cbSelectedExecution.Visible = true;

            lbTargetStatus.Text = FileWatch.currentFileInfo.selectedTargetType.ToString() + " target loaded";
        }
Пример #3
0
        private void StubForm_Load(object sender, EventArgs e)
        {
            ShrinkStubForm();

            cbSelectedExecution.SelectedIndex = 0;
            cbTargetType.SelectedIndex        = 0;

            btnUnloadTarget.Location = btnLoadTargets.Location;
            btnUnloadTarget.Size     = btnLoadTargets.Size;

            //uh oh magic numbers
            //this will break if the combobox font isnt Segoe UI, 12pt
            int magicWidth  = cbTargetType.Size.Width - (411 - 387);
            int magicHeight = cbTargetType.Size.Width - (36 - 29);
            int magicX      = cbTargetType.Location.X - (14 - 11);
            int magicY      = cbTargetType.Location.Y - (14 - 11);

            lbTargetTypeDisplay.Font = cbTargetType.Font;
            //lbTargetTypeDisplay.Size = new Size(magicX, magicY);
            //lbTargetTypeDisplay.Location = new Point(magicWidth, magicHeight);
            lbTargetTypeDisplay.Visible = true;
            //---------------------------------------------------------------

            Colors.SetRTCColor(ProgramColor, this);

            FileWatch.Start();
        }
Пример #4
0
        public void btnLoadTargets_Click(object sender, EventArgs e)
        {
            FileTarget[] overrideTargets = null;
            if (selectedTemplate != null)
            {
                lbTargets.Items.Clear();
                overrideTargets = selectedTemplate.GetTargets();
                //if (targets != null)
                //    lbTargets.Items.AddRange(targets);

                //overrideTargets.
            }

            if (overrideTargets == null)
            {
                MessageBox.Show("Error loading target");
            }

            if (!FileWatch.LoadTargets(overrideTargets))
            {
                return;
            }

            if (!VanguardCore.vanguardConnected)
            {
                VanguardCore.Start();
            }

            EnableTargetInterface();
        }
 private void StubForm_FormClosing(object sender, FormClosingEventArgs e)
 {
     if (!FileWatch.CloseTarget(false))
     {
         e.Cancel = true;
     }
 }
Пример #6
0
        private void BtnLoadTarget_Click(object sender, EventArgs e)
        {
            //only use backups for uncorrupt, reset on every reload
            foreach (string file in Directory.GetFiles(Path.Combine(FileWatch.currentDir, "FILEBACKUPS")))
            {
                try
                {
                    File.Delete(file);
                }
                catch
                {
                    MessageBox.Show($"Could not delete file {file}");
                }
            }



            if (!FileWatch.LoadTarget())
            {
                return;
            }

            if (!VanguardCore.vanguardConnected)
            {
                VanguardCore.Start();
            }

            EnableTargetInterface();
        }
Пример #7
0
        private void StubForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            FileWatch.CloseActiveTargets(false, false);

            int nbDirtyFiles = Vault.GetDirtyTargets().Count;

            if (nbDirtyFiles > 0)
            {
                var answer = MessageBox.Show($"There are still {nbDirtyFiles} dirty files, would you like to restore them?", "Warning: Quitting FileStub with Dirty Files", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);

                switch (answer)
                {
                case DialogResult.Cancel:
                    e.Cancel = true;
                    return;

                case DialogResult.Yes:
                    FileWatch.RestoreDirty();
                    return;

                case DialogResult.No:
                default:
                    return;
                }
            }
        }
Пример #8
0
 public void BtnUnloadTarget_Click(object sender, EventArgs e)
 {
     if (!FileWatch.CloseTarget())
     {
         return;
     }
     DisableTargetInterface();
 }
Пример #9
0
 private void BtnUnloadTarget_Click(object sender, EventArgs e)
 {
     if (!FileWatch.CloseActiveTargets(restoreTarget: false))
     {
         return;
     }
     DisableTargetInterface();
 }
Пример #10
0
 private void BtnReleaseTarget_Click(object sender, EventArgs e)
 {
     if (!FileWatch.CloseTarget())
     {
         return;
     }
     DisableTargetInterface();
 }
Пример #11
0
        private void StubForm_Load(object sender, EventArgs e)
        {
            cbSelectedExecution.SelectedIndex = 0;
            cbTargetType.SelectedIndex        = 0;

            UICore.SetRTCColor(Color.Lavender, this);

            FileWatch.Start();
        }
Пример #12
0
 private void BtnBrowseTarget_Click(object sender, EventArgs e)
 {
     if (selectedTemplate != null)
     {
         selectedTemplate.BrowseFiles();
     }
     else
     {
         FileWatch.InsertTargets();
     }
 }
Пример #13
0
        public void EnableTargetInterface()
        {
            btnLoadTargets.Visible = false;

            btnUnloadTarget.Visible = true;
            cbTargetType.Visible    = false;

            FileWatch.EnableInterface();

            lbExecution.Visible = true;

            lbTargetStatus.Text = FileWatch.currentSession.selectedTargetType.ToString() + " target loaded";
        }
Пример #14
0
        private void BtnBrowseTarget_Click(object sender, EventArgs e)
        {
            if (!FileWatch.LoadTarget())
            {
                return;
            }

            if (!VanguardCore.vanguardConnected)
            {
                VanguardCore.Start();
            }

            EnableTargetInterface();
        }
        private void btnSendList_Click(object sender, EventArgs e)
        {
            if (lbMultipleFiles.Items.Count == 0)
            {
                MessageBox.Show("No files are selected");
                return;
            }

            FileWatch.CloseTarget(false);

            List <string> allFiles = new List <string>();

            for (int i = 0; i < lbMultipleFiles.Items.Count; i++)
            {
                allFiles.Add(lbMultipleFiles.Items[i].ToString());
            }

            allFiles.Sort();

            string multipleFiles = "";

            for (int i = 0; i < allFiles.Count; i++)
            {
                multipleFiles += allFiles[i];

                if (i < allFiles.Count - 1)
                {
                    multipleFiles += "|";
                }
            }

            var mfi = new MultipleFileInterface(multipleFiles, FileWatch.currentFileInfo.bigEndian, FileWatch.currentFileInfo.useAutomaticBackups);

            if (FileWatch.currentFileInfo.useCacheAndMultithread)
            {
                mfi.getMemoryDump();
            }

            FileWatch.currentFileInfo.targetInterface = mfi;

            if (VanguardCore.vanguardConnected)
            {
                FileWatch.UpdateDomains();
            }

            this.DialogResult = DialogResult.OK;
            this.Close();
        }
Пример #16
0
        internal static bool CloseActiveTargets(bool updateDomains = true, bool restoreTarget = true)
        {
            if (FileWatch.currentSession.fileInterface != null)
            {
                if (restoreTarget)
                {
                    FileWatch.RestoreTarget();
                }

                FileWatch.currentSession.fileInterface?.CloseStream();
                FileWatch.currentSession.fileInterface = null;
            }

            if (updateDomains && VanguardCore.vanguardConnected)
            {
                UpdateDomains();
            }
            return(true);
        }
        internal static bool CloseTarget(bool updateDomains = true)
        {
            if (FileWatch.currentFileInfo.targetInterface != null)
            {
                if (!FileWatch.RestoreTarget())
                {
                    MessageBox.Show("Unable to restore the backup. Aborting!");
                    return(false);
                }
                FileWatch.currentFileInfo.targetInterface.CloseStream();
                FileWatch.currentFileInfo.targetInterface = null;
            }

            if (updateDomains)
            {
                UpdateDomains();
            }
            return(true);
        }
Пример #18
0
        private void BtnClearAllBackups_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Are you sure you want to reset the vault?\n This will delete any remaining artifacts.", "WARNING", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            if (btnUnloadTarget.Visible)
            {
                BtnUnloadTarget_Click(sender, e);
            }

            FileWatch.CloseActiveTargets();

            Vault.ResetVault();

            lbTargets.Items.Clear();

            MessageBox.Show("The vault was reset.");
        }
Пример #19
0
        internal static bool LoadTargets(FileTarget[] provided = null)
        {
            FileTarget[] targets;
            string       requestedFileType = currentSession.selectedTargetType;

            if (provided == null)
            {
                var lbTargets = S.GET <StubForm>().lbTargets;
                if (lbTargets.Items.Count == 0)
                {
                    MessageBox.Show("No targets scheduled for loading. Aborting loading.");
                    return(false);
                }

                targets = lbTargets.Items.Cast <FileTarget>().ToArray();
            }
            else
            {
                targets = provided;
            }

            if (requestedFileType == TargetType.SINGLE_FILE)
            {
                FileInterface.identity = FileInterfaceIdentity.SELF_DESCRIBE;

                var    target   = targets[0];
                string filename = targets[0].ToString();

                target.BigEndian = FileWatch.currentSession.bigEndian;

                CloseActiveTargets(false);

                FileInterface fi = null;

                Action <object, EventArgs> action = (ob, ea) =>
                {
                    fi = new FileInterface(target);

                    if (FileWatch.currentSession.useCacheAndMultithread)
                    {
                        fi.getMemoryDump();
                    }
                };

                Action <object, EventArgs> postAction = (ob, ea) =>
                {
                    if (fi == null || fi.lastMemorySize == null)
                    {
                        MessageBox.Show("Failed to load target");
                        S.GET <StubForm>().DisableTargetInterface();
                        return;
                    }

                    FileWatch.currentSession.targetShortName = fi.ShortFilename;
                    FileWatch.currentSession.targetFullName  = fi.Filename;

                    FileWatch.currentSession.fileInterface = fi;
                    S.GET <StubForm>().lbTarget.Text       = fi.GetType().ToString() + "|MemorySize:" + fi.lastMemorySize.ToString();

                    if (VanguardCore.vanguardConnected)
                    {
                        UpdateDomains();
                    }

                    //Refresh the UI
                    //RefreshUIPostLoad();
                };

                S.GET <StubForm>().RunProgressBar($"Loading target...", 0, action, postAction);
            }
            else //MULTIPLE_FILE
            {
                switch (currentSession.selectedTargetType)
                {
                case TargetType.MULTIPLE_FILE_SINGLEDOMAIN:
                    FileInterface.identity = FileInterfaceIdentity.SELF_DESCRIBE;
                    break;

                case TargetType.MULTIPLE_FILE_MULTIDOMAIN:
                default:
                    FileInterface.identity = FileInterfaceIdentity.HASHED_PREFIX;
                    break;

                case TargetType.MULTIPLE_FILE_MULTIDOMAIN_FULLPATH:
                    FileInterface.identity = FileInterfaceIdentity.FULL_PATH;
                    break;
                }


                foreach (var target in targets)
                {
                    target.BigEndian = FileWatch.currentSession.bigEndian;
                }

                var mfi = new MultipleFileInterface(targets, FileWatch.currentSession.bigEndian, FileWatch.currentSession.useAutomaticBackups);

                if (FileWatch.currentSession.useCacheAndMultithread)
                {
                    mfi.getMemoryDump();
                }

                FileWatch.currentSession.fileInterface = mfi;

                if (VanguardCore.vanguardConnected)
                {
                    FileWatch.UpdateDomains();
                }

                S.GET <StubForm>().lbTarget.Text    = mfi.ShortFilename + "|MemorySize:" + mfi.lastMemorySize.ToString();
                StockpileManagerEmuSide.UnCorruptBL = null;
            }

            return(true);
        }
Пример #20
0
 private void btnRestoreDirty_Click(object sender, EventArgs e)
 {
     FileWatch.RestoreDirty();
 }
Пример #21
0
 private void btnBakeAllDirty_Click(object sender, EventArgs e)
 {
     FileWatch.BakeDirty();
 }
Пример #22
0
 private void BtnKillProcess_Click(object sender, EventArgs e)
 {
     FileWatch.KillProcess();
 }