Esempio n. 1
0
        private void btnSavePreset_Click(object sender, EventArgs e)
        {
            OffsetFinderTemplate preset = getPresetForCurrentValues();

            if (preset != null)
            {
                SavePresetForm saveForm = new SavePresetForm(preset);
                saveForm.Show();
            }
        }
Esempio n. 2
0
        private void loadSelectedItem()
        {
            OffsetFinderTemplate preset = (OffsetFinderTemplate)this.comboPresets.SelectedItem;

            if (preset != null)
            {
                this.resetCriteriaSection();
                this.resetCutSection();
                this.loadOffsetFinderPreset(preset);

                if (!String.IsNullOrEmpty(preset.NotesOrWarnings))
                {
                    MessageBox.Show(preset.NotesOrWarnings, "Notes/Warnings");
                }
            }
        }
Esempio n. 3
0
        private OffsetFinderTemplate getPresetFromFile(string filePath)
        {
            OffsetFinderTemplate preset = null;

            preset = new OffsetFinderTemplate();
            XmlSerializer serializer = new XmlSerializer(preset.GetType());

            using (FileStream xmlFs = File.OpenRead(filePath))
            {
                using (XmlTextReader textReader = new XmlTextReader(xmlFs))
                {
                    preset = (OffsetFinderTemplate)serializer.Deserialize(textReader);
                }
            }

            return(preset);
        }
Esempio n. 4
0
        private void loadOffsetPlugins()
        {
            comboPresets.Items.Clear();

            foreach (string f in Directory.GetFiles(PLUGIN_PATH, "*.xml", SearchOption.TopDirectoryOnly))
            {
                try
                {
                    OffsetFinderTemplate preset = getPresetFromFile(f);

                    if ((preset != null) && (!String.IsNullOrEmpty(preset.Header.FormatName)))
                    {
                        comboPresets.Items.Add(preset);
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show(String.Format("Error loading preset file <{0}>", Path.GetFileName(f)), "Error");
                }
            }

            comboPresets.Sorted = true;
        }
Esempio n. 5
0
        private OffsetFinderTemplate getPresetForCurrentValues()
        {
            OffsetFinderTemplate preset = new OffsetFinderTemplate();

            // Criteria Section
            preset.SearchParameters.SearchString           = this.tbSearchString.Text;
            preset.SearchParameters.TreatSearchStringAsHex = this.cbSearchAsHex.Checked;
            preset.SearchParameters.StartingOffset         = this.tbStartingOffset.Text;

            if (this.cbModOffsetSearchString.Checked)
            {
                preset.SearchParameters.UseModOffsetForSearchStringSpecified = true;
                preset.SearchParameters.UseModOffsetForSearchString          = true;

                preset.SearchParameters.ModOffsetForSearchStringDivisor = this.tbOffsetModuloSearchStringDivisor.Text;
                preset.SearchParameters.ModOffsetForSearchStringResult  = this.tbOffsetModuloSearchStringResult.Text;
            }
            else
            {
                preset.SearchParameters.UseModOffsetForSearchStringSpecified = true;
                preset.SearchParameters.UseModOffsetForSearchString          = false;
            }

            // Cut Options Section
            preset.SearchParameters.SearchStringOffset    = this.tbSearchStringOffset.Text;
            preset.SearchParameters.OutputFileExtension   = this.tbOutputExtension.Text;
            preset.SearchParameters.MinimumSizeForCutting = this.tbMinSizeForCut.Text;

            // Cut Size Section
            if (this.rbStaticCutSize.Checked)
            {
                preset.SearchParameters.CutParameters.CutStyle      = CutStyle.@static;
                preset.SearchParameters.CutParameters.StaticCutSize = this.tbStaticCutsize.Text;
            }
            else if (this.rbOffsetBasedCutSize.Checked)
            {
                preset.SearchParameters.CutParameters.CutStyle          = CutStyle.offset;
                preset.SearchParameters.CutParameters.CutSizeAtOffset   = this.tbCutSizeOffset.Text;
                preset.SearchParameters.CutParameters.CutSizeOffsetSize = this.cbOffsetSize.SelectedItem.ToString();

                if (this.cbByteOrder.SelectedItem.Equals("Little Endian"))
                {
                    preset.SearchParameters.CutParameters.CutSizeOffsetEndianessSpecified = true;
                    preset.SearchParameters.CutParameters.CutSizeOffsetEndianess          = Endianness.little;
                }
                else if (this.cbByteOrder.SelectedItem.Equals("Big Endian"))
                {
                    preset.SearchParameters.CutParameters.CutSizeOffsetEndianessSpecified = true;
                    preset.SearchParameters.CutParameters.CutSizeOffsetEndianess          = Endianness.big;
                }

                if (!String.IsNullOrEmpty(this.tbLengthMultiplier.Text))
                {
                    preset.SearchParameters.CutParameters.CutSizeMultiplier = this.tbLengthMultiplier.Text;
                }
            }
            else if (this.rbUseTerminator.Checked)
            {
                preset.SearchParameters.CutParameters.CutStyle         = CutStyle.terminator;
                preset.SearchParameters.CutParameters.TerminatorString = this.tbTerminatorString.Text;
                preset.SearchParameters.CutParameters.TreatTerminatorStringAsHexSpecified = this.cbTreatTerminatorAsHex.Checked;
                preset.SearchParameters.CutParameters.TreatTerminatorStringAsHex          = this.cbTreatTerminatorAsHex.Checked;
                preset.SearchParameters.CutParameters.IncludeTerminatorInSizeSpecified    = true;
                preset.SearchParameters.CutParameters.IncludeTerminatorInSize             = this.cbIncludeTerminatorInLength.Checked;

                if (this.cbModOffsetTerminator.Checked)
                {
                    preset.SearchParameters.CutParameters.UseModOffsetForTerminatorStringSpecified = true;
                    preset.SearchParameters.CutParameters.UseModOffsetForTerminatorString          = true;

                    preset.SearchParameters.CutParameters.ModOffsetForTerminatorStringDivisor = this.tbOffsetModuloTerminatorDivisor.Text;
                    preset.SearchParameters.CutParameters.ModOffsetForTerminatorStringResult  = this.tbOffsetModuloTerminatorResult.Text;
                }
            }

            preset.SearchParameters.AddExtraBytes    = this.cbAddExtraBytes.Checked;
            preset.SearchParameters.AddExtraByteSize = this.tbExtraCutSizeBytes.Text;

            return(preset);
        }
Esempio n. 6
0
        private void loadOffsetFinderPreset(OffsetFinderTemplate presets)
        {
            this.cbDoCut.Checked = true;

            // Criteria Section
            this.tbSearchString.Text   = presets.SearchParameters.SearchString;
            this.cbSearchAsHex.Checked = presets.SearchParameters.TreatSearchStringAsHex;
            this.tbStartingOffset.Text = presets.SearchParameters.StartingOffset;

            if (presets.SearchParameters.UseModOffsetForSearchStringSpecified &&
                presets.SearchParameters.UseModOffsetForSearchString)
            {
                this.cbModOffsetSearchString.Checked        = true;
                this.tbOffsetModuloSearchStringDivisor.Text = presets.SearchParameters.ModOffsetForSearchStringDivisor;
                this.tbOffsetModuloSearchStringResult.Text  = presets.SearchParameters.ModOffsetForSearchStringResult;
            }

            // Cut Options
            this.tbSearchStringOffset.Text = presets.SearchParameters.SearchStringOffset;
            this.tbOutputExtension.Text    = presets.SearchParameters.OutputFileExtension;
            this.tbMinSizeForCut.Text      = presets.SearchParameters.MinimumSizeForCutting;

            // Cut Size Options
            switch (presets.SearchParameters.CutParameters.CutStyle)
            {
            case CutStyle.@static:
                this.rbStaticCutSize.Checked = true;
                this.tbStaticCutsize.Text    = presets.SearchParameters.CutParameters.StaticCutSize;
                break;

            case CutStyle.offset:
                this.rbOffsetBasedCutSize.Checked = true;
                this.tbCutSizeOffset.Text         = presets.SearchParameters.CutParameters.CutSizeAtOffset;
                this.cbOffsetSize.SelectedItem    = presets.SearchParameters.CutParameters.CutSizeOffsetSize;
                switch (presets.SearchParameters.CutParameters.CutSizeOffsetEndianess)
                {
                case Endianness.big:
                    this.cbByteOrder.SelectedItem = "Big Endian";
                    break;

                case Endianness.little:
                    this.cbByteOrder.SelectedItem = "Little Endian";
                    break;
                }

                if (!String.IsNullOrEmpty(presets.SearchParameters.CutParameters.CutSizeMultiplier))
                {
                    this.cbUseLengthMultiplier.Checked = true;
                    this.tbLengthMultiplier.Text       = presets.SearchParameters.CutParameters.CutSizeMultiplier;
                }

                break;

            case CutStyle.terminator:
                this.rbUseTerminator.Checked             = true;
                this.tbTerminatorString.Text             = presets.SearchParameters.CutParameters.TerminatorString;
                this.cbTreatTerminatorAsHex.Checked      = presets.SearchParameters.CutParameters.TreatTerminatorStringAsHex;
                this.cbIncludeTerminatorInLength.Checked = presets.SearchParameters.CutParameters.IncludeTerminatorInSize;
                break;
            }

            if (presets.SearchParameters.CutParameters.UseModOffsetForTerminatorStringSpecified &&
                presets.SearchParameters.CutParameters.UseModOffsetForTerminatorString)
            {
                this.cbModOffsetTerminator.Checked        = true;
                this.tbOffsetModuloTerminatorDivisor.Text = presets.SearchParameters.CutParameters.ModOffsetForTerminatorStringDivisor;
                this.tbOffsetModuloTerminatorResult.Text  = presets.SearchParameters.CutParameters.ModOffsetForTerminatorStringResult;
            }

            this.cbAddExtraBytes.Checked  = presets.SearchParameters.AddExtraBytes;
            this.tbExtraCutSizeBytes.Text = presets.SearchParameters.AddExtraByteSize;
        }