用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展示动态规则法用以解决重叠子问题的示例
Apr 02 Python
python模块之paramiko实例代码
Jan 31 Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 Python
python实现录音小程序
Oct 26 Python
python实现名片管理系统
Nov 29 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
python爬虫用mongodb的理由
Jul 28 Python
Python 中如何写注释
Aug 28 Python
Pytorch反向传播中的细节-计算梯度时的默认累加操作
Jun 05 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
PHP文件上传主要代码讲解
2013/09/30 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
python发送邮件功能实现代码
2016/07/15 Python
python实现二叉树的遍历
2017/12/11 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
python进阶之自定义可迭代的类
2019/08/20 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
中专自荐信
2013/10/13 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
教师校本培训方案
2014/02/26 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
先进个人推荐材料
2014/12/29 职场文书
2015年除四害工作总结
2015/07/23 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL