用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 08 Python
详解python 注释、变量、类型
Aug 10 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
一看就懂得Python的math模块
Oct 21 Python
Linux下远程连接Jupyter+pyspark部署教程
Jun 21 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
Django文件存储 默认存储系统解析
Aug 02 Python
pytorch numpy list类型之间的相互转换实例
Aug 18 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
使用opencv中匹配点对的坐标提取方式
Jun 04 Python
python regex库实例用法总结
Jan 03 Python
python playwrigh框架入门安装使用
Jul 23 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 preg_replace替换实例讲解
2013/11/04 PHP
Zend Guard使用指南及问题处理
2015/01/07 PHP
php实现的xml操作类
2016/01/15 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
canvas实现图片根据滑块放大缩小效果
2017/02/24 Javascript
详解angular element()方法使用
2017/04/08 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
python使用多线程不断刷新网页的方法
2015/03/31 Python
Python中List.index()方法的使用教程
2015/05/20 Python
Python实现的用户登录系统功能示例
2018/02/05 Python
高效使用Python字典的清单
2018/04/04 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
Python多继承原理与用法示例
2018/08/23 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
django 模版关闭转义方式
2020/05/14 Python
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
护士毕业实习感言
2014/03/05 职场文书
《画家乡》教学反思
2014/04/22 职场文书
企业安全生产承诺书
2014/05/22 职场文书
法人委托书范本
2014/09/15 职场文书
营销经理工作检讨书
2014/11/03 职场文书
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android