首页 > 学院 > 开发设计 > 正文

Python:快速查找出被挂马的文件

2019-11-14 17:45:20
字体:
来源:转载
供稿:网友

网站被入侵,担心被挂马,因此就想自己写个脚本来查找那些被挂马的文件

思路

需要实现准备一份未受感染的源代码和一份可能受感染的源代码,然后运行以下脚本,就能找出到底哪些文件被挂马了。

其中,主要是根据比对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_DirNew    global_DirOld = unicode(raw_input("请输入备份文件所在目录:"),"utf-8")    while not os.path.exists(global_DirOld):        PRint  u"指定的路径不存在,请重新输入"        global_DirOld = unicode(raw_input("请输入备份文件所在目录:"),"utf-8")    global_DirNew = unicode(raw_input("请输入要检测文件的目录:"),"utf-8")    while not os.path.exists(global_DirNew):        print  u"指定的路径不存在,请重新输入"        global_DirNew = unicode(raw_input("请输入要检测文件的目录:"),"utf-8")#将数据保存到文件中def SaveToFile(filePath,content):    try:        f = open(filePath,"a+")        f.write(content.encode("utf-8") + "/n")        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 hash    except Exception,ex:        print "Error:" + str(ex)        return None#遍历目录下的所有文件def GetAllSubFiles():    global global_FilesList    for dir in os.walk(global_DirNew):        for file in dir[2]:            filePath = dir[0] + os.sep + file            global_FilesList.append(filePath[len(global_DirNew)+1:])#列出新增文件和变动的文件def ListChangedFiles():    global global_DirOld,global_DirNew,global_FilesList    print u"变动或新增的文件:"    for file in global_FilesList:        filePathOld = global_DirOld + os.sep + file        filePathNew = global_DirNew + os.sep + file        if not os.path.exists(filePathOld) or CalcMD5(filePathOld)!=CalcMD5(filePathNew):            content = "[" + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')+ "]" + filePathNew            print content            SaveToFile("ChangedFiles.txt",content)if __name__=="__main__":    InputDirPath()    GetAllSubFiles()    ListChangedFiles()

脚本执行结果

作      者:曾是土木人

新浪微博:http://weibo.com/cstmr

原文地址:http://www.VEVb.com/hongfei/p/3769774.html


上一篇:django模型

下一篇:pycharm安装与实践

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表