用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 30 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
Eclipse中Python开发环境搭建简单教程
Mar 23 Python
python 获取文件下所有文件或目录os.walk()的实例
Apr 23 Python
python数字图像处理之高级形态学处理
Apr 27 Python
python实现简单淘宝秒杀功能
May 03 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 Python
python写程序统计词频的方法
Jul 29 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
Python 防止死锁的方法
Jul 29 Python
pandas 数据类型转换的实现
Dec 29 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边学边教》(01.开篇――准备工作)
2006/12/13 PHP
php 读取文件乱码问题
2010/02/20 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
js查找父节点的简单方法
2008/06/28 Javascript
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
JS实现移动端触屏拖拽功能
2018/07/31 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
vue.js编译时给生成的文件增加版本号
2018/09/17 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
python k-近邻算法实例分享
2014/06/11 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
python实现linux下抓包并存库功能
2018/07/18 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
哈理工毕业生的求职信
2013/12/22 职场文书
创意活动策划书
2014/01/15 职场文书
2014升学宴答谢词
2014/01/26 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
建筑工地质量标语
2014/06/12 职场文书
齐云山导游词
2015/02/06 职场文书
Java Spring读取和存储详细操作
2022/08/05 Java/Android