centos7 编译xplico
1 说明
xplico官网有直接镜像Ubuntu可用,安装完系统镜像后可直接通过web界面使用,本次文档的目的是将xplico以源码
形式在centos下编译,并且以命令行方式运行解析文件。
本次操作的系统环境为centos7.5:
2 环境工具准备
1)准备源码
xplico源码:
下载 xplico-1.2.1.tar.gz
nDPI源码:
下载 nDPI-2.8.tar.gz
2)准备工作目录
- 找个工作路径新建个文件夹xplico;
- 将xplico-1.2.1.tar.gz 移动到$path/xplico 目录中;
- 将nDPI-2.8.tar.gz 移动到$path/xplico 目录中。
3)安装依赖库
yum install tcpdump httpd php php-mysql sqlite sqlite-devel libzip-devel recode sox php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc mysql-connector-odbc libdbi-dbd-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql libXt libXt-devel libX11-devel libX11 json-c-devel json-c libnet libnet-devel libXext libXext-devel postgresql-devel psmisc
3 编译xplico
cd $path/xplico tar -zxvf xplico-1.2.1.tar.gz cd xplico-1.2.1 make
1)错误1:
解决:
yum install GeoIP-devel
2)错误2:
tar -zxvf nDPI-2.8.tar.gz mv nDPI-2.8 nDPI #这一步一定要改名字,否则后面xplico会找不到对应头文件 cd nDPI ./autogen.sh ./configure make
切换到xplico-1.2.1目录下继续编译
因为nDPI是放在了xplico同级目录下,xplico编译需要libndpi,
所以编译xplico时用命令:make LOCAL_NDPI=1
这样就可以找到本地的libndpi库了
3)错误3:
这个问题的出现是由于nDPI版本和xplico不匹配导致的,不兼容主要在ndpi 中结构体ndpi_protocol
中定义master_protocol字段,而在xplico中使用protocol字段导致不兼容可以直接修改xplico中的代码,
本次直接修改xplico中的代码。
vim dissectors/tcp_grbg/tcp_garbage.c
改为:
类似的还有:
vim ./dissectors/udp_grbg/udp_garbage.c #line376 vim ./dissectors/tcp_ca/tcp_analysis.c #line 527 621 vim ./dissectors/udp_ca/udp_analysis.c #line 434 454
4)错误4:
这是因为libndpi.a这个库的路径不对,应该在../nDPI/src/lib/中,
cd $path/nDPI/src/lib/ mkdir .libs cp libndpi.a .libs
5)错误5:
yum install mysql-devel
6)错误6:
因为我们用不到PQ数据库,可以把它的接口禁掉,免得安装软件:
vim system/dema/dbinterface.c
之后就可以编译通过了,编译通过标志如下
4 命令行模式运行xplico
以上编译通过之后,会在当前目录下生成可执行程序xplico:
要以命令行模式运行程序:
./xplico -c ./config/xplico_cli_nc.cfg -m pcap -d /data/pcaps/ # -d 解析整个文件夹下pcap包 ./xplico -c ./config/xplico_cli_nc.cfg -m pcap -f /data/pcaps/1.pcap # -f单个pcap包
这种编译环境搭建完成之后,就可以移植、修改添加符合自己项目需要的功能!