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中wx将图标显示在右下角的脚本代码
Mar 08 Python
python合并文本文件示例
Feb 07 Python
python实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 Python
python实现的简单文本类游戏实例
Apr 28 Python
Python中的anydbm模版和shelve模版使用指南
Jul 09 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
python实现按关键字筛选日志文件
Dec 24 Python
python 实现表情识别
Nov 21 Python
详解使用python爬取抖音app视频(appium可以操控手机)
Jan 26 Python
pytorch显存一直变大的解决方案
Apr 08 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 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中通过fopen()函数访问远程文件示例
2014/11/18 PHP
教大家制作简单的php日历
2015/11/17 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
JavaScript的parseInt 进制问题
2009/05/07 Javascript
Javascript 模式实例 观察者模式
2009/10/24 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
javascript时间函数大全
2014/06/30 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
2015/03/03 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
python django集成cas验证系统
2014/07/14 Python
Python合并多个装饰器小技巧
2015/04/28 Python
python截取两个单词之间的内容方法
2018/12/25 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
Python如何输出整数
2020/06/07 Python
Python中的面向接口编程示例详解
2021/01/17 Python
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
学校火灾防控方案
2014/06/09 职场文书
公司年终奖分配方案
2014/06/16 职场文书
情人节单身感言
2015/08/03 职场文书
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript