CICFlowMeter安装及使用体验

CICIDS 数据集是 Canadian Institute for Cybersecurity 使用他们自己开源的 CICFlowMeter 进行流量特征提取,维度高达80多,并可生成 csv 文件,提供实时捕获和离线 pcap 两种方式。

CICFlowMeter 官方开源地址:https://github.com/ahlashkari/CICFlowMeter

CICFlowMeter 相关介绍:https://www.unb.ca/cic/research/applications.html#CICFlowMeter

实验环境

  • 虚拟机 Ubuntu x64 18.04

一、安装环境

1 Java 安装

执行 $ sudo apt update

执行 $ java -version 若报未安装,提示

1
2
3
4
$ apt install default-jre
$ apt install openjdk-11-jre-headless
$ apt install openjdk-8-jre-headless
$ apt install openjdk-9-jre-headless

直接根据提示安装即可。

2 Maven 安装

$ sudo apt install maven

Maven 换源

搬运:@一天_pika:Linux下配置Maven中心源

$ mvn -v 查看 maven 安装路径

Ubuntu 一般在 /usr/share/maven/conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$ cd /usr/share/maven/conf
# 编辑配置文件
$ vi seetings
粘贴下面的源
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>ui</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://uk.maven.org/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>OSChina</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>nexus-osc-thirdparty</id>
<mirrorOf>thirdparty</mirrorOf>
<name>Nexus osc thirdparty</name>
<url>http://maven.oschina.net/content/repositories/thirdparty/</url>
</mirror>

3 Git 安装

$ sudo apt install git

4 安装 gradle

$ sudo apt install gradle

5 安装 libpcap

全程参考:@JPLAY0:Linux安装libpcap(pcap.h库)(以Ubuntu 18.04为例)

下载libpcap

官网:https://www.tcpdump.org/#latest-releases

安装依赖包

libpcap 是unix/linux 平台下的网络数据包捕获函数包,安装它需要安装它的依赖包。

1
2
$ sudo apt-get update
$ sudo apt-get install flex bison byacc

编译和安装

1
2
3
4
5
6
7
8
9
10
11
12
# 进入存放 libpcap-x.x.x.tar.gz 的目录
$ cd ?/

# 解压
$ tar -zxvf libpcap-x.x.x.tar.gz

# 进入 libcap 解压后的目录
$ cd libpcap-x.x.x
# 编译安装
$./configure
$ make
$ sudo make install

测试

新建一个 test.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <string.h>
#include <stdlib.h>
#include <pcap.h>

#define MAXBYTE2CAPTURE 2048

void processPacket(u_char *arg, const struct pcap_pkthdr *pkthdr, const u_char *packet) {
int i = 0, *counter = (int *) arg;
printf("Packet Count: %d\n", ++(*counter));
printf("Received Packet Size: %d\n", pkthdr->len);
printf("Payload:\n");
for (i = 0; i < pkthdr->len; i++) {
if (isprint(packet[i]))
printf("%c ", packet[i]);
else
printf(". ");
if ((i % 16 == 0 && i != 0) || i == pkthdr->len - 1)
printf("\n");
}
return;
}

int main() {
int i = 0, count = 0;
pcap_t *descr = NULL;
char errbuf[PCAP_ERRBUF_SIZE], *device = NULL;
memset(errbuf, 0, PCAP_ERRBUF_SIZE);
/* Get the name of the first device suitable for capture */
device = pcap_lookupdev(errbuf);
printf("Opening device %s\n", device);
/* Open device in promiscuous mode */
descr = pcap_open_live(device, MAXBYTE2CAPTURE, 1, 512, errbuf);
/* Loop forever & call processPacket() for every received packet */
pcap_loop(descr, -1, processPacket, (u_char *) &count);
return 0;
}

拷贝 lib 文件

$ sudo cp /usr/local/lib/libpcap.so.1 /usr/lib/

编译运行

1
2
3
4
5
$ cd ?/
# gcc 编译
$ gcc test.c -lpcap -o test
# 测试
$ sudo ./test

测试成功如下截图

截屏2020-02-20上午9.54.32

6. IDEA

https://www.jetbrains.com/idea/下载 Linux 版

1
2
3
4
$ 解压一般放置 /opt/
$ cd idealxxxxxxx/bin/
# 运行
$ ./idea.sh

二、导入项目

1 克隆项目

1
$ git clone https://github.com/ahlashkari/CICFlowMeter.git

2 导入项目

导入项目到 IDEA 中

3 安装 mvn 包

1
2
3
4
# 打开 IDEA 中的 Terminal
$ cd pathtoproject/jnetpcap/linux/jnetpcap-1.4.r1425
# 安装
$ mvn install:install-file -Dfile=jnetpcap.jar -DgroupId=org.jnetpcap -DartifactId=jnetpcap -Dversion=1.4.1 -Dpackaging=jar

4 gradle 换源

打开项目文件 build.grade 修改 repositories

1
2
3
4
5
6
7
repositories {
mavenLocal()
// maven 中心源
// mavenCentral()
// maven 阿里源
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
}

三、构建项目

1
2
3
$ sudo su

$ gradle execute

四、体验

1 Realtime

截屏2020-02-20上午10.09.24

监听的网卡还没发货~ 待更新

2 Offline

支持将 pcap 抓包文件转换 csv 文件。

截屏2020-02-20上午10.09.05