用Python和MD5实现网站挂马检测程序
# 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小程序
S = Sum(Ai * Wi), i=0,.......16 (现在的身份证号码都是18位长,其中最后一位是校验位,15位的身份证号码好像不用了) Ai对应身份证号码,Wi则为用于加权计算的值,它一串固定的数值,应该是根据某种规则得出的吧,用于取得最好的随机性,Wi的取之如下: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 经过加权计算之后,得到一个S,用这个S去模11,取余值,然后查表得到校验位,这个索引表如下: 0 ---
-
Python的加密模块md5、sha、crypt使用实例
MD5(Message-Digest Algorithm 5) 模块用于计算信息密文(信息摘要),得出一个128位的密文.sha模块跟md5相似,但生成的是160位的签名.使用方法是相同的. 如下实例是使用md5的: 复制代码 代码如下: # /usr/bin/python # -*- coding:utf-8 -*- import base64 try: import hashlib hash = hashlib.md5() except ImportError: #
-
Python中使用md5sum检查目录中相同文件代码分享
复制代码 代码如下: """This module contains code from Think Python by Allen B. Downey http://thinkpython.com Copyright 2012 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ import os def walk(dirname): &
-
Python MD5文件生成码
import md5 import sys def sumfile(fobj): m = md5.new() while True: d = fobj.read(8096) if not d: break m.update(d) return m.hexdigest() def md5sum(fname): if fname == '-': ret = sumfile(sys.stdin) else: try: f = file(fname, 'rb') except: return 'Fail
-
利用Python生成文件md5校验值函数的方法
前言 在linux有个命令叫做md5sum,能生成文件的md5值,一般情况下都会将结果记录到一个文件中用于校验使用,比如会这样使用: [crazyant@localhost PythonMd5]$ more sample_file www.crazyant.net www.51projob.com [crazyant@localhost PythonMd5]$ md5sum sample_file > sample_file.md5file [crazyant@localhost PythonM
-
python和shell实现的校验IP地址合法性脚本分享
一.python校验IP地址合法性 执行效果: python代码: 复制代码 代码如下: [root@yang python]# vi check_ip.py #!/usr/bin/python import os,sys def check_ip(ipaddr): import sys addr=ipaddr.strip().split('.') #切割IP地址为一个列表 #print addr if len(addr) !=
-
Python使用MD5加密字符串示例
Python加密模块有好几个,但无论是哪种加密方式都需要先导入相应的加密模块然后再使用模块对字符串加密. 先导入md5加密所需模块: 复制代码 代码如下: import hashlib 创建md5对象 复制代码 代码如下: m = hashlib.md5() 生成加密串,其中 password 是要加密的字符串 复制代码 代码如下: m.update('password') 获取加密串 复制代码 代码如下: psw = m.hexdigest() 输出 复制代码 代码如下: print psw
-
python文件的md5加密方法
本文实例讲述了python文件的md5加密方法.分享给大家供大家参考,具体如下: 简单模式: from hashlib import md5 def md5_file(name): m = md5() a_file = open(name, 'rb') #需要使用二进制格式读取文件内容 m.update(a_file.read()) a_file.close() return m.hexdigest() if __main__ == '__init__': print md5_file('d:/
-
用Python和MD5实现网站挂马检测程序
一.程序测试 复制代码 代码如下: # 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
-
Python实现的检测网站挂马程序
系统管理员通常从svn/git中检索代码,部署站点后通常首先会生成该站点所有文件的MD5值,如果上线后网站页面内容被篡改(如挂马)等,可以比对之前生成MD5值快速查找去那些文件被更改,为了使系统管理员第一时间发现,可结合crontab或nagios等工具. 程序测试如下: # python check_change.py Usage: python check_change.py update /home/wwwroot python check_change.py check /home/ww
-
Python实例分享:快速查找出被挂马的文件
思路 需要实现准备一份未受感染的源代码和一份可能受感染的源代码,然后运行以下脚本,就能找出到底哪些文件被挂马了. 其中,主要是根据比对2份文件的md5值来过滤可能被挂马的文件(确切的说应该是被修改过的文件) Python脚本 复制代码 代码如下: __author__ = 'Flying'#coding:utf-8#Date:2014.6.5#检测修改过的文件import os,sys,hashlib,datetimeglobal_DirOld = ""global_DirNew =
-
让McAfee来终结网站被挂马的时代图文教程
很多站长因为使用网上不常见的程序,有漏洞得不到补丁:而自己又没有编程能力无法修复或者干脆不知道漏洞在那里,被挂马后恢复程序结果不久又被挂--还有很多人即使使用的是应用比较广泛的程序,但也可能因为没及时打上补丁或出了漏洞官方还未发现而被挂马. 老是被挂也不是个事.怎么才能彻底杜绝被挂马呢?让程序完美,没有任何漏洞?这个可能性好象接近于0.我们只能从其他的地方想办法. 首先来看一下马是怎么挂上去的.首先,"黑客"会找到一个漏洞,然后利用这个漏洞上传一个后门程序上去以取得WEBSHELL,这
-
用expression的一行代码解决iframe挂马的问题
(包含服务器端注入.客户端ARP注入等)IE Only--一般只有IE害怕iframe这样的挂马,所以灵儿就拿IE开刀. 在阅读本文之前,我们先了解一下expression: IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和JavaScript脚本关联起来,这里的CSS属性可以是元素固有的属性,也可以是自定义属性.就是说CSS属性后面可以是一段JavaScript表达式,CSS属性的值等于Javascript表达式执行的结果.在表达式中可以直接引用元素自身的属性和方法
-
阻止网页挂马的若干工具小集合
那么,除了在Web开发的时候注意以外,有什么有效的工具可以对抗SQL注入攻击? 今天,微软和惠普的安全部门合作发布了三个工具,分别是: 微软SQL注入攻击源码扫描器:Microsoft Source Code Analyzer for SQL Injection (MSCASI).这个工具给网站开发人员使用.是一个静态扫描ASP代码的工具,可以查找发现第一类和第二类的SQL注入攻击漏洞.工具下载地址: http://support.microsoft.com/kb/954476 惠普的 Scra
-
最新的无权限挂马方式
还有在国外的一些机器上,什么权限都拿到了也不知道他怎么弄的,什么都不让写,好不容易写个文件没一会又改回去了,真的让人很!#$%%#%^#%^,据说就有一种软件能监视重要的文件,一旦发现更改就会给恢复过去,譬如他监视web目录的话我们就不能更改他网站的任何内容了.不过,看了很多大虾的文章,自己也略微研究了下,也总算琢磨点东西出来,不用写任何文件就可以实现将别人的页面涂改和大家经常传说的挂马等等后果,这里就给大家介绍下,那些只知道勤快的管理员也要小心了! 大家知道,我们浏览网站的时候都是服务器将信息
-
挂马代码 网页挂马分析
如今网民上网可算是提心吊胆,面对病毒,也许杀毒软件还能防止一二,但如果遇到网页中挂马行为,甚至直接将用户当前机所安装的杀毒软件直接强行关闭,那么其后果是不言而喻的.如今的网页有马行为也不像以前那么单一,甚至不出现下载提示,直接从后台开始下载运行其马,然后秘密的收集用户信息并返溃到恶意者手中. 网马危害 如果一台正常的网络服务器被恶意用户入侵,其网页被挂马,在一定程度上可以说是网页被篡改,其危害是巨大的,随着用户访问流量的增多,会造成此马的传播性越发增大,由于其隐蔽性比较强,导至很
-
记一次Centos服务器被挂马的抓马经历
今天早上五点,收到监控宝的警告短信,说是网站M无法访问了.睡的正香,再说网站所在系统是centos,重要数据每天都备份,应该很安全,也没有在意.倒头接着睡觉去了. 早上九点,机房负责人直接给我打来电话,说是全机房网络巨慢,单位的所有网站都打不开或打开的很慢.Centos服务器被挂马的一次抓马经历. 我赶紧赶了过去,查看了一下那里网络,发现175服务总是以50M/S速度向外发包,而175服务器正是网站M所在的服务器. 果断SSH连接175服务器,发现175服务器连接也很慢,连上之后top一下,查看
-
预防网页挂马的方法总结
预防网页挂马的方法总结: 在网站优化设计当中,检测网页木马也是很重要的一项工作,目前流行的网站被黑,是在相应的asp,htm,js等文件中,插入以js调用方式的.本文主要介绍网页挂马的工作原理及种类.常见方式.执行方式.如何检测网页是否被挂马.如何清除网页木马.如何防止网页被挂马. 1:网页挂马工作原理的种类. (1)工作原理: 作为网页挂马的散布者,其目的是将木马下载到用户本地,并进一步执行,当木马获得执行之后,就意味着会有更多的木马被下载,进一步被执行,进入一个恶性的循环,从而使用户的电脑遭
随机推荐
- 字符集和字符编码(Charset & Encoding)
- 手工注射JSP学习
- JS 对输入框进行限制(常用的都有)
- asp.net清空Cookie的两种方法
- 探讨php中遍历二维数组的几种方法详解
- Php中文件下载功能实现超详细流程分析
- C++实现二叉树非递归遍历方法实例总结
- 《JavaScript高级编程》学习笔记之object和array引用类型
- 一个的简易文本编辑器源码
- 详解require.js配置路径的用法和css的引入
- VBScript开发自动化测试脚本的方法分析
- 基于NodeJS的前后端分离的思考与实践(二)模版探索
- Mongoose经常返回e11000 error的原因分析
- 浅谈java中Math.random()与java.util.random()的区别
- Android使用多线程进行网络聊天室通信
- C# Winform多屏幕多显示器编程技巧实例
- 从网上搜到的phpwind 0day的代码
- 数字奥运引发建站热 主机市场供求两旺
- 腾讯、百度、华为、搜狗和滴滴Android面试题汇总
- 了解javascript中变量及函数的提升