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实现哈希表
Feb 07 Python
探寻python多线程ctrl+c退出问题解决方案
Oct 23 Python
python单例模式实例分析
Apr 08 Python
Python版微信红包分配算法
May 04 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 Python
浅谈flask中的before_request与after_request
Jan 20 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
May 11 Python
通过python顺序修改文件名字的方法
Jul 11 Python
aws 通过boto3 python脚本打pach的实现方法
May 10 Python
python logging模块的使用
Sep 07 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
Nov 11 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学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
php生成rss类用法实例
2015/04/14 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
URL地址中的#符号使用说明
2011/02/12 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
Angular2 http jsonp的实例详解
2017/08/31 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
Python中除法使用的注意事项
2014/08/21 Python
python中的编码知识整理汇总
2016/01/26 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
美国环保妈妈、儿童和婴儿用品购物网站:The Tot
2019/11/24 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
NET程序员上机面试题
2015/05/23 面试题
动物科学专业毕业生的自我评价
2013/11/29 职场文书
学校宣传标语
2014/06/18 职场文书
安全生产月宣传标语
2014/10/06 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
2016年公司新年寄语
2015/08/17 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏