python开发--文件敏感信息识别
0x00 背景
文档中敏感信息识别。不限于word, pdf 等文件格式中的敏感信息及其中的图片敏感信息识别。
0x01 识别原理
以word文档为例
.docx文件有很多种结构,这些结构在python-docx中用3种不同的类型来表示:最高一层是Document对象表示文档,每个Document对象包含一个Paragraph 对象也就是段落组成的列表,而每个Paragraph对象则包含一个Run对象的列表
一个Run对象是具有相同格式的文本,当发生变化的时候就需要一个新的Run对象
个人觉得读取全部文档信息,然后用正则匹配效率比较高。
word 或 pdf 里面有图片的情况,涉及到数字图像处理技术。(图片里的敏感信息)
0x02 实现
用到一个库 python-docx
#!pip install python-docx - -userimport docx
import osprint(os.getcwd())
file = docx.Document("test.docx")
''' # test.docx #经测试,还得是个docx文档,doc不行
Test数据匹配数据TestTest 敏感信息
'''
print("打印文件行数:" + str(len(file.paragraphs)))
print("打印第1行: " + file.paragraphs[0].text)
print("打印第1行长度: " + str(len(file.paragraphs[0].runs)))
print("打印第3行长度: " + str(len(file.paragraphs[2].runs)))
print("打印第5行长度: " + str(len(file.paragraphs[4].runs)))
print("打印第7行长度: " + str(len(file.paragraphs[6].runs))) # 空格注意for i in range(2):print(file.paragraphs[0].runs[i].text) # 只有len 2print("----------")for i in range(3):print(file.paragraphs[6].runs[i].text) # 只有len 3/4print("----------")# 看样子是根据大小写等样式来区分段落的def getText(fileName):doc = docx.Document(fileName)TextList = []for paragraph in doc.paragraphs:TextList.append(paragraph.text)return '\n'.join(TextList)fileName = r'test.docx'
print(getText(fileName))
test.docx 内容如下:
Test数据匹配数据TestTest 敏感信息
我在不同的电脑打印每一行长度有些不同,不清楚是否跟word版本以及word
版本内置的字体有关。而且只支持docx,暂不支持doc。
打印结果如下:
打印文件行数:7
打印第1行: Test 数据
打印第1行长度: 2
打印第3行长度: 1
打印第5行长度: 1
打印第7行长度: 3
Test
数据
----------
T
est
敏感信息
----------
Test数据匹配数据TestTest 敏感信息
而在专业版word上执行结果是 :
打印第1行长度: 2
打印第3行长度: 1
打印第5行长度: 2
打印第7行长度: 4
细节问题暂没时间深究,猜测和系统默认字体有关,理由是在pycharm打开docx文档默认字体不同,一个是英文字体,一个是等线字体。
0x03 reference
【数据安全】一文读懂数据内容识别核心技术 – 绿盟科技技术博客
了解基于确切数据匹配的敏感信息类型 | Microsoft Learn -- 微软EDM敏感信息识别
python使用docx模块读写docx文件的方法与docx模块常用方法_docx.document_癫疯时刻的博客-CSDN博客
用Python读写Word文档入门-腾讯云开发者社区-腾讯云
python解析并读取PDF文件:函数总结_pypdf读取章节内容_满腹的小不甘的博客-CSDN博客
0x04 后记
python 识别pdf 中敏感信息见 reference 里的链接。python 识别pdf 推荐 pdfminer3k 或 pdfplumber 两个库。
由于时间关系本文写的略简洁,,敏感图片识别也没有介绍到,后续如果有时间会继续修改完善本文。
相关文章:
python开发--文件敏感信息识别
0x00 背景 文档中敏感信息识别。不限于word, pdf 等文件格式中的敏感信息及其中的图片敏感信息识别。 0x01 识别原理 以word文档为例 .docx文件有很多种结构,这些结构在python-docx中用3种不同的类型来表示:最高一层是Document对象表示文档࿰…...
【力扣】746. 使用最小花费爬楼梯 <动态规划>
【力扣】746. 使用最小花费爬楼梯 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶…...
sftp命令 添加端口(亲测)
要在sftp命令中指定端口,请使用以下语法: sftp -oPort<port_number> <username><host> 其中,<port_number>是你要连接的SFTP服务器的端口号,<username>是登录SFTP服务器所使用的用户名࿰…...
Redis.conf详解
Redis.conf详解 配置文件unit单位对大小写不敏感 包含 网络 bind 127.0.0.1 # 绑定的ip protected-mode yes # 保护模式 port 6379 # 端口设置通用 GENERAL daemonize yes # 以守护进程的方式运行 默认为no pidfile /var/run/redis_6379.pid #如果以后台的方式运行ÿ…...
【论文笔记】Planning and Decision-Making for Autonomous Vehicles
文章目录 Summary1. INTRODUCTION2. MOTION PLANNING AND CONTROL2.1. Vehicle Dynamics and Control2.2. Parallel Autonomy2.3. Motion Planning for Autonomous Vehicles 3. INTEGRATED PERCEPTION AND PLANNING3.1. From Classical Perception to Current Challenges in Ne…...
视频云存储/安防监控EasyCVR视频汇聚平台接入GB国标设备时,无法显示通道信息该如何解决?
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...
git中,add到暂存区,commit且push之后,暂存区域里还有内容吗
在Git中,使用git add命令将更改添加到暂存区后,提交这些更改并将其推送(push)到远程仓库后,暂存区中的内容会被清空。 具体的流程如下: 使用git add命令将更改添加到暂存区。这样,暂存区将保存…...
java中用SXSSFWorkbook把多个字段的list数据和单个实体dto导出到excel如何导出到多个sheet页详细实例?
要使用SXSSFWorkbook将多个字段的List数据和单个实体DTO导出到多个Sheet页,你可以按照以下步骤进行操作: 创建一个SXSSFWorkbook对象作为工作簿。针对每个字段的List数据,创建一个新的Sheet页,并将数据写入该Sheet页。创建一个新…...
ES基础操作
1.创建索引 在 Postman 中,向 ES 服务器发 PUT 请求 : http://127.0.0.1:9200/shopping 后台日志 重复发送 PUT 请求添加索引 : http://127.0.0.1:9200/shopping ,会返回错误信息 : 2.获取单个索引相关信息 在 Postman 中&#…...
PCIE超高速实时运动控制卡在六面外观视觉检测上的应用
市场应用背景 XPCIE1028超高速实时运动控制卡在六面外观检测高速视觉筛选中的应用,结合正运动技术提供的专用筛选机调试软件,可实现15000pcs/分钟的IO触发检测速度,只需简单参数设置,搭配图像采集硬件和视觉处理软件,…...
ctfshow web入门 php特性 web108-web112
1.web108 strrev() 反转字符串 <?php echo strrev("Hello world!"); // 输出 "!dlrow olleH" ?> ereg 存在空字符截断(只会匹配%00前面的字符),这个函数匹配到为true,没有匹配到为false,877为0x36d的十进制数值 payload: …...
数据可视化是什么?有什么工具?
一、什么是数据可视化? 数据可视化是一种通过图表、图形、地图和其他视觉元素将数据呈现给用户的方式。它是将复杂的数据转化为易于理解和解释的视觉形式的过程。数据可视化旨在帮助用户发现数据中的模式、趋势和关联,并从中获得洞察力。 数据可视化的…...
PC端版面设计之尾部设计
1、莫拉王子,底部就放了一个返回顶部 2 麻辣王子就放了一个认证--放了产地和得到的奖 3 阿芙:就是精油 4阿芙放的是品牌故事 5 这里可以做微博粉丝群体 6 基本返回底部是一个标配,点一下就可以反悔了 7 加一下旺旺店铺 8 BetyBoop的底部 9 底部 10 返回底…...
neo4jd3拓扑节点显示为节点标签(自定义节点显示)
需求描述:如下图所示,我的拓扑图中有需要不同类型的标签节点,我希望每个节点中显示的是节点的标签 在官方示例中,我们可以看到,节点里面是可以显示图标的,现在我们想将下面的图标换成我们自定义的内容 那…...
网络安全(黑客)了解学习路线
谈起黑客,可能各位都会想到:盗号,其实不尽然;黑客是一群喜爱研究技术的群体,在黑客圈中,一般分为三大圈:娱乐圈 技术圈 职业圈。 娱乐圈:主要是初中生和高中生较多,玩网恋…...
【CSS】CSS 特性 ( CSS 优先级 | 优先级引入 | 选择器基本权重 )
一、CSS 优先级 1、优先级引入 定义 CSS 样式时 , 可能出现 多个 类型相同的 规则 定义在 同一个元素上 , 如果 CSS 选择器 相同 , 执行 CSS 层叠性 , 根据 就近原则 选择执行的样式 , 如 : 出现两个 div 标签选择器 , 都设置 color 文本颜色 ; <style>div {color: re…...
Linux Shell 搜索命令 grep
grep 是一个强大的文本搜索工具,用于在文件或标准输入中查找匹配指定模式的行。 它的基本语法是: grep [options] pattern [file...]其中,pattern 是要搜索的模式,可以是普通字符串或使用正则表达式表示的模式。file 是要被搜索…...
【C进阶】指针(一)
大家好,我是深鱼~ 【前言】: 指针的主题,在初阶指针章节已经接触过了,我们知道了指针的概念: 1.指针就是个变量,用来存放地址,地址的唯一标识一块内存空间(指针变量)&a…...
bug复刻,解决方案---在改变div层级关系时,导致传参失败
问题描述: 在优化页面时,为了实现网页顶部遮挡效果(内容滚动,顶部导航栏不随着一起滚动,并且覆盖),做法是将内容都放在一个div里面,为这个新的div设置样式,margin-top w…...
2023年Java核心技术面试第九篇(篇篇万字精讲)
目录 十七 . 并发相关基础概念 17.1 线程安全 17.2 保证线程安全的两个方法 17.2.1 封装 17.2.2 不可变 17.2.2.1 final 和 immutable解释 17.3 线程安全的基本特性 17.3.1 原子性(Atomicity) 17.3.2 可见性(Visibility) 17.3.3 有…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
