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中的对象,方法,类,实例,函数用法分析
Jan 15 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
Aug 15 Python
python中将函数赋值给变量时需要注意的一些问题
Aug 18 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
python使用tkinter实现简单计算器
Jan 30 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
在python 中实现运行多条shell命令
Jan 07 Python
Python获取统计自己的qq群成员信息的方法
Nov 15 Python
python利用 keyboard 库记录键盘事件
Oct 16 Python
Python基于staticmethod装饰器标示静态方法
Oct 17 Python
python爬虫基础之urllib的使用
Dec 31 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
PHP环境搭建最新方法
2006/09/05 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
JS动画效果代码3
2008/04/03 Javascript
JavaScript面象对象设计
2008/04/28 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中无限元素列表的实现方法
2014/08/18 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
Python unittest单元测试框架总结
2018/09/08 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
车辆转让协议书
2014/04/15 职场文书
银行职员自我鉴定
2014/04/20 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
2015年银行工作总结范文
2015/04/01 职场文书