autorun病毒免疫脚本

12 views
Skip to first unread message

管家

unread,
May 8, 2008, 1:22:54 AM5/8/08
to Python讨论组
#-------------------------------------------------------------------------------
# -*- coding: cp936 -*-
# Time:2008-2-6
# By One.G.M
# File:KillAutoRun.py
# autorun病毒免疫脚本
#---------------------------------------

import os
import string
import win32api
import win32con

class AutoRun:

def __init__(self):
self.Drives = []

def Display(self):
'''显示程序信息'''
print '''\n
\t==================================================================
\n\t\t\t\tTime:2008-2-6
\n\t\t\t\tBy One.G.M
\n\t\t\t\tFile:KillAutoRun.py
\n\t\t\t\t功能:autorun病毒免疫
\n
\t=================================================================='''

def GetDevList(self):
'''获取当前磁盘分区列表'''
print '\n\t当前磁盘分区:',
for Drive in string.uppercase:#当前磁盘分区列表
try:
os.listdir('%c:\\'%Drive)
except WindowsError:
continue
else:
self.Drives.append(Drive)
print '%c ' % Drive,

def CheckDev(self,SelectDev):
'''检查分区列表的合法性'''
i = 0
while i+1 <= len(SelectDev):
if SelectDev[i] not in self.Drives:
print '\n\tERROR: %s分区不存在,请重新输入' % SelectDev[i]
SelectDev = raw_input('\n\t需要免疫的磁盘分区(盘符之间用空格隔
开):').upper()
i = 0
else:
i += 1

def CreatAutorun(self,SelectDev):
'''分区免疫,参数SelectDev为分区列表'''
if 0 != len(SelectDev):
for Drive in SelectDev:
try:
os.mkdir('%c:\\autorun.inf' % Drive)
os.mkdir('%c:\\autorun.inf\\autorun免疫文件..\\' %
Drive)
os.system('attrib +H %c:\\autorun.inf' % Drive)
except:
print '\n\t%s 分区免疫失败' % Drive
else:
print '\n\t%s 分区免疫成功' % Drive
else:
print '\n\t磁盘未做免疫处理'

def DelAutorun(self,SelectDev):
'''取消免疫,参数SelectDev为分区列表'''
for Drive in SelectDev:
if os.path.isdir('%c:\\autorun.inf' % Drive):
try:
os.rmdir('%c:\\autorun.inf\\autorun免疫文件..\\' %
Drive)
os.rmdir('%c:\\autorun.inf' % Drive)
except WindowsError:
print '\n\tERROR: 取消对 %c 分区的Autorun免疫操作失败' % Drive
else:
print '\n\t成功取消对 %c 分区的Autorun免疫' % Drive
else:
print '\n\t成功取消对 %c 分区的Autorun免疫' % Drive
def DelINF(self):
'''删除“Autorun.inf”文件'''
for Drive in self.Drives:
fileslist = os.listdir('%c:\\' % Drive)
if 'autorun.inf' in fileslist:
if os.path.isfile('%c:\\autorun.inf' % Drive):
try:
os.system('attrib -r -h -s %c:\\autorun.inf' %
Drive)
os.remove('%c:\\autorun.inf' % Drive)
except WindowsError:
print '\n\t%c 分区的“Autorun.inf”文件删除失败' % Drive
print '\n\t“autorun.inf”文件删除完毕'


def RegRun(self):
pass

autorun=AutoRun() #对象实例化

def automain(autorun):
'''程序入口'''
autorun.Display() #显示程序信息
autorun.GetDevList() #获得当前磁盘分区列表
print '\n\n\t0.退出\t1.磁盘免疫\t2.取消免疫\t3.删除autorun.inf文件'
try:
num=int(raw_input('\n\t请选择编号(0-3)作出相应的操作:'))
while num not in range(0,4):
num = int(raw_input('\n\t请选择编号(0-3)作出相应的操作:'))
else:
if 0 == num:
exit()
if num in (1,2):
#输入需免疫的分区,将字符串转为大写字母
SelectDev = raw_input('\n\t需要免疫的磁盘分区(盘符之间用空格隔
开):').upper()
SelectDev = SelectDev.split() #分割字符串
autorun.CheckDev(SelectDev) #检查分区列表的合法性
if 1 == num:#磁盘免疫
autorun.CreatAutorun(SelectDev)
if 2 == num:#取消免疫
autorun.DelAutorun(SelectDev)
if 3 == num:
autorun.DelINF()
except ValueError:
print '\n\t没有该项操作,请重新选择'
os.system('pause')
os.system('cls')
automain(autorun)

automain(autorun)

raw_input('\n\t按[Enter]键退出')
Reply all
Reply to author
Forward
0 new messages