lomas.preprocessor submodule

class lomas.preprocessor.PCAPProcessor(f_name, protocol, MAIG)

基类:object

用于将 PCAP 包级别数据聚合成为流级别数据。

__init__(f_name, protocol, MAIG)

pcap-file processor submodel :param str f_name: 输入的trace数据文件名(pcap文件类型输入一组 f_name,List[f_name]) :param str protocol: 指定PCAP数据包的协议类型,如TCP、UDP等 :param int MAIG: 从pcap数据包中恢复流级别数据所设定的最大超时间隔(minimum allowed interflow gap),单位毫秒

process_pcap()

根据PCAP数据包的协议类型调用不同的预处理函数 :raise ValueError: 如果协议类型既不是TCP也不是UDP

process_pcap_tcp()

对协议类型为TCP的PCAP数据包文件进行预处理 :return: 流级别数据 :rtype: pd.DataFrame

process_pcap_udp()

对协议类型为UDP的PCAP数据包文件进行预处理 :return: 流级别数据 :rtype: pd.DataFrame

class lomas.preprocessor.Preprocessor(f_path, f_name, f_type, column_names=None, protocol=None, MAIG=None)

基类:object

用于对流级别数据进行预处理,包括特征离散化、数据集分割、特征频率统计等。

__init__(f_path, f_name, f_type, column_names=None, protocol=None, MAIG=None)

preprocessor submodel

参数:
  • f_path (str) -- 输入的trace数据所在文件夹路径

  • f_name (str) -- 输入的trace数据文件名(pcap文件类型输入一组 f_name,List[f_name])

  • f_type (List[str]) -- 输入的trace数据类型

  • f_type -- 当输入的trace数据类型为csv或excel格式时,需要指定需要研究的列名

  • MAIG (int) -- 从pcap数据包中恢复流级别数据所设定的最大超时间隔(minimum allowed interflow gap),单位毫秒

抛出:

ValueError -- 如果f_type既不等于'flow'也不等于'pcap'

auto_percentile(arr, num_of_step=40)

将原始特征进行等频分箱,返回每个分箱区间的下标值 :param np.array arr: 数组格式存储的原始特征值 :param int num_of_step: 区间数量 :return: 每个分箱区间的下标值 :rtype: np.array

discretization(cdf, arr)

根据百分位值对特征进行离散化处理,原始特征值变为对应特征值区间的区间编号 :param dict cdf: 特征值对应的百分位值 :param np.array arr: 原始特征值 :return: 散化处特征值 :rtype: list

discretization_to_flow_type()

将流大小和流间隔两个维度的特征,转换为离散化处理的二元组(flow type),并以字符串形式存储

get_cdf(col_name)

特征离散化,计算特征的百分位值 :param string col_name: 特征对应的列名 :return: 百分位点,及对应的百分位取值 :rtype: dict

get_flow_level_trace(f_path, f_name)
参数:
  • f_path (str) -- 输入的trace数据所在文件夹路径

  • f_name (str) -- 输入的trace数据文件名

抛出:

ValueError -- 如果f_name的文件类型不属于 [csv, xlsx, pkl, parquet] 中的任意一种

get_id_of_ip()

将IP按字典序排序,并存为dict数据类型。其中dict-key为字典序编号,dict-value为IP :return: 排序后的IP及其下标 :rtype: dict

get_ordered_ippair() list

统计数据集中所有的IP-Pair,并按字典序进行排序。 :return: 排序后的IP-Pair :rtype: list

get_pcap_level_trace(f_path, f_name, protocol, MAIG)
参数:
  • f_path (str) -- 输入的trace数据所在文件夹路径

  • f_name (str) -- 输入的trace数据文件名

  • protocol (str) -- 指定PCAP数据包的协议类型,如TCP、UDP等

  • MAIG (int) -- 最大超时间隔(minimum allowed interflow gap)

返回:

从单个pcap文件中解析得到的流级别数据

返回类型:

pd.DataFrame

get_pcap_level_trace_mp(f_path, f_name, protocol, MAIG)

功能同 get_pcap_level_trace 函数,多进程处理

pcap_process_helper(params)

解析单个pcap文件

参数:
  • params[0] (str) -- absolute path for pcap file

  • params[1] (str) -- protocol

  • params[2] (int) -- MAIG

返回:

从单个pcap文件中解析得到的流级别数据

返回类型:

pd.DataFrame

select_active_ip(lower_bound)

只保留样本量大于lower_bound的IP对 :param int lower_bound: 样本数量的筛选阈值

ts_to_interval()

根据时间戳计算“流到达间隔”