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数据结构之图深度优先和广度优先实例详解
Jul 08 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
python中的协程深入理解
Jun 10 Python
Python整数与Numpy数据溢出问题解决
Sep 11 Python
python二进制读写及特殊码同步实现详解
Oct 11 Python
浅谈Django中的QueryDict元素为数组的坑
Mar 31 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
pycharm 使用anaconda为默认环境的操作
Feb 05 Python
Python操作Excel的学习笔记
Feb 18 Python
Django操作cookie的实现
May 26 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环境搭建最新方法
2006/09/05 PHP
php intval函数用法总结
2019/04/14 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
JavaScript 指导方针
2007/04/05 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
javascript正则表达式总结
2016/02/29 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
Python中Django发送带图片和附件的邮件
2017/03/31 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
什么是python的函数体
2020/06/19 Python
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
工地宣传标语
2014/06/18 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
出国签证在职证明
2014/09/20 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
幼儿学前班评语
2014/12/29 职场文书
公司人力资源管理制度
2015/08/05 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python