用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下载FTP上的文件夹的实现代码
Feb 10 Python
python实现12306火车票查询器
Apr 20 Python
Python中几种导入模块的方式总结
Apr 27 Python
使用Python从零开始撸一个区块链
Mar 14 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
Django获取应用下的所有models的例子
Aug 30 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 Python
Django+Nginx+uWSGI 定时任务的实现方法
Jan 22 Python
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 28 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 set_error_handler()函数使用详解(示例)
2013/11/12 PHP
PHP生成随机密码类分享
2014/06/25 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
浅谈javascript的数据类型检测
2010/07/10 Javascript
JS trim去空格的最佳实践
2011/10/30 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
深入理解Django的中间件middleware
2018/03/14 Python
详解python里的命名规范
2018/07/16 Python
Python如何获取文件指定行的内容
2020/05/27 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
自我评价的正确写法
2013/09/19 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
2015年度物流工作总结
2015/04/30 职场文书
python数字图像处理:图像简单滤波
2022/06/28 Python