网站被入侵,担心被挂马,因此就想自己写个脚本来查找那些被挂马的文件

思路

需要实现准备一份未受感染的源代码和一份可能受感染的源代码,然后运行以下脚本,就能找出到底哪些文件被挂马了。

其中,主要是根据比对2份文件的md5值来过滤可能被挂马的文件(确切的说应该是被修改过的文件)

Python脚本

__author__ = 'Flying'
#coding:utf-8
#Date:2014.6.5
#检测修改过的文件
import os,sys,hashlib,datetime
global_DirOld = ""
global_DirNew = ""
global_FilesList = []
#输入要比对的文件路径
def InputDirPath():
global global_DirOld,global_DirNew
global_DirOld = unicode(raw_input("请输入备份文件所在目录:"),"utf-8")
while not os.path.exists(global_DirOld):
print u"指定的路径不存在,请重新输入"
global_DirOld = unicode(raw_input("请输入备份文件所在目录:"),"utf-8")
global_DirNew = unicode(raw_input("请输入要检测文件的目录:"),"utf-8")
while not os.path.exists(global_DirNew):
print u"指定的路径不存在,请重新输入"
global_DirNew = unicode(raw_input("请输入要检测文件的目录:"),"utf-8") #将数据保存到文件中
def SaveToFile(filePath,content):
try:
f = open(filePath,"a+")
f.write(content.encode("utf-8") + "\n")
f.close()
except Exception,ex:
print "Error:" + str(ex) #计算文件的MD5值
def CalcMD5(filepath):
try:
#以二进制的形式打开
with open(filepath,'rb') as f:
md5obj = hashlib.md5()
md5obj.update(f.read())
hash = md5obj.hexdigest()
return hash
except Exception,ex:
print "Error:" + str(ex)
return None #遍历目录下的所有文件
def GetAllSubFiles():
global global_FilesList
for dir in os.walk(global_DirNew):
for file in dir[2]:
filePath = dir[0] + os.sep + file
global_FilesList.append(filePath[len(global_DirNew)+1:]) #列出新增文件和变动的文件
def ListChangedFiles():
global global_DirOld,global_DirNew,global_FilesList
print u"变动或新增的文件:"
for file in global_FilesList:
filePathOld = global_DirOld + os.sep + file
filePathNew = global_DirNew + os.sep + file
if not os.path.exists(filePathOld) or CalcMD5(filePathOld)!=CalcMD5(filePathNew):
content = "[" + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')+ "]" + filePathNew
print content
SaveToFile("ChangedFiles.txt",content) if __name__=="__main__":
InputDirPath()
GetAllSubFiles()
ListChangedFiles()

脚本执行结果

作      者:曾是土木人

新浪微博:http://weibo.com/cstmr

原文地址:http://www.cnblogs.com/hongfei/p/3769774.html

Python:快速查找出被挂马的文件的更多相关文章

  1. 如何快速找出Linux中的重复文件

    md5sum | sort | uniq -w32 --all-repeated=separate [1]find -not -empty -type f -printf “%s\n” :find是查 ...

  2. python——快速找出两个电子表中数据的差异

    最近刚接触python,找点小任务来练练手,希望自己在实践中不断的锻炼自己解决问题的能力. 公司里会有这样的场景:有一张电子表格的内容由两三个部门或者更多的部门用到,这些员工会在维护这些表格中不定期的 ...

  3. C#快速找出磁盘内的所有文件

    本文只针对NTFS格式化的磁盘文件快速检索,速度不是非常快,是让你震惊. 一般用文件遍历的方法检索一个50G的文件夹需要几十分钟甚至一个小时的时间,而用本方法只需几秒. using System; u ...

  4. python 之 查找某目录中最新的文件

    记录一下这个方法,感觉很有用!>.< import os def find_newest_file(path_file): lists = os.listdir(path_file) li ...

  5. 网站图片挂马检测及PHP与python的图片文件恶意代码检测对比

    前言 周一一早网管收到来自阿里云的一堆警告,发现我们维护的一个网站下有数十个被挂马的文件.网管直接关了vsftpd,然后把警告导出邮件给我们. 取出部分大致如下: 服务器IP/名称 木马文件路径 更新 ...

  6. Android WebView挂马漏洞--各大厂商纷纷落马

    本文章由Jack_Jia编写,转载请注明出处.   文章链接: http://blog.csdn.net/jiazhijun/article/details/11131891 作者:Jack_Jia ...

  7. linux中快速查找文件

    在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区的. 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访 ...

  8. linux下快速查找文件(转载)

    权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/xxmonstor/article/deta ...

  9. 检测网站挂马程序(Python)

    系统管理员通常从svn/git中检索代码,部署站点后通常首先会生成该站点所有文件的MD5值,如果上线后网站页面内容被篡改(如挂马)等,可以比对之前生成MD5值快速查找去那些文件被更改,为了使系统管理员 ...

随机推荐

  1. HDU 1517 A Multiplication Game (SG函数找规律)

    题意:两个玩家玩一个游戏,从 p = 1,开始,然后依次轮流选择一个2 - 9的数乘以 p,问你谁先凑够 p >= n. 析:找规律,我先打了一下SG函数的表,然后就找到规律了 我找到的是: 1 ...

  2. UVaLive 3490 Generator (KMP + DP + Gauss)

    题意:随机字母组成一个串,有一个目标串,当这个由随机字母组成的串出现目标串就停止,求这个随机字母组成串的期望长度. 析:由于只要包含目标串就可以停止,所以可以先把这个串进行处理,也就是KMP,然后dp ...

  3. 安卓修改开机logo

    这里我们是在ubuntu下进行操作我是用root用户登陆的,首先安装netpbm库 执行:apt-get install netpbm 对于Android系统最开始表现logo是在内核当中,所以首先我 ...

  4. 学以致用八---centos7.2 安装vim8+支持python3

    目的:打造基于python的vim环境 也是在地铁上突然产生的一个想法,平时都是在pycharm上练习python,但有时候会提示激活码过期,又得上网找激活码,够折腾的.那何不在linux环境下来搭建 ...

  5. 自己写一个chrome扩展程序 - 右键菜单扩展

    最近在学习Spring,心想dotnet如何实现类似形式呢.于是想认真学习Casetle组件,发现没有书籍!而spring的书多得很.于是只好找网上教程了.发现系统的文章不多.Terrylee好多文章 ...

  6. SSH 等效性问题 总提示输入密码问题

    家目录权限问题 .chmod 700 /home/.. 得到的教训就是没事儿不要乱修改家目录权限,一时方便,可能在别的地方载跟头 ~~ 浪费好许时间 哎

  7. 解决mac安装homebrew后报错-bash: brew: command not found

    解决mac安装homebrew后报错-bash: brew: command not found     参照官网上很简单的一句安装命令, /usr/bin/ruby -e "$(curl ...

  8. zend studio 修改字体大小

    第一步:进入设置窗口    windows -> preferences第二步:进入修改字体的选项卡.    General -> Appearance -> Colors and ...

  9. InvocationHandler中invoke方法中的第一个参数proxy的用途

    最近在研究Java的动态代理时对InvocationHandler中invoke方法中的第一个参数一直不理解它的用处,某度搜索也搜不出结果,最后终于在stackoverflow上找到了答案. 这是原文 ...

  10. 通过端口号查找进程号并杀掉进程window和Linux版本

    window版本: cmd下执行: 1.查找某端口号下的进程: netstat -ano|findstr 8080 如果该端口号存在进程,执行完命令后会出现列表,最后一列的数字表示该端口号下的进程号 ...