一个简单的文件完整性hash验证脚本

#!/usr/bin/env python
# -*- coding: utf- -*- import os
import hashlib
import json #网站目录所有文件列表
path_list=[]
#静态文件可以不做hash效验
White_list=['.js','.jpg','.png','.html','.htm'] def GetFile(path):
for dirpath, dirnames, filenames in os.walk(path):
for dirname in dirnames:
dir=os.path.join(dirpath, dirname)
#print dir
path_list.append(dir)
for filename in filenames:
file=os.path.join(dirpath, filename)
if os.path.splitext(file)[] not in White_list:
#print file
path_list.append(file)
return path_list #使用文件迭代器,循环获取数据
def md5sum(file):
m=hashlib.md5()
if os.path.isfile(file):
f=open(file,'rb')
for line in f:
m.update(line)
f.close
else:
m.update(file)
return (m.hexdigest()) def Get_md5result(webpath):
pathlist=GetFile(webpath)
md5_file={}
for file in pathlist:
md5_file[file]=md5sum(file)
json_data=json.dumps(md5_file)
fileObject = open('result.json', 'w')
fileObject.write(json_data)
fileObject.close() def load_data(json_file):
model={}
with open(json_file,'r') as json_file:
model=json.load(json_file)
return model def Analysis_dicts(dict1,dict2):
keys1 = dict1.keys()
keys2 = dict2.keys()
ret1 = [ i for i in keys1 if i not in keys2]
ret2 = [ i for i in keys2 if i not in keys1]
print u"可能被删除的文件有:"
for i in ret1:
print i
print u"新增的文件有:"
for i in ret2:
print i
print u"可能被篡改的文件有:"
ret3=list((set(keys1).union(set(keys2)))^(set(keys1)^set(keys2)))
for key in ret3:
if key in keys1 and key in keys2:
if dict1[key] == dict2[key]:
pass
else:
print key if __name__ == '__main__': webpath = raw_input("Please enter your web physical path, for example, c:\\wwww]. ").lower()
Get_md5result(webpath)
dict2=load_data("result.json") methodselect= raw_input("[?] Check the integrity of the file: [Y]es or [N]O (Y/N): ").lower()
if methodselect == 'y':
file=raw_input("Please enter the hash file path to be compared: ").lower()
dict1=load_data(file)
Analysis_dicts(dict1,dict2)
elif methodselect == 'n':
exit()

关于我:一个网络安全爱好者,致力于分享原创高质量干货,欢迎关注我的个人微信公众号:Bypass--,浏览更多精彩文章。

文件完整性hash验证demo(python脚本)的更多相关文章

  1. CVS 文件自动移 tag 的 Python 脚本

    CVS 文件自动移 tag 的 Python 脚本 背景 工作中使用的版本管理工具是 CVS,在两次发布中,如果修改的文件比较少,会选择用移 Tag 的方式来生成一个新 Tag 发布.文件比较少的情况 ...

  2. 【Python脚本】Python创建删除文件-----------我的第一个Python脚本

    Python相对C++和Java来说,是解释性语言,非常适合来编写脚本. 很久之前就开始学习Python的语法了,今天写了第一个Python的脚本,来简化我的一些日常工作. 我平时学习的时候喜欢新建一 ...

  3. Python核心笔记:在python文件中如何调用其它python脚本文件,你肯定不会

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:zhujuyu 笔者在自学python的时候遇到了这样一个练习题:将 ...

  4. 使用rdb文件进行redis数据迁移--python脚本

    查找了一些redis迁移的方法,一般做法就是 1. 从源数据库把rdb文件保存,然后传到新的主机上,启动新的redis即可 2. 把新的redis当做源数据库的slave,同步数据 今天开发提了一个测 ...

  5. 文件批量加密重命名--python脚本AND mysql命令行导入数据库

    在考试中学生交上来的报告,需要进行一下文件名加密,这样阅卷老师就不知道是谁的报告了 在百度帮助下,完成了加密和解密脚本, 加密 #!/usr/bin/python # -*- coding: utf- ...

  6. 【原创】控制perl和python脚本执行过程中脚本文件是否关闭的方法

    引子 跟踪perl和python脚本对文件的访问,实际过程中,perl和python解析器在解析完脚本后,直接关闭了 脚本文件,在进程中查询不到是访问文件的脚本文件名称. shell.perl和pyt ...

  7. Ipython Notebook ipynb文件转化为Python脚本

    欢迎关注博主主页,学习python视频资源 方法1. pycharm可以打开 方法2 https://jingyan.baidu.com/article/19192ad8edc736e53e57072 ...

  8. 用 Python脚本生成 Android SALT 扰码

    发布Android 有偿应用时需要随机生成 SALT 扰码夹在文件中,以下是 Python脚本(当然你选择 C/Java/SHELL/Perl 或别的都行) #!/usr/bin/python # F ...

  9. 使用Python脚本批量裁切栅格

    对栅格的裁切,我们通常使用裁切(数据管理-栅格-栅格处理)或按掩膜提取(空间分析-提取分析)来裁切,裁切的矢量要素通常是一个要素图层或Shape文件.如果要进行批量处理,可以使用ToolBox中的批量 ...

随机推荐

  1. OAuth 授权

  2. 【HBase】zookeeper在HBase中的应用

    转自:http://support.huawei.com/ecommunity/bbs/10242721.html Zookeeper在HBase中的应用 HBase部署相对是一个较大的动作,其依赖于 ...

  3. 【转载】Linux命令行常用光标移动快捷键

    声明:下面内容来自:http://www.linuxidc.com/Linux/2016-10/136027.htm, 来源:linux社区  作者:aslongas 我转载于此处,为了作个笔记,方便 ...

  4. C#提供-------AttributeUsage使用

    Assembly(c#中简单说明) Assembly(c#中简单说明) 2008-07-11 00:27 什么是Assembly(程序集)?Assembly是一个包含来程序的名称,版本号,自我描述,文 ...

  5. CI框架 -- 核心文件 之 config.php

    Config:该文件包含CI_Config类,这个类包含启用配置文件来管理的方法 /** * 加载配置文件 * * @param string $file 配置文件名 * @param bool $u ...

  6. js json日期格式转换日期方法

      接收json数据,日期格式为:"\/Date(1414078309687)\/" var value = "/Date(1414078309687)/"; ...

  7. ckeditor4.2.1常用配置

    常用的配置信息都放在根目录的config.js文件中,一些常用的配置项如下: 1.界面语言 //语言 config.language = 'zh-cn'; 2.字体添加中文 //字体 config.f ...

  8. PHP进阶。

    老手段,百度“PHP进阶” 不过,今天运气不错,搜到一个“PHP特级内容讲解”,地址是:http://wenku.baidu.com/course/view/fd8e591b6bd97f192279e ...

  9. unity3d 获取游戏对象详解

    原文地址:http://www.xuanyusong.com/archives/2768 我觉得Unity里面的Transform 和 GameObject就像两个双胞胎兄弟一样,这俩哥们很要好,我能 ...

  10. 【转帖】Linux发行版:CentOS、Ubuntu、RedHat、Android、Tizen、MeeGo

     Linux发行版:CentOS.Ubuntu.RedHat.Android.Tizen.MeeGo作者:阳光岛主 原文在这儿 Linux,最早由Linus Benedict Torvalds在199 ...