这里写目录标题
一、前言:
根据该教程(参考博文:阿蕉(作者)
-CICFlowMeter使用)使用windows环境进行配置时,总是在offlineline分析CIC-IDS-2017数据集中的pcap文件时异常退出。如下图所示的错误,可能是jdk的问题吧(版本没错),改了太多次也不想再折腾了,干脆在VMwork Station中的kali虚拟机里尝试一下,就成功了。
二、环境配置
参考博文-CSDN-Ashin Wang’s Blog-CICFlowMeter安装及使用体验注:本文在配置时使用oracle的jdk1.8.0,使用前述博文所说的openjdk不能够成功进行数据集操作
(一)、java安装
1.linux本身无java环境
参考博文-景天zy(作者)-Kali安装JDK 1.8的详细过程
如果终端中键入java -version
报错,显示没有java的话,则直接使用本链接进行jdk1.8.0下载,
华为云jdk_1.8.0_202下载
sudo vim /etc/profile
在文件的最后添加:(ps:也可以在~/.bashrc
或者~/.zshrc
这样的配置文件中添加)
# install JAVA JDK
export JAVA_HOME=/opt/jdk1.8.0_202
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
退出后键入命令:(修改了其他文件则进行相应操作如source ~/.bashrc
或者source ~/.zshrc
)
source vim /etc/profile
通知系统java的位置(注意这里的版本号一定要和安装的版本号一样,否则出错!!)
sudo update-alternatives --install /usr/bin/java javac /opt/jdk1.8.0_202/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_202/bin/javac 1
sudo update-alternatives -set java /opt/jdk1.8.0_202/bin/java
sudo update-alternatives --set javac /opt/jdk1.8.0_202/bin/javac
2.如果系统已经有了openjdk
环境
要先卸载原有环境:
sudo apt-get remove openjdk-11-jre
sudo apt-get remove openjdk-11-jre-headless
注意,这里可能会执行完上述指令,还会有openjdk
,那么就再执行一次上述命令。
卸载之后重复第一点内容。
3.已经带有jdk1.8.0
比如:
则直接进行下一步
(二)Maven
安装
sudo apt install maven
Maven 换源
参考博文:CSDN-一天_pika(作者)-Linux下配置Maven中心源
在maven
的安装目录下(Ubuntu
和kali
默认为:‘/usr/share/maven/conf’)编辑setting.xml
文件
(ps:本文并没有修改settings.xml
文件,而是新建了settings
文件,没有影响到最终结果,若发现问题之后会修改)
sudo vim /usr/share/maven/conf/settings
在其中添加如下内容:
<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>
(三)Git安装
sudo apt install git
(四)安装 gradle
sudo apt install gradle
(五)安装libpacp
参考博文-CSDN-JPLAY0(作者)-Linux安装libpcap(pcap.h库)(以Ubuntu 18.04为例)
注意 上述参考博文使用的libpcap
版本非最新版,使用最新版运行上述博文中的test.c样例将会报错,因此本文下载libpcap
的版本为1.8.1
(ps:参考博文-CSDN-老李头带你看世界(作者)-libpcap编译遇到的问题 ‘pcap_lookupdev’ is deprecated)
libpcap1.8.1
下载链接: https://pan.baidu.com/s/1myW_DpC3Nlj5EtkdYzNpdQ?pwd=1111
提取码: 1111
cd ~
sudo apt-get install flex bison byacc
# 拷贝 lib 文件(为避免运行test.c出现报错)
sudo cp libpcap.so.1 /usr/lib/
载完成后tar -zxvf 文件名.tar.gz
解压,cd
进入源码目录
./configure
make
sudo make install
现在进行测试:(ps:此处的测试代码与参考博文的代码在头文件引用上有所不同,多引用了一个头文件#include <ctype.h>
,以防止出现isprint函数
的相关报错。参考博文-菜鸟教程-菜鸟教程(作者)-C 库函数 - isprint())
#include <string.h>
#include <stdlib.h>
#include <ctype.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;
}
键入如下命令验证libpcap
安装是否成功
gcc test.c -lpcap -o test
# 没有sudo会报段错误
sudo ./test
(六)IntellJ IDEA
在官网https://www.jetbrains.com/idea/下载Community Edition,
解压一般放置在 /opt/
# 修改下述内容为本机对应IDEA文件夹名称
cd /opt/idea-IC-222.4345.14/bin
# 运行
./idea.sh
(七)下载CICFlowMeter
cd ~
git clone https://github.com/ahlashkari/CICFlowMeter.git
unzip CICFlowMeter-master.zip
三、IDEA中导入CICFlowMeter-master并配置IDEA
选择open
,打开CICFlowMeter-master
文件
下图划线JDK home path
位置改为刚刚下载的jdk
的位置。
SDKs
的上面有有关Modules
的设置,在Dependencies
里添加右下角划线的两个内容,其中jnetpcap.jar
对应导入后的jnetpcap.jar
,libjnetpcap.so
对应导入后的Empty Library
勾选导入后的两个内容(下图中之前已经配置过一些内容,所以已经存在了一个Empty Library
),应用这些更改后的设置。
下图划线位置打开terminal
键入下述命令
cd jnetpcap/linux/jnetpcap-1.4.r1425
mvn install:install-file -Dfile=jnetpcap.jar -DgroupId=org.jnetpcap -DartifactId=jnetpcap -Dversion=1.4.1 -Dpackaging=jar
更改CICFlowMeter-master
目录下的build.grade
配置文件,
将参考博文-CSDN-_飞行员舒克(作者)-CICFlowMeter工具ubuntu启动时出现“Could not find org.jnetpcap:jnetpcap:1.4.1.”问题的解决办法
compile group: 'org.jnetpcap', name: 'jnetpcap', version:'1.4.1'
改为
compile group: 'jnetpcap', name: 'jnetpcap', version:'1.4.r1425-1g'
以及将: repositories
的内容改为
repositories {
mavenLocal()
// maven 中心源
// mavenCentral()
// maven 阿里源
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
}
回到IDEA
的terminal
键入命令
sudo ./gradle execute
# 如果不行键入下述命令:
sudo su
# 进入超级权限后
./gradle execute
选择要分析的pcap
文件和生成文件要放入的目录。
成功生成csv
文件
四、CIC-IDS-2017数据集下载
参考博文-CSDN-iioSnail
(作者)-CICIDS2017数据集(百度网盘链接)
百度网盘下载数据集链接: https://pan.baidu.com/s/1zyKyVHPlKMBfF2Wkk3RQqA?pwd=1111
提取码: 1111
官网:https://www.unb.ca/cic/datasets/ids-2017.html
官网数据地址:http://205.174.165.80/CICDataset/CIC-IDS-2017/