Python实现的检测网站挂马程序


Posted in Python onNovember 30, 2014

系统管理员通常从svn/git中检索代码,部署站点后通常首先会生成该站点所有文件的MD5值,如果上线后网站页面内容被篡改(如挂马)等,可以比对之前生成MD5值快速查找去那些文件被更改,为了使系统管理员第一时间发现,可结合crontab或nagios等工具。

程序测试如下:

# 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 django集成cas验证系统
Jul 14 Python
关于Python面向对象编程的知识点总结
Feb 14 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
Python unittest模块用法实例分析
May 25 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
Aug 20 Python
Python求解正态分布置信区间教程
Nov 20 Python
YUV转为jpg图像的实现
Dec 09 Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
Feb 25 Python
解决jupyter notebook 前面书写后面内容消失的问题
Apr 13 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 Python
Python select及selectors模块概念用法详解
Jun 22 Python
Python实现网站文件的全备份和差异备份
Nov 30 #Python
Python3 能振兴 Python的原因分析
Nov 28 #Python
Python3 正在毁灭 Python的原因分析
Nov 28 #Python
关于你不想知道的所有Python3 unicode特性
Nov 28 #Python
Python 2.7.x 和 3.x 版本的重要区别小结
Nov 28 #Python
用Python编写一个国际象棋AI程序
Nov 28 #Python
Python中给List添加元素的4种方法分享
Nov 28 #Python
You might like
PHP中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
php实现统计邮件大小的方法
2013/08/06 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
php权重计算方法代码分享
2014/01/09 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
原生js实现日历效果
2020/03/02 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
详解如何使用Python编写vim插件
2017/11/28 Python
Python输入二维数组方法
2018/04/13 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
python如何保存文本文件
2020/06/07 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
感恩的演讲稿
2014/05/06 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
宝葫芦的秘密观后感
2015/06/11 职场文书
小学班主任教育随笔
2015/08/15 职场文书
高中物理教学反思
2016/02/19 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server
PYTHON InceptionV3模型的复现详解
2022/05/06 Python