Python实例分享:快速查找出被挂马的文件


Posted in Python onJune 08, 2014

思路

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

其中,主要是根据比对2份文件的md5值来过滤可能被挂马的文件(确切的说应该是被修改过的文件)

Python脚本

__author__ = 'Flying'
#coding:utf-8
#Date:2014.6.5
#检测修改过的文件
import os,sys,hashlib,datetime
global_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()

脚本执行结果

Python实例分享:快速查找出被挂马的文件
 

Python 相关文章推荐
python实现巡检系统(solaris)示例
Apr 02 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
python传递参数方式小结
Apr 17 Python
python通过自定义isnumber函数判断字符串是否为数字的方法
Apr 23 Python
Python闭包实现计数器的方法
May 05 Python
python设计模式大全
Jun 27 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
Oct 14 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
Python常用特殊方法实例总结
Mar 22 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
python中线程和进程有何区别
Jun 17 Python
用python查找统一局域网下ip对应的mac地址
Jan 13 Python
python小技巧之批量抓取美女图片
Jun 06 #Python
Python学习笔记(二)基础语法
Jun 06 #Python
pycharm 使用心得(九)解决No Python interpreter selected的问题
Jun 06 #Python
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 #Python
pycharm 使用心得(七)一些实用功能介绍
Jun 06 #Python
pycharm 使用心得(六)进行简单的数据库管理
Jun 06 #Python
pycharm 使用心得(五)断点调试
Jun 06 #Python
You might like
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
浅谈PHP的反射机制
2016/12/15 PHP
PHP实现的MD5结合RSA签名算法实例
2017/10/07 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
一个基于jquery的图片切换效果
2010/07/06 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
简历的自我评价范文
2014/02/04 职场文书
迎国庆演讲稿
2014/09/05 职场文书
授权委托书(完整版)
2014/09/10 职场文书
单位未婚证明范本
2014/11/25 职场文书
小学语文复习计划
2015/01/19 职场文书
学习保证书怎么写
2015/02/26 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
企业催款函范本
2015/06/24 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
用python批量解压带密码的压缩包
2021/05/31 Python
简单聊聊Golang中defer预计算参数
2022/03/25 Golang
Python find()、rfind()方法及作用
2022/12/24 Python