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使用PythonMagick将jpg图片转换成ico图片的方法
Mar 26 Python
python使用sorted函数对列表进行排序的方法
Apr 04 Python
Python迭代和迭代器详解
Nov 10 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
python调用摄像头显示图像的实例
Aug 03 Python
Window 64位下python3.6.2环境搭建图文教程
Sep 19 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
python实现单链表的方法示例
Sep 03 Python
pandas的相关系数与协方差实例
Dec 27 Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 Python
keras中的History对象用法
Jun 19 Python
Python3.10的一些新特性原理分析
Sep 15 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
后宫无数却洁身自好的男主,唐三只爱小舞
2020/03/02 国漫
PHP 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
python批量修改文件后缀示例代码分享
2013/12/24 Python
python 全文检索引擎详解
2017/04/25 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
简单了解Django项目应用创建过程
2020/07/06 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
应届毕业生求职自荐书
2014/01/03 职场文书
公司担保书范文
2014/05/21 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers
GO中sync包自由控制并发示例详解
2022/08/05 Golang