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中的装饰器、闭包和functools的教程
Apr 02 Python
Python守护进程用法实例分析
Jun 04 Python
python根据日期返回星期几的方法
Jul 06 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 Python
对numpy中轴与维度的理解
Apr 18 Python
TensorFlow损失函数专题详解
Apr 26 Python
获取django框架orm query执行的sql语句实现方法分析
Jun 20 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
python随机数分布random均匀分布实例
Nov 27 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 Python
pycharm 实现本地写代码,服务器运行的操作
Jun 08 Python
Django封装交互接口代码
Jul 12 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
PHP HTML代码串截取代码
2008/12/29 PHP
PHP 类型转换函数intval
2009/06/20 PHP
用PHP将数据导入到Foxmail的实现代码
2010/09/05 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
js验证表单第二部分
2006/11/25 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
详解ES6 Fetch API HTTP请求实用指南
2018/11/14 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
vue 根据选择的月份动态展示日期对应的星期几
2021/02/06 Vue.js
Python实现删除文件但保留指定文件
2015/06/21 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
什么是数据抽象
2016/11/26 面试题
教师廉洁自律承诺书
2014/05/26 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
教师工作表现评语
2014/12/31 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js