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 ZipFile模块详解
Nov 01 Python
简介二分查找算法与相关的Python实现示例
Aug 26 Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
python 判断网络连通的实现方法
Apr 22 Python
终端命令查看TensorFlow版本号及路径的方法
Jun 13 Python
pandas DataFrame 删除重复的行的实现方法
Jan 29 Python
Python OOP类中的几种函数或方法总结
Feb 22 Python
python networkx 根据图的权重画图实现
Jul 10 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
Python使用qrcode二维码库生成二维码方法详解
Feb 17 Python
Python venv虚拟环境配置过程解析
Jul 08 Python
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 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中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
python适合人工智能的理由和优势
2019/06/28 Python
python按比例随机切分数据的实现
2019/07/11 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
python开发前景如何
2020/06/11 Python
详解Python中第三方库Faker
2020/09/25 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
产品开发计划书
2014/04/27 职场文书
党性观念心得体会
2014/09/03 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle
在Docker容器中部署SQL Server
2022/04/11 Servers
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL