python實(shí)現(xiàn)集中式的病毒掃描功能詳解
本文實(shí)例講述了python實(shí)現(xiàn)集中式的病毒掃描功能。分享給大家供大家參考,具體如下:
一 點(diǎn)睛
本次實(shí)踐實(shí)現(xiàn)了一個(gè)集中式的病毒掃描管理,可以針對(duì)不同業(yè)務(wù)環(huán)境定制掃描策略,比如掃描對(duì)象、描述模式、掃描路徑、調(diào)度頻率等。案例實(shí)現(xiàn)的架構(gòu)圖如下,首先業(yè)務(wù)服務(wù)器開(kāi)啟clamd服務(wù)(監(jiān)聽(tīng)3310端口),管理服務(wù)器啟用多線程對(duì)指定的服務(wù)集群進(jìn)行掃描,掃描模式、掃描路徑會(huì)傳遞到clamd,最后返回掃描結(jié)果給管理服務(wù)器端。
本次實(shí)戰(zhàn)通過(guò)ClamdNetworkSocket()方法實(shí)現(xiàn)與業(yè)務(wù)服務(wù)器建立掃描socket連接,再通過(guò)啟動(dòng)不同掃描方式實(shí)施病毒掃描并返回結(jié)果。
二 代碼
#!/usr/bin/env python # -*- coding: utf-8 -*- import time import pyclamd from threading import Thread class Scan(Thread): def __init__ (self,IP,scan_type,file): """構(gòu)造方法""" Thread.__init__(self) self.IP = IP self.scan_type=scan_type self.file = file self.connstr="" self.scanresult="" def run(self): """多進(jìn)程run方法""" try: cd = pyclamd.ClamdNetworkSocket(self.IP,3310) if cd.ping(): self.connstr=self.IP+" connection [OK]" cd.reload() if self.scan_type=="contscan_file": self.scanresult="{0}\n".format(cd.contscan_file(self.file)) elif self.scan_type=="multiscan_file": self.scanresult="{0}\n".format(cd.multiscan_file(self.file)) elif self.scan_type=="scan_file": self.scanresult="{0}\n".format(cd.scan_file(self.file)) time.sleep(1) else: self.connstr=self.IP+" ping error,exit" return except Exception,e: self.connstr=self.IP+" "+str(e) IPs=['192.168.0.120'] scantype="multiscan_file" scanfile="/data" i=1 threadnum=2 scanlist = [] for ip in IPs: currp = Scan(ip,scantype,scanfile) scanlist.append(currp) if i%threadnum==0 or i==len(IPs): for task in scanlist: task.start() for task in scanlist: task.join() print task.connstr print task.scanresult scanlist = [] i+=1
三 結(jié)果
1 無(wú)病毒的情況下,掃描結(jié)果
E:\Python\python_auto_maintain\venv\Scripts\python.exe E:/Python/python_auto_maintain/4_1_2.py
192.168.0.120 connection [OK]
None
2 有病毒的情況下,掃描結(jié)果
2.1 制作病毒測(cè)試文件
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
2.2 掃描結(jié)果
E:\Python\python_auto_maintain\venv\Scripts\python.exe E:/Python/python_auto_maintain/4_1_2.py
192.168.0.120 connection [OK]
{u'/data/EICAR': ('FOUND', 'Eicar-Test-Signature')}
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python進(jìn)程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- 十行代碼使用Python寫(xiě)一個(gè)USB病毒
- Python實(shí)現(xiàn)掃描局域網(wǎng)活動(dòng)ip(掃描在線電腦)
- Python實(shí)現(xiàn)的多線程端口掃描工具分享
- python基礎(chǔ)教程之udp端口掃描
- python局域網(wǎng)ip掃描示例分享
- Python腳本實(shí)現(xiàn)Web漏洞掃描工具
- Python掃描IP段查看指定端口是否開(kāi)放的方法
- Python端口掃描簡(jiǎn)單程序
- python多線程掃描端口示例
- 實(shí)例探究Python以并發(fā)方式編寫(xiě)高性能端口掃描器的方法
- python實(shí)現(xiàn)上傳樣本到virustotal并查詢掃描信息的方法
- Python實(shí)現(xiàn)簡(jiǎn)易端口掃描器代碼實(shí)例
相關(guān)文章
解決Django模板無(wú)法使用perms變量問(wèn)題的方法
這篇文章主要給大家介紹了關(guān)于解決Django模板無(wú)法使用perms變量問(wèn)題的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09python計(jì)算程序開(kāi)始到程序結(jié)束的運(yùn)行時(shí)間和程序運(yùn)行的CPU時(shí)間
這篇文章主要介紹了python計(jì)算程序開(kāi)始到程序結(jié)束的運(yùn)行時(shí)間和程序運(yùn)行的CPU時(shí)間的三個(gè)方法,大家參考使用2013-11-11詳解Python對(duì)某地區(qū)二手房房?jī)r(jià)數(shù)據(jù)分析
這篇文章主要為大家介紹了Python數(shù)據(jù)分析某地區(qū)二手房房?jī)r(jià),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-12-12使用PyTorch實(shí)現(xiàn)隨機(jī)搜索策略
這篇文章主要介紹了使用PyTorch實(shí)現(xiàn)隨機(jī)搜索策略,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07django使用多個(gè)數(shù)據(jù)庫(kù)的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于django使用多個(gè)數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
這篇文章主要介紹了pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05使用python動(dòng)態(tài)生成波形曲線的實(shí)現(xiàn)
今天小編就為大家分享一篇使用python動(dòng)態(tài)生成波形曲線的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12