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读取mp3中ID3信息的方法
Mar 05 Python
小小聊天室Python代码实现
Aug 17 Python
使用python读取txt文件的内容,并删除重复的行数方法
Apr 18 Python
python之文件读取一行一行的方法
Jul 12 Python
Django进阶之CSRF的解决
Aug 01 Python
Python列表(List)知识点总结
Feb 18 Python
Python zip函数打包元素实例解析
Dec 11 Python
python实现录屏功能(亲测好用)
Mar 02 Python
Python实现查找数据库最接近的数据
Jun 08 Python
分享一个python的aes加密代码
Dec 22 Python
python爬取抖音视频的实例分析
Jan 19 Python
python 指定源路径来解决import问题的操作
Mar 04 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扩展安装方法步骤解析
2020/11/24 PHP
网页自动跳转代码收集
2009/09/27 Javascript
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
ScrollDown的基本操作示例
2013/06/09 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
vue2中filter()的实现代码
2017/07/09 Javascript
JS简单添加元素新节点的方法示例
2018/02/10 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
python实现超简单端口转发的方法
2015/03/13 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
python配置文件写入过程详解
2019/10/19 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
Python grpc超时机制代码示例
2020/09/14 Python
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
日期和时间问题
2015/01/04 面试题
客运企业隐患排查工作方案
2014/06/06 职场文书
社区班子对照检查材料
2014/08/27 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
大学生党员自我批评思想汇报
2014/10/10 职场文书
顶岗实习协议书
2015/01/29 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS
canvas 中如何实现物体的框选
2022/08/05 Javascript