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包
這種編譯環境搭建完成之后,就可以移植、修改添加符合自己項目需要的功能!