python 病毒脚本_python实现集中式的病毒扫描功能详解

本文实例讲述了python实现集中式的病毒扫描功能。分享给大家供大家参考,具体如下:

一 点睛

本次实践实现了一个集中式的病毒扫描管理,可以针对不同业务环境定制扫描策略,比如扫描对象、描述模式、扫描路径、调度频率等。案例实现的架构图如下,首先业务服务器开启clamd服务(监听3310端口),管理服务器启用多线程对指定的服务集群进行扫描,扫描模式、扫描路径会传递到clamd,最后返回扫描结果给管理服务器端。

本次实战通过ClamdNetworkSocket()方法实现与业务服务器建立扫描socket连接,再通过启动不同扫描方式实施病毒扫描并返回结果。

二 代码

#!/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):

"""构造方法"""

Thread.__init__(self)

self.IP = IP

self.scan_type=scan_type

self.file = file

self.connstr=""

self.scanresult=""

def run(self):

"""多进程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

三 结果

1 无病毒的情况下,扫描结果

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 有病毒的情况下,扫描结果

2.1 制作病毒测试文件

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

2.2 扫描结果

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')}

希望本文所述对大家Python程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值