public OSFilterAttribute(FilterActions action, PlatformID osType, FilterRules rule, string osVersion)
 {
     Action = action;
     OSType = osType;
     Rule = rule;
     Version = osVersion;
 }
 public FilterDefinition(FilterKinds kind, FilterTypes type, FilterActions action, string param)
 {
     Id = Guid.NewGuid();
     Kind = kind;
     Type = type;
     Action = action;
     Parameter = param;
 }
 private Filter(string name, FilterActions operation, IList<FilterValue> values)
 {
     Name = name;
     Operation = operation;
     this.values = values;
 }
 private Filter(string name, FilterActions operation)
     : this(name, operation, new List<FilterValue>())
 {
 }
 private GroupFilter(FilterActions groupAction, params IFilter[] filters) {
     this.groupAction = groupAction;
     this.filters = filters;
 }
示例#6
0
 /// <summary>
 /// 构造体
 /// </summary>
 /// <param name="logger"></param>
 public ResourceFilter(ILogger <ResourceFilter> logger) : base(logger)
 {
     FilterActions.Add(Process);
 }
示例#7
0
 /// <summary>
 /// 构造体
 /// </summary>
 /// <param name="logger"></param>
 public ExceptionFilter(ILogger <ExceptionFilter> logger) : base(logger)
 {
     FilterActions.Add(Process);
 }
 private GroupFilter(FilterActions groupAction, params IFilter[] filters)
 {
     this.groupAction = groupAction;
     this.filters     = filters;
 }
 private Filter(string name, FilterActions operation, IList <FilterValue> values)
 {
     Name        = name;
     Operation   = operation;
     this.values = values;
 }
 private Filter(string name, FilterActions operation) : this(name, operation, new List <FilterValue>())
 {
 }
示例#11
0
        private void btnApply_Click(object sender, EventArgs e)
        {
            var         searches   = new Dictionary <int, byte>();
            var         replaces   = new Dictionary <int, byte>();
            FilterModes filterMode = FilterModes.SearchAndReplaceFromBegin;
            Byte        result;

            for (var i = 0; i < 501; i++)
            {
                if (dataGridViewSearch[i, 0].Value != null && Byte.TryParse(dataGridViewSearch[i, 0].Value.ToString(), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out result))
                {
                    searches.Add(i, result);
                }
            }

            if ((radioButton2.Checked || radioButton3.Checked) && (searches.Count == 0 || !searches.ContainsKey(0)))
            {
                MessageBox.Show(@"The chain to search must start at the offset 0");
                return;
            }

            if (radioButton1.Checked)
            {
                filterMode = FilterModes.SearchAndReplaceFromBegin;
                for (var i = 0; i < 501; i++)
                {
                    if (dataGridViewSearch[i, 1].Value != null && Byte.TryParse(dataGridViewSearch[i, 1].Value.ToString(), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out result))
                    {
                        replaces.Add(i, result);
                    }
                }
            }
            else if (radioButton2.Checked)
            {
                filterMode = FilterModes.SearchOcurrenceReplaceFromBegin;
                for (var i = 0; i < 501; i++)
                {
                    if (dataGridViewReplace[i, 0].Value != null && Byte.TryParse(dataGridViewReplace[i, 0].Value.ToString(), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out result))
                    {
                        replaces.Add(i, result);
                    }
                }
            }
            else if (radioButton3.Checked)
            {
                filterMode = FilterModes.SearchOcurrenceReplaceFromPosition;
                for (var i = 0; i < 501; i++)
                {
                    if (dataGridViewReplace2[i, 0].Value != null && Byte.TryParse(dataGridViewReplace2[i, 0].Value.ToString(), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out result))
                    {
                        replaces.Add(i, result);
                    }
                }
            }

            FilterCaptureFuncs functions = BuildFunctionsBitMask();
            FilterActions      actions   = BuildActionsBitMask();
            uint packetLengthMin         = 0;
            uint packetLengthMax         = 0;

            if (chkPackeLength.Checked)
            {
                packetLengthMin = (uint)nudPacketLengthMin.Value;
                packetLengthMax = (uint)nudPacketLengthMax.Value;
            }

            string name = txtFilterName.Text;

            if (name == "" && _filterIndex == -1)
            {
                name = "Filter " + (FilterManager.GetNumberOfFiltersInList() + 1).ToString("D2");
            }

            if (_filterIndex == -1)
            {
                FilterManager.NewFilter(chkActive.Checked, filterMode, functions, actions, name, packetLengthMin, packetLengthMax, (uint)nudNumTimesApply.Value, searches, replaces);
            }
            else
            {
                FilterManager.EditFilter(_filterIndex, chkActive.Checked, filterMode, functions, actions, name, packetLengthMin, packetLengthMax, (uint)nudNumTimesApply.Value, searches, replaces);
            }

            Program.mainForm.LoadFilterItems();
            Program.mainForm.ActionStartStopFiltering(false);
            Close();
        }
示例#12
0
        private static bool CheckBlockIgnoreWatchBreak(byte[] data, UInt16 size, FilterCaptureFuncs functionFlag, FilterActions checkType)
        {
            foreach (var filter in _filterList)
            {
                switch (checkType)
                {
                case FilterActions.Block:
                    if (!filter.Actions.HasFlag(FilterActions.Block))
                    {
                        continue;
                    }
                    break;

                case FilterActions.Ignore:
                    if (!filter.Actions.HasFlag(FilterActions.Ignore))
                    {
                        continue;
                    }
                    break;

                case FilterActions.Watch:
                    if (!filter.Actions.HasFlag(FilterActions.Watch))
                    {
                        continue;
                    }
                    break;

                case FilterActions.Break:
                    if (!filter.Actions.HasFlag(FilterActions.Break))
                    {
                        continue;
                    }
                    break;

                default:
                    throw new IndexOutOfRangeException();
                }
                if (filter.Searches.Count == 0) // Filtro sin search? No vamos a blockear, watchear o ignorar todoo...
                {
                    continue;
                }
                if (!FilterMeetConditions(filter, size, functionFlag))
                {
                    continue;
                }
                int  pos            = 0;
                bool allOffsetMatch = AllSearchOffsetMatch(data, size, filter, ref pos);
                if (allOffsetMatch)
                {
                    return(true); // Todos los offset de search machean con el valor en data, la accion del filtro se aplica
                }
            }

            return(false);
        }
示例#13
0
        public static void EditFilter(int index, bool active, FilterModes mode, FilterCaptureFuncs functions, FilterActions actions, string name, uint packetLenghtMin, uint packetLengthMax, uint numTimesApply, Dictionary <int, byte> searches, Dictionary <int, byte> replaces)
        {
            var filter = _filterList.ElementAt(index);

            filter.Active          = active;
            filter.Mode            = mode;
            filter.Functions       = functions;
            filter.Actions         = actions;
            filter.Name            = name;
            filter.PacketLengthMin = packetLenghtMin;
            filter.PacketLengthMax = packetLengthMax;
            filter.NumTimesApply   = numTimesApply;
            filter.Searches        = searches;
            filter.Replaces        = replaces;
        }
示例#14
0
        public static void NewFilter(bool active, FilterModes mode, FilterCaptureFuncs functions, FilterActions actions, string name, uint maxPacketLeghtMin, uint maxPacketLeghtMax, uint numTimesApply, Dictionary <int, byte> searches, Dictionary <int, byte> replaces)
        {
            var filter = new Filter(active, mode, functions, actions, name, maxPacketLeghtMin, maxPacketLeghtMax, numTimesApply, searches, replaces);

            _filterList.Add(filter);
        }