logo头像
Snippet 博客主题

加密流量分类-实践5: 利用CIC-FlowMeter工具提取流量特征

加密流量分类-实践5: 利用CIC-FlowMeter工具提取流量特征

1 前言

  许多研究工作基于CIC-FlowMeter工具提取的csv文件的基础上进行的,目前开源的CIC-FlowMeter工具要么使用jdk编译,要么是给出一个exe可执行文件然后使用图形化界面一个一个处理pcap,在处理大量pacp文件很麻烦,如下图。

离线处理pcap

2 代码

这里基于给出的exe可执行文件,利用python脚本批量处理pcap转化为csv文件。

import os

def generate_batch_csv(pcap_dir,csv_dir,cic_path):
    """批量将pcap转csv"""
    for label in os.listdir(pcap_dir):
        label_path = os.path.join(pcap_dir, label)
        csv_label_dir = os.path.join(csv_dir,label)
        if not os.path.exists(csv_label_dir):
            os.makedirs(csv_label_dir)
        for pcap in os.listdir(label_path):
            pcap_file = os.path.join(label_path,pcap)
            print(f"Analyzing {pcap_file}...")
            # 调用cfm.bat脚本对pcap文件进行分析
            os.chdir(cic_path)
            os.system(f'call cfm.bat "{pcap_file}" "{csv_label_dir}"')
            print("Done.")
        print("完成了{}的处理".format(label))
    print("所有的都处理完成")

def main():
    # 设置pcap和csv文件夹路径
    pcap_dir = r"xxx"
    csv_dir = r"xx"
    cic_dir = r"xx"
    generate_batch_csv(pcap_dir,csv_dir,cic_dir)


if __name__ == "__main__":
    main()

3 参数解释与执行效果

3.1 参数解释

  • pcap_dir:是原始pcap所在的目录,底下是各个标签的目录与对应的pcap,具体如下

    ---pcap_dir
       -- label_0_dir:
          --- label_0_pcap_0
          --- label_0_pcap_1
          --- label_0_pcap_2
          ...
       -- label_1_dir:
          --- label_1_pcap_0
          --- label_1_pcap_1
          --- label_1_pcap_2
          ...
      ...
      --- lable_n-1_dir:
          --- label_n-1_pcap_0
          --- label_n-1_pcap_1
          --- label_n-1_pcap_2
    
  • csv_dir:是将csv文件存储的文件夹

  • cic_dir:是cic工具的bin目录的所在路径

    我这里的示例

    • pcap_dir:

      image-20231211104050740

    • csv_dir:

      随意新建一个文件夹

    • cic_dir:

      image-20231211104333732

3.2 执行效果

  1. 截图

    image-20231211104723276

  2. 成果

image-20231211104541121

iscx-vpn-novpn2016数据集为例,6分钟搞定