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; }
/// <summary> /// 构造体 /// </summary> /// <param name="logger"></param> public ResourceFilter(ILogger <ResourceFilter> logger) : base(logger) { FilterActions.Add(Process); }
/// <summary> /// 构造体 /// </summary> /// <param name="logger"></param> public ExceptionFilter(ILogger <ExceptionFilter> logger) : base(logger) { FilterActions.Add(Process); }
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 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(); }
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); }
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; }
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); }