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利用pyHook实现监听用户鼠标与键盘事件
Aug 21 Python
python中Apriori算法实现讲解
Dec 10 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
Python实现将数据写入netCDF4中的方法示例
Aug 30 Python
PyCharm配置mongo插件的方法
Nov 30 Python
对python以16进制打印字节数组的方法详解
Jan 24 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
Python分支语句与循环语句应用实例分析
May 07 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
Django实现发送邮件功能
Jul 18 Python
python Django框架实现web端分页呈现数据
Oct 31 Python
Python pandas求方差和标准差的方法实例
Aug 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把数字转成人民币大写的函数分享
2014/06/30 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
jQuery MD5加密实现代码
2010/03/15 Javascript
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
js实现购物车功能
2018/06/12 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
pandas分批读取大数据集教程
2020/06/06 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
手机配件第一品牌:ZAGG
2017/05/28 全球购物
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
计算机通信专业推荐信
2014/02/22 职场文书
节约用水演讲稿
2014/05/21 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
世界环境日活动总结
2015/02/11 职场文书
以权谋私检举信范文
2015/03/02 职场文书
信访工作个人总结
2015/03/03 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python