用Python和MD5实现网站挂马检测程序


Posted in Python onMarch 13, 2014

一、程序测试

# 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 内置字符串处理函数的使用方法
Jun 11 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Python实现多条件筛选目标数据功能【测试可用】
Jun 13 Python
python实现RabbitMQ的消息队列的示例代码
Nov 08 Python
Python2与Python3的区别实例分析
Apr 11 Python
Python日志无延迟实时写入的示例
Jul 11 Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 Python
python 中 .py文件 转 .pyd文件的操作
Mar 04 Python
python操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 #Python
使用Python判断IP地址合法性的方法实例
Mar 13 #Python
Python 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 #Python
详解Python中的__init__和__new__
Mar 12 #Python
python文件和目录操作方法大全(含实例)
Mar 12 #Python
Python 文件读写操作实例详解
Mar 12 #Python
Python 异常处理实例详解
Mar 12 #Python
You might like
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
php dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
简单使用webpack打包文件的实现
2019/10/29 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
使用Django和Python创建Json response的方法
2018/03/26 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
FFrpc python客户端lib使用解析
2019/08/24 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
python同时遍历两个list用法说明
2020/05/02 Python
Python与C/C++的相互调用案例
2021/03/04 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
淘宝网店营销策划书
2014/01/11 职场文书
文明宿舍获奖感言
2014/02/07 职场文书
社区食品安全实施方案
2014/03/28 职场文书
小学二年级学生评语
2014/04/21 职场文书
销售个人求职信范文
2014/04/28 职场文书
大学学生会竞选稿
2015/11/19 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书