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中用Spark模块的使用教程
Apr 13 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
Feb 22 Python
python 设置输出图像的像素大小方法
Jul 04 Python
Python中的四种交换数值的方法解析
Nov 18 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
Python流程控制语句的深入讲解
Jun 15 Python
python字典key不能是可以是啥类型
Aug 04 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
Python 高级库15 个让新手爱不释手(推荐)
May 15 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 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处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
ExtJS中设置下拉列表框不可编辑的方法
2014/05/07 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
Django验证码的生成与使用示例
2017/05/20 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
Python异常处理机制结构实例解析
2020/07/23 Python
室内设计专业个人的自我评价
2013/10/19 职场文书
四年大学自我鉴定
2014/02/17 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL
如何利用golang运用mysql数据库
2022/03/13 Golang
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android