用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 相关文章推荐
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
使用Python实现BT种子和磁力链接的相互转换
Nov 09 Python
用Python写冒泡排序代码
Apr 12 Python
python使用threading.Condition交替打印两个字符
May 07 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
pytorch 可视化feature map的示例代码
Aug 20 Python
django 多数据库及分库实现方式
Apr 01 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
Python实例教程之检索输出月份日历表
Dec 16 Python
教你漂亮打印Pandas DataFrames和Series
May 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
制作美丽的拉花
2021/03/03 冲泡冲煮
怎么在Windows系统中搭建php环境
2013/08/31 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
js字符编码函数区别分析
2011/12/28 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
vue如何判断dom的class
2018/04/26 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
vuex直接赋值的三种方法总结
2018/09/16 Javascript
JavaScript实现拖拽和缩放效果
2020/08/24 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
Python响应对象text属性乱码解决方案
2020/03/31 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
小学生保护环境倡议书
2014/05/15 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
Python必备技巧之字符数据操作详解
2022/03/23 Python
Python正则表达式中flags参数的实例详解
2022/04/01 Python