日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

clamav Java_ClamAV安装使用及API例子

發布時間:2023/12/20 java 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 clamav Java_ClamAV安装使用及API例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ClamAV是一款由Sourcefire組織開發的開源殺毒引擎,Sourcefire同時也是Snort入侵檢測引擎的所有者。ClamAV提供了一種更為快速靈活的框架用以檢測惡意代碼和軟件產品。可以作為現有的臺式機、文件服務器、郵件服務器以及其他需要殺毒掃描軟件場景中殺毒掃描軟件的補充工具或者替代產品。另外ClamAV程序包中還包含了libclamav庫以及命令行可執行文件接口。同時也提供了freshclam命令行工具用以保證特征庫的更新。

ClamAV的最新版本可以在http://www.clamav.net/download/sources/獲得。也可以通過程序管理器自動安裝。在Ubuntu系統中,輸入一下命令即可自動安裝:

$?apt-get?install?clamav?clamav-freshclam

下面說一說ClamAV的安裝過程(使用clamav-0.98.6版本):

(1)?下載并解壓clamav-0.98.6.tar.gz:

#?tar?vxf?clamav-0.98.6.tar.gz

(2)?添加用戶組clamav和組成員clamav:

#?groupadd?clamav

#?useradd?–g?clamav?clamav

(3)?進入解壓后的目錄(源文件放在/usr/local/src中),并如下配置軟件:

#?./configure?--prefix=/usr/local/clamav

出現一個錯誤:OpenSSL?not?found

openssl的開發包沒有安裝,安裝即可:

apt-get?install?libssl-dev

(4)?編譯,安裝:

make

make?install

此時,還不能使用./clamscan去掃描可以文件,因為還沒有特征庫可加載到系統中,程序默認在share目錄下的clamav文件夾中加載特征庫,需要手動在上述路徑下添加一個clamav文件夾,并且保證clamav用戶能夠對文件夾進行讀寫。

(5)?在/var/log/目錄下添加兩個log文件:clam.log和clam-update.log,所有者為clamav用戶,并保證可讀寫權限。

(6)?修改/usr/local/clamav?/etc/clam.conf將開始的有"Example"的那行用#注釋掉。

(7)?修改/usr/local/clamav?/etc/freshclam.conf將開始的有"Example"的那行用#注釋掉。修改UpdateLogFile?/var/log/freshclam.log?為UpdateLogFile?/var/log/clam-update.log

(8)?用freshclam升級病毒庫:

$?freshclam

freshclam運行以后,share目錄下的clamav文件夾中已經存在了最新的特征庫文件,下面就可以用clamscan命令進行文件的掃描了

Libclamav庫API

libclamav庫API提供了病毒掃描的各種函數接口。libclamav庫使用的是病毒掃描法(Virus?Scanner)。從病毒中提取的特征字符串被用一定的格式組織在一起并加上簽名保護就形成了病毒庫,clamav使用的病毒庫一般后綴為.cvd文件。

在使用libclamav之前,必須調用cl_init()函數來初始化,初始化成功以后,可以調用cl_engine_new()函數來創建一個新的掃描引擎。掃描結束以后,需要調用cl_engine_free()這個函數來釋放這個引擎結構。這三個函數的原型如下:

int?cl_init(unsigned?int?options);

struct?cl_engine?*cl_engine_new(void);

int?cl_engine_free(struct?cl_engine?*engine);

cl_init()和cl_engine_free()兩個函數如果調用成功,將返回CL_SUCCESS,如果返回其他code,說明函數調用失敗。

cl_init函數的實參傳入CL_INIT_DEFAULT即可。

Cl_engine_new()如果調用成功將返回一個指向struct?cl_engine結構體的指針,如果失敗將返回NULL。

得到新的掃描引擎以后,需要進行特征庫的加載,clamav提供了兩個函數:

const?char?*cl_retdbdir(void);

int?cl_load(const?char?*path,?struct?cl_engine?*engine,

unsigned?int?*signo,?unsigned?int?options);

cl_retdbdir返回ClamAV特征庫的默認路徑。

cl_load函數根據給出的具體特征庫路徑,加載單個特征文件,或者幾個特征文件(給出的實參是文件夾)。第二個參數傳入cl_engine_new得到的engine,第三個參數傳出加載的特征碼的條數,最后一個參數為加載的選項,一般傳入CL_DB_STDOPT即可。

以上的步驟完成以后,需要調用cl_engine_compile()函數做最后的文件掃描前的準備,給函數原型為:

int?cl_engine_compile(struct?cl_engine?*engine);

現在,可以進行文件的掃描了,文件掃描的函數為cl_scanfile,函數原型為:

int?cl_scanfile(const?char?*filename,?const?char?**virname,

unsigned?long?int?*scanned,?const?struct?cl_engine?*engine,

unsigned?int?options);

該函數需要注意的一點是,virname在函數中指向了engine結構的表示目標掃描文件名稱的內存,不能被直接釋放。最后一個參數傳入CL_SCAN_STDOPT,默認配置即可。

還有一個函數沒有介紹:

cl_strerror(),可以將相關函數返回的不為CL_SUCCESS值的錯誤代碼轉換為說明錯誤相關的字符串。

以下是利用libclamav的API函數掃描文件的一個示例程序,只是展示了如何利用API進行文件掃描的最簡單的流程,路徑之類的采用的都是硬編碼,實際使用時可以進行相應的修改。

利用一個樣本文件進行試驗,編譯時加上參數-lclamav,并保證可以找到需要的.so文件和clamav.h文件,得到結果如下:

更多詳情后續更新

總結

以上是生活随笔為你收集整理的clamav Java_ClamAV安装使用及API例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。