用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常用内置函数总结
Feb 08 Python
Python的Django框架中的select_related函数对QuerySet 查询的优化
Apr 01 Python
编写Python脚本来获取mp3文件tag信息的教程
May 04 Python
python3中int(整型)的使用教程
Mar 23 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
详解flask入门模板引擎
Jul 18 Python
基于wxPython的GUI实现输入对话框(2)
Feb 27 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
利用Python实现某OA系统的自动定位功能
May 27 Python
想学画画?python满足你!
Dec 24 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
在Thinkphp中使用ajax实现无刷新分页的方法
2016/10/25 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
PHP中“=>
2019/03/01 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
JS上传图片前实现图片预览效果的方法
2015/03/02 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
由浅入深剖析Angular表单验证
2016/07/14 Javascript
loading动画特效小结
2017/01/22 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
python实现的阳历转阴历(农历)算法
2014/04/25 Python
python常见数制转换实例分析
2015/05/09 Python
Python正则表达式完全指南
2017/05/25 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
python 同时读取多个文件的例子
2019/07/16 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
CSS3轻松实现清新 Loading 效果的简单实例
2016/06/06 HTML / CSS
普天C++笔试题
2016/03/20 面试题
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
年终考核实施方案
2014/05/26 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
Js类的构建与继承案例详解
2021/09/15 Javascript