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用字典统计单词或汉字词个数示例
Apr 22 Python
浅谈Python中的数据类型
May 05 Python
python机器学习之神经网络(二)
Dec 20 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 Python
python 输入一个数n,求n个数求乘或求和的实例
Nov 13 Python
python:接口间数据传递与调用方法
Dec 17 Python
对python 读取线的shp文件实例详解
Dec 22 Python
Win10+GPU版Pytorch1.1安装的安装步骤
Sep 27 Python
简述 Python 的类和对象
Aug 21 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
Oct 29 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 14 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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 特殊字符处理函数
2008/09/05 PHP
PHP原生函数一定好吗?
2014/12/08 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
如何打开php的gd2库
2017/02/09 PHP
php成功操作redis cluster集群的实例教程
2019/01/13 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
python实现杨辉三角思路
2017/07/14 Python
python 读写中文json的实例详解
2017/10/29 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
python实现梯度下降算法的实例详解
2020/08/17 Python
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
家长写给孩子的评语
2014/04/18 职场文书
职位说明书范文
2014/05/07 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
体育专业求职信
2014/07/16 职场文书
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript