用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操作时间和日期之asctime()方法的使用
May 22 Python
python异常和文件处理机制详解
Jul 19 Python
Python微信库:itchat的用法详解
Aug 14 Python
python编写Logistic逻辑回归
Dec 30 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
Python错误处理操作示例
Jul 18 Python
一看就懂得Python的math模块
Oct 21 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
Python小白学习爬虫常用请求报头
Jun 03 Python
Keras SGD 随机梯度下降优化器参数设置方式
Jun 19 Python
python包的导入方式总结
Mar 02 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 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查看session内容的函数
2008/08/27 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
php生成xml时添加CDATA标签的方法
2014/10/17 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
js的event详解。
2006/09/06 Javascript
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
vue车牌号校验和银行校验实战
2019/01/23 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
python逐行读取文件内容的三种方法
2014/01/20 Python
Python中暂存上传图片的方法
2015/02/18 Python
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
python随机模块random使用方法详解
2020/02/14 Python
python剪切视频与合并视频的实现
2020/03/03 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
财务管理个人自荐书范文
2013/11/24 职场文书
工作表扬信
2015/01/17 职场文书
公诉意见书范文
2015/06/05 职场文书
校运会新闻稿
2015/07/17 职场文书