Skip to content

Heatao/flow-feature

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

程序使用Python的scapy库编写

环境:Python3

依赖库

  • 需要安装scapy,用于读取pcap文件pip install scapy

  • ConfigParser用于读取配置文件pip install ConfigParser

  • joblib(可选)pip install joblib

功能

读取pcap文件,输出多条流的信息到csv文件中 仅读取TCP

版本

基础版

flow_basic.py

仅输出流的基本特征

包含:

  • 开始时间
  • 持续时间
  • 源ip
  • 源端口
  • 目的ip
  • 目的端口
  • 包的数量
  • 流量(字节数)
  • 平均包长度
  • 协议(仅支持TCP与UDP)

高级版

get_flow_feature.py

输出包含:

  • 源IP、端口
  • 目的IP、端口
  • 日期&时间两个特征
  • 流包到达时间间隔的均值\标准差\最大值\最小值(正向\反向\不分正反) 共3*4=12个特征
  • 流的持续时间
  • 拥塞窗口大小的总和\均值\标准差\最大值\最小值(正向\反向\不分正反) 3*5=15个特征
  • 包的数目\速率 等7个特征
  • 包的长度的均值\标准差\最大值\最小值(正向\反向\不分正反) 共3*4=12+ 7 = 19个特征
  • 标志特征 12个特征
  • 包头部长度 6个特征

使用方法

python get_flow_feature.py

修改配置文件run.conf来更改运行模式

应用场景

面对不同情况时的配置,未说明的可以不管

读取一个含有大量数据包的pcap

read_all = False
pcap_name = 【需要读取的pcap】
dump_switch = True

需要更改代码再次生成特征时

load_switch = True
load_name = flows.data

读取某一个文件夹下大量的pcap

run_mode = pcap/flow
read_all = True
pcap_loc = 【pcap文件夹位置】

参数设置

mode

  • run_mode 有两种模式分别为pcapflow
    • 在pcap模式下,所有数据包会被视为属于同一个流,头两个字段为pcap文件名目的IP数量
    • 在flow模式下,相同五元组的数据包会被视为同一个流,头两个字段为srcdst
    • 如果是通过load_switch载入的数据包,则无论run_mode设置成什么都是flow模式
  • read_all为True时,会读取指定目录下的所有pcap文件,False时会读取pcap_name指定pcap文件
  • pcap_loc指定读取pcap的目录位置
  • csv_name用于指定输出特征时的文件名
  • multi_process 开启多进程(建议!)
  • process_num 多进程的数目,目前限制为不超过CPU核心数目

feature

  • print_port暂时没有用的配置参数
  • print_colname在csv文件中打印表头
  • add_tag暂时没有用的配置参数

joblib

  • dump_switch设置为True时,将保存一份中间文件flows.data,下次可以使用load直接读取来加快访问速度
    • 此功能仅在读取一个pcap文件时有效,即read_all 和load_switch都是False的时候
  • load_switch设置为True时,将读取flows.data,不再读取pcap文件
  • load_name指定读取的文件名

更新记录

2020.8.18

新增多进程功能,大幅度加快运行速度

2020.8.13

重写代码结构,优化逻辑,改为读取配置文件 删除时间戳特征 并有两种运行模式pcap和flow

2020.4.22

修改bug,增加dump和load功能

2020.4.20

提取更多的特征

2020.4.19

初版demo

About

extract flow feature from pcap

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%