用Python和MD5实现网站挂马检测程序


Posted in Python onMarch 13, 2014

一、程序测试

# python check_change.py
    Usage: python check_change.py update /home/wwwroot
           python check_change.py check /home/wwwroot
# python check_change.py update /data/www #生成站点的md5值
# echo ' ' > /data/www/sitemap.html #测试清空文件
# rm -rf /data/www/sitemap.xml #测试删除文件
# python check_change.py check /data/www  #查找那些文件被篡改
/data/www/sitemap.xml
/data/www/sitemap.html

二、实现代码如下(check_change.py)
#!/usr/bin/env python
import os,sys,subprocess
def update(path):
    f = open(file,'w')
    for root,dirs,files in os.walk(path):
        for name in files:
            line = os.path.join(root, name)
            (stdin,stderr) = subprocess.Popen(['md5sum',line],stdout=subprocess.PIPE).communicate()
            f.write(stdin)
    f.close()
def check(path):
    f = open(file,'r')
    for line in f:
        check_ok = """echo '%s' | md5sum -c > /dev/null 2>&1""" % line
        #print check_ok
        if not subprocess.call(check_ok, shell = True) == 0:
            abnormal = line.split()
            print abnormal[1]
    f.close()
def Usage():
    print '''
    Usage: python %s update /home/wwwroot
           python %s check /home/wwwroot
    ''' % (sys.argv[0],sys.argv[0])
    sys.exit()
if len(sys.argv) != 3:
    Usage()
file = 'file.key'
model = sys.argv[1]
path = sys.argv[2]
if os.path.exists(path) == False:
    print "\033[;31mThe directory or file does not exist\033[0m"
    sys.exit()
elif model == 'update':
    update(path)
elif model == 'check':
    check(path)
else:
    Usage()
Python 相关文章推荐
基于Python Shell获取hostname和fqdn释疑
Jan 25 Python
Python实现Youku视频批量下载功能
Mar 14 Python
解决Python requests 报错方法集锦
Mar 19 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
python实现单向链表详解
Feb 08 Python
Cython编译python为so 代码加密示例
Dec 23 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
Feb 06 Python
python中tab键是什么意思
Jun 18 Python
tensorflow图像裁剪进行数据增强操作
Jun 30 Python
python装饰器代码深入讲解
Mar 01 Python
Python基础之进程详解
May 21 Python
python操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 #Python
使用Python判断IP地址合法性的方法实例
Mar 13 #Python
Python 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 #Python
详解Python中的__init__和__new__
Mar 12 #Python
python文件和目录操作方法大全(含实例)
Mar 12 #Python
Python 文件读写操作实例详解
Mar 12 #Python
Python 异常处理实例详解
Mar 12 #Python
You might like
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
angular多语言配置详解
2019/05/16 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
Python的垃圾回收机制深入分析
2014/07/16 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
详解Python3中ceil()函数用法
2019/02/19 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
python 如何引入协程和原理分析
2020/11/30 Python
selenium3.0+python之环境搭建的方法步骤
2021/02/01 Python
连锁经营管理专业大学生求职信
2013/10/30 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
十佳少年事迹材料
2014/12/25 职场文书
政协常委会议主持词
2015/07/03 职场文书
大学生党课感想
2015/08/11 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技