一个简单的文件完整性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. Java中的Set与List 的关系与区别

    两个接口都是继承自Collection. List (inteface) 次序是List 的最重要特点,它确保维护元素特定的顺序. --ArrayList 允许对元素快速随机访问. --LinkedL ...

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

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

  3. export Jar from eclipse (总结)

    sourceforge 的源码网址 :https://sourceforge.net/projects/fjep/files/fatjar/ <span style="margin:0 ...

  4. CentOS 6.8 安装 RabbitMQ

    放上来做个备份. 1.下载RabbitMQ http://www.rabbitmq.com/download.html 选择 RHEL/CentOS 6.x 下载即可. 或者 http://www.r ...

  5. 读《像计算机科学家一样思考python》——笔记

    这本书,完全是入门级的,特别简单,一天多就看完. 目录: 第二章 变量.表达式和语句 第三章: 函数调用 第四章: 案例研究:接口设计 第五章 条件与递归 第六章:有返回值的函数 第七章 迭代 第八章 ...

  6. Java中的Swing及AWT又称GUI编程

    Java中的Swing及AWT又称GUI编程. 关于学习Java要不要学Swing及AWT,这个完全取决于个人的开发及发展方向. 如果从事web方向的开发,则可以不用学习Swing及AWT. 如果从事 ...

  7. 关于sdl_ttf使用字体库加载失败的问题

    今天同事拿着前期阶段开发的视频绘图库给另外一个同事的电脑上测试,结果发现老是出现打开字体库失败,但从打印的日志信息看,路径下确实存在字体库啊,这是什么原因? 于是没办法,搬到自己本级上再测试下,从他机 ...

  8. CI框架 -- 核心文件 之 Common.php

    system/core/Common.php 文件中可以定义 公共函数,我们可以在这里定义自己的公共函数.在任何情况下你都能够使用这些函数.使用他们不需要载入任何类库或辅助函数. 接下来分析下该文件中 ...

  9. 理解并实现PubSub模式

    假如我们正在构建一个类似于 Google Docs 的应用程序,当用户按下一个按键时,需要做的事情有很多: 新字符显示到屏幕上:插入点向后移动:将本次动作加入到撤销的历史记录中: 保持与服务器同步:拼 ...

  10. unity3d Start执行不同时问题

    1.一个Scene的场景里有许多的GameObject,很多GameObject上绑定了Script,每个Script上又都有Start函数 using UnityEngine; using Syst ...