管家
unread,May 8, 2008, 1:22:54 AM5/8/08Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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]键退出')