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 09 Python
Python实现爬取知乎神回复简单爬虫代码分享
Jan 04 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
利用Python绘制数据的瀑布图的教程
Apr 07 Python
python实现的简单抽奖系统实例
May 22 Python
Python运维自动化之nginx配置文件对比操作示例
Aug 29 Python
将Django项目部署到CentOs服务器中
Oct 18 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 Python
python 递归调用返回None的问题及解决方法
Mar 16 Python
Python爬虫之Spider类用法简单介绍
Aug 04 Python
python 如何利用argparse解析命令行参数
Sep 11 Python
详解python爬取弹幕与数据分析
Nov 14 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
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
PHP Pear 安装及使用
2009/03/19 PHP
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
php实现的网络相册图片防盗链完美破解方法
2015/07/01 PHP
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
python3监控CentOS磁盘空间脚本
2018/06/21 Python
用Python编写一个简单的CS架构后门的方法
2018/11/20 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
营业员实习自我鉴定
2013/12/07 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
工作鉴定评语
2014/05/04 职场文书
市场营销计划书范文
2015/01/16 职场文书
地雷战观后感
2015/06/09 职场文书
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP
代码解析React中setState同步和异步问题
2021/06/03 Javascript