You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于字典过滤条件筛选嵌套NetFlow数据字典

NetFlow嵌套字典过滤实现方案

核心思路

  • 遍历NetFlow数据中的每条流记录
  • 对每条记录验证是否满足所有过滤条件(多条件需全部匹配)
  • 保留符合条件的记录,维持原嵌套结构输出

代码实现(Python)

def filter_netflow(netflow_data, filter_conditions):
    filtered_result = {}
    # 遍历所有流条目,假设顶层键为流ID
    for flow_id, flow_info in netflow_data.items():
        is_match = True
        # 逐一校验过滤条件
        for cond_key, cond_val in filter_conditions.items():
            if flow_info.get(cond_key) != cond_val:
                is_match = False
                break
        if is_match:
            filtered_result[flow_id] = flow_info
    return filtered_result

示例用法

原NetFlow数据

netflow_data = {
    "flow_001": {"srcaddr": "192.168.10.10", "dstaddr": "8.8.8.8", "dstport": "443", "protocol": "TCP"},
    "flow_002": {"srcaddr": "192.168.10.11", "dstaddr": "1.1.1.1", "dstport": "80", "protocol": "TCP"},
    "flow_003": {"srcaddr": "192.168.10.10", "dstaddr": "203.0.113.5", "dstport": "443", "protocol": "TLS"}
}

单条件过滤(筛选目标端口443的流)

single_condition = {"dstport": "443"}
filtered_single = filter_netflow(netflow_data, single_condition)
# 输出结果包含flow_001和flow_003

多条件组合过滤(筛选源IP为192.168.10.10且目标端口443的流)

multi_conditions = {"srcaddr": "192.168.10.10", "dstport": "443"}
filtered_multi = filter_netflow(netflow_data, multi_conditions)
# 输出结果仅包含flow_001

扩展说明

  • 如果NetFlow数据嵌套层级更深(比如流内包含多个数据包条目),可在遍历流后,嵌套遍历数据包做相同逻辑的条件校验
  • 过滤条件的键名必须与NetFlow数据中的字段名完全一致,注意大小写匹配
  • 若需模糊匹配(如IP段、端口范围),可修改条件判断逻辑,例如用字符串前缀匹配、数值区间比较等

内容的提问来源于stack exchange,提问作者Abdul Kareem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 00:21:06