Python通过PyPDF2给pdf加密,权限分析

前两天做了一个通过python里面的加密,如果想给pdf添加指定的权限,而不是全部锁死活着全部放开,这种就比较复杂。PyPDF2的官方文档里面,针对权限做了说明,其实就是使用二进制占位符进行权限判断的。

   通过官方文档可以了解到,pdf一共通过32位的二进制进行权限判断,具体每个字段的意思如下:

上面的文档分别表示每个二进制的对应的意思,

1~2: 是指定字段,必须是0,这两个字段不需要操作

3: 打印权限

4: 表示除 6/9/11 位编辑功能以外的其他编辑功能,可以理解为 二级制第6/9/11 也是负责编辑的权限,只不过是编辑的权限范围不同,除了6/9/11三个之外的其他编辑权限,由第四位二进制控制(说实话,具体有权限,我也不太清除了)

5: 复制权限

6: 添加或修改文本注释,填写交互式表单字段,如果还设置了位4,则创建或修改交互式表单字段(纯百度翻译), 这里面就结合了第四个二进制权限设置

7~9:必须是1 ,不知道为啥

9:(第3版或更高版本)填写现有的交互式表单字段(包括签名字段),即使第6位是明确的(春百度翻译)

10:(第3版或更高版本)提取文本和图形(支持残疾用户访问或用于其他目的)

11: (第3版或更高版本)组装文档(插入、旋转或删除页面并创建书签或缩略图),即使是第4位这很清楚。

12: (第3版或更高版本)将文档打印到可以生成PDF内容的忠实数字副本。当该位清除(且设置了位3)时,打印仅限于外观的低级别表示,可能质量降低。

剩下的是: 全部都是1

剩下的权限就很好控制了

默认的全部密码授权的,是-3904对应二进制是: 1111 1111 1111 1111 1111 0000 1100 0000

从右往左,依次对应上面的权限,如果想开启对应的权限,则在指定的位置上,将0设置为1,然后在倒推出十进制,就可以了,如:

-3900: 只允许打印,其他的都不允许 1111 1111 1111 1111 1111 0000 1100 0100 重点看第三位

-3888: 允许复制,其他不允许 1111 1111 1111 1111 1111 0000 1101 0000 重点看第五位

-3884: 允许复制打印,其他不允许 1111 1111 1111 1111 1111 0000 1101 0100 看第三位和第五位

依次倒推其他权限即可

由于英语很烂,上面都是自己理解的,有不对的地方,还请指教

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值