首页 / 操作系统 / Linux / Python实例分享:快速查找出被挂马的文件
网站被入侵,担心被挂马,因此就想自己写个脚本来查找那些被挂马的文件
思路
需要实现准备一份未受感染的源代码和一份可能受感染的源代码,然后运行以下脚本,就能找出到底哪些文件被挂马了。其中,主要是根据比对2份文件的md5值来过滤可能被挂马的文件(确切的说应该是被修改过的文件)Python脚本
__author__ = "Flying"#coding:utf-8#Date:2014.6.5#检测修改过的文件import os,sys,hashlib,datetimeglobal_DirOld = ""global_DirNew = ""global_FilesList = []#输入要比对的文件路径def InputDirPath():global global_DirOld,global_DirNewglobal_DirOld = unicode(raw_input("请输入备份文件所在目录:"),"utf-8")while not os.path.exists(global_DirOld):printu"指定的路径不存在,请重新输入"global_DirOld = unicode(raw_input("请输入备份文件所在目录:"),"utf-8")global_DirNew = unicode(raw_input("请输入要检测文件的目录:"),"utf-8")while not os.path.exists(global_DirNew):printu"指定的路径不存在,请重新输入"global_DirNew = unicode(raw_input("请输入要检测文件的目录:"),"utf-8")#将数据保存到文件中def SaveToFile(filePath,content):try:f = open(filePath,"a+")f.write(content.encode("utf-8") + "
")f.close()except Exception,ex:print "Error:" + str(ex)#计算文件的MD5值def CalcMD5(filepath):try:#以二进制的形式打开with open(filepath,"rb") as f:md5obj = hashlib.md5()md5obj.update(f.read())hash = md5obj.hexdigest()return hashexcept Exception,ex:print "Error:" + str(ex)return None#遍历目录下的所有文件def GetAllSubFiles():global global_FilesListfor dir in os.walk(global_DirNew):for file in dir[2]:filePath = dir[0] + os.sep + fileglobal_FilesList.append(filePath[len(global_DirNew)+1:])#列出新增文件和变动的文件def ListChangedFiles():global global_DirOld,global_DirNew,global_FilesListprint u"变动或新增的文件:"for file in global_FilesList:filePathOld = global_DirOld + os.sep + filefilePathNew = global_DirNew + os.sep + fileif not os.path.exists(filePathOld) or CalcMD5(filePathOld)!=CalcMD5(filePathNew):content = "[" + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")+ "]" + filePathNewprint contentSaveToFile("ChangedFiles.txt",content)if __name__=="__main__":InputDirPath()GetAllSubFiles()ListChangedFiles()脚本执行结果
《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码] http://www.linuxidc.com/Linux/2013-11/92693.htmPython脚本获取Linux系统信息 http://www.linuxidc.com/Linux/2013-08/88531.htm在Ubuntu下用Python搭建桌面算法交易研究环境 http://www.linuxidc.com/Linux/2013-11/92534.htmPython 语言的发展简史 http://www.linuxidc.com/Linux/2014-09/107206.htmPython 的详细介绍:请点这里
Python 的下载地址:请点这里本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-01/111137.htm