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抓taobao图片爬虫
Oct 26 Python
python计算圆周率pi的方法
Jul 11 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
Aug 16 Python
python实现将内容分行输出
Nov 05 Python
深入理解python中的闭包和装饰器
Jun 12 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
python模拟表单提交登录图书馆
Apr 27 Python
Django如何使用redis作为缓存
May 21 Python
在django中实现choices字段获取对应字段值
Jul 12 Python
Python 必须了解的5种高级特征
Sep 10 Python
python 实现图片批量压缩的示例
Dec 18 Python
python基于opencv 实现图像时钟
Jan 04 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批量删除数据
2007/01/18 PHP
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
php sybase_fetch_array使用方法
2014/04/15 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
JavaScript事件列表解说
2006/12/22 Javascript
一个用js实现控制台控件的代码
2007/09/04 Javascript
Jquery 表格合并的问题分享
2011/09/17 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
python中zip和unzip数据的方法
2015/05/27 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
python数据化运营的重要意义
2019/11/25 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
模具专业毕业推荐信
2014/03/08 职场文书
环保倡议书范文
2014/05/12 职场文书
青安岗事迹材料
2014/05/14 职场文书
销售2014年度工作总结
2014/12/08 职场文书
爱心捐款活动总结
2015/05/09 职场文书
员工福利申请报告
2015/05/15 职场文书
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript