文件完整性hash验证demo(python脚本)
一个简单的文件完整性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脚本)的更多相关文章
- CVS 文件自动移 tag 的 Python 脚本
CVS 文件自动移 tag 的 Python 脚本 背景 工作中使用的版本管理工具是 CVS,在两次发布中,如果修改的文件比较少,会选择用移 Tag 的方式来生成一个新 Tag 发布.文件比较少的情况 ...
- 【Python脚本】Python创建删除文件-----------我的第一个Python脚本
Python相对C++和Java来说,是解释性语言,非常适合来编写脚本. 很久之前就开始学习Python的语法了,今天写了第一个Python的脚本,来简化我的一些日常工作. 我平时学习的时候喜欢新建一 ...
- Python核心笔记:在python文件中如何调用其它python脚本文件,你肯定不会
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:zhujuyu 笔者在自学python的时候遇到了这样一个练习题:将 ...
- 使用rdb文件进行redis数据迁移--python脚本
查找了一些redis迁移的方法,一般做法就是 1. 从源数据库把rdb文件保存,然后传到新的主机上,启动新的redis即可 2. 把新的redis当做源数据库的slave,同步数据 今天开发提了一个测 ...
- 文件批量加密重命名--python脚本AND mysql命令行导入数据库
在考试中学生交上来的报告,需要进行一下文件名加密,这样阅卷老师就不知道是谁的报告了 在百度帮助下,完成了加密和解密脚本, 加密 #!/usr/bin/python # -*- coding: utf- ...
- 【原创】控制perl和python脚本执行过程中脚本文件是否关闭的方法
引子 跟踪perl和python脚本对文件的访问,实际过程中,perl和python解析器在解析完脚本后,直接关闭了 脚本文件,在进程中查询不到是访问文件的脚本文件名称. shell.perl和pyt ...
- Ipython Notebook ipynb文件转化为Python脚本
欢迎关注博主主页,学习python视频资源 方法1. pycharm可以打开 方法2 https://jingyan.baidu.com/article/19192ad8edc736e53e57072 ...
- 用 Python脚本生成 Android SALT 扰码
发布Android 有偿应用时需要随机生成 SALT 扰码夹在文件中,以下是 Python脚本(当然你选择 C/Java/SHELL/Perl 或别的都行) #!/usr/bin/python # F ...
- 使用Python脚本批量裁切栅格
对栅格的裁切,我们通常使用裁切(数据管理-栅格-栅格处理)或按掩膜提取(空间分析-提取分析)来裁切,裁切的矢量要素通常是一个要素图层或Shape文件.如果要进行批量处理,可以使用ToolBox中的批量 ...
随机推荐
- 微信小程序——获取元素的宽高等属性
微信小程序里面无法像用jquery一样获取到元素的节点.小程序提供了一个wx.createSelectorQuery()来获取元素的相关信息.官方的文档对于它的用法都已经写的很详细了. 我直接上在项目 ...
- 安卓程序代写 网上程序代写[原]BluetoothServerSocket详解
一. BluetoorhServerSocket简介 1. 继承关系 public final class BluetoothServerSocket extends Object implement ...
- mysql执行带外键的sql文件时出现mysql ERROR 1215 (HY000): Cannot add foreign key constraint的解决
ERROR 1215 (HY000): Cannot add foreign key constraint 最近在建表时遇到了这个错误,然后找了下找到了解决办法,记录下: 本来是要建两张表: 1 2 ...
- 【协议学习】SIP基本场景分析
1.SIP业务基本知识 1.1 业务介绍 会话初始协议(Session Initiation Protocol)是一种信令协议,用于初始.管理和终止网络中的语音和视频会话,具体地说就是用来生成.修改和 ...
- 重点:QObject 的拷贝构造和赋值操作——私有
QObject 中没有提供一个拷贝构造函数和赋值操作符给外界使用,其实拷贝构造和赋值的操作都是已经声明了的,但是它们被使用了Q_DISABLE_COPY () 宏放在了private区域.因此所有继承 ...
- Window7 Cocos2d-x配置开发环境
1.到Cocos2d-x官方网下载最新版,解压后在目录cocos2d-x-2.1.5\tools\project-creator\create_project.py 2.安装Python,到网站htt ...
- 求 pi 的近似值题型汇总
(注:暂时先记录这些问题,后期会持续更新) 一.用格雷戈里公式计算π的近似值,精度要求:最后一项的绝对值小于0.00001 1,用while循环实现 int denominator,flag; dou ...
- ubuntu -- 不输入密码执行sudo
作为ubuntu等桌面系统,默认登录的帐号是没有root权限的,为了提升权限来执行任务,我们一般用到 "sudo+命令" 来执行,但是不难发现我们 一般都要输入密码.那么有没有什么 ...
- 浅析Android Camera开发中的三个尺寸和三种变形 (贡献一个自适配Picturesize和Previewsize的工具类)
转至 (http://blog.csdn.net/yanzi1225627/article/details/17652643) 经常听人问Camera开发中,各种变形问题,今天有空就在此梳理总结下. ...
- js方法传入对象;js方法传入方法;js方法回调 callback
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...