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进阶教程之函数对象(函数也是对象)
Aug 30 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
Python中使用多进程来实现并行处理的方法小结
Aug 09 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
Nov 15 Python
Python中join函数简单代码示例
Jan 09 Python
Python入门必须知道的11个知识点
Mar 21 Python
关于python2 csv写入空白行的问题
Jun 22 Python
python实现zabbix发送短信脚本
Sep 17 Python
pandas使用之宽表变窄表的实现
Apr 12 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
Python读取图像并显示灰度图的实现
Dec 01 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
Protoss兵种对照表
2020/03/14 星际争霸
Yii多表联合查询操作详解
2016/06/02 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
php生成无限栏目树
2017/03/16 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
jQuery在iframe中无法弹出对话框的解决方法
2014/01/12 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python程序设计入门(3)数组的使用
2014/06/16 Python
神经网络理论基础及Python实现详解
2017/12/15 Python
python逆向入门教程
2018/01/15 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
用Python实现将一张图片分成9宫格的示例
2019/07/05 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
Python如何将模块打包并发布
2020/08/30 Python
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
春节活动策划方案
2014/01/24 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
辩护词范文大全
2015/05/21 职场文书
2016年会开场白台词
2015/06/01 职场文书
学校体育节班级口号
2015/12/25 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang