用 pikepdf 去除 PDF 的"禁止复制"限制
一、先搞清楚:PDF 加密有两种很多人以为”加密的 PDF”都一样,其实分两种,处理难度天差地别: 类型 英文名 作用 能否去除 打开密码 User Password 不输密码根本打不开 ❌ 难,没密码就得暴力穷举 权限密码 Owner Password 能打开,但禁止复制/打印/编辑 ✅ 容易,几行代码搞定 日常遇到的”能看但不能复制文字”的 PDF,几乎都是第二种。 二、为什么”禁止复制”那么容易去掉这是 PDF 加密设计上的一个根本弱点: PDF 内容是用一个”加密密钥”加密的,而这个密钥本身就存在文件里。 如果设了打开密码,密钥会被密码锁住——没密码算不出密钥,所以打不开(这种才是真加密)。 但”禁止复制”的文件没设打开密码,等于用空密码——任何软件都能直接算出密钥,正常显示内容。 那个”禁止复制”的标志,只是一个写在文件里的”请求”:「请阅读器不要让用户复制」。 关键:这个限制纯靠阅读器自觉遵守,文件本身并没有真正锁住文字。 Adobe、预览这些软件”讲规矩”,看到标志就把复制按钮灰掉而已。 三、pikepdf 怎么去除(就两...
Amazon Bedrock GUARDRAIL 拦截教程
Amazon Bedrock GUARDRAIL 拦截教程 通过 拦截 脱敏 状态 action actionReason outputs 规则内 action detected ✅ 通过/放行 NONE No action. [] —(assessments 空) 无 🔵 只检测 NONE No action. [] NONE true 🔴 拦截 GUARDRAIL_INTERVENED Guardrail blocked. 换成拦截提示 BLOCKED true 🟡 脱敏 GUARDRAIL_INTERVENED Guardrail masked. 敏感词换占位符 ANONYMIZED true 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889...
地铁上耳机被其他人偷偷连了,苹果售后这样说....
半夜近十二点,朋友给我打电话说耳机盒一直在滴滴的响,大概的故事是下班的时候在地铁上耳机被其他人偷偷连接了,然后连接者就半夜一直在尝试查找耳机,吵得他无法入睡。 这让我想起来早些年很多人经常喜欢做的事情,趁着对方不注意找准时机用蓝牙连上,然后把音量调大最大,只是为了听对方“啊”一声。 一副耳机,两个主人跟那个恶作剧不同的是,我这朋友的故事更离奇。他摆弄盒子的时候正好在听歌,所以对方连上的是他的充电盒,却没连上耳机本体。结果就成了:同一副耳机,盒子和耳机分别绑在两个互不相识的账户名下,谁也解不开谁的锁。第二天弹窗干脆直接告诉他——“已被他人绑定”。一副 2024 年 6 月京东自营买的、用了整整两年、天天长在耳朵上的耳机,在地铁里竟然开始了时间循环,变成了”别人的”。 更恶心的地方在于,那个陌生人不光能反复触发”查找”让盒子在他耳边响,还能通过苹果的查找网络看到这副耳机大概出现在哪片区域——也就是说,他在哪上班、住哪个片区,对一个素不相识的人单向透明。倒不是什么电影里的实时追踪小红点,但”被一个陌生人隔空盯着行踪、还能随时骚扰你”这件事本身,万一对方再开个直播,叫做什么千里定位寻耳...
潇洒姐《山洞四律》摘抄和感受
开头识别了几种拖延的典型场景的解法:结构性拖延:要事第一(吃掉那只青蛙) 小事可以随手做,不要先做完美主义拖延: 先做,用外力倒逼自己输出资源松懈型拖延:用兴趣投入战胜生态性拖延(比如在同城里没好好旅游过这种) 以上这些是以上会变成习惯性拖延或者习惯性无助的来源。 四种状态 习得性无助 我事没做,但我人还行 虽然我现在没做,但总有一天 我还是会做的 既然我还是没做,就说明这事不重要,等足够重要的时候我就做了 焦虑的反面是专注和具体。具有摧毁性的原因:外界干扰的控制时长和边界,目标模糊。 山洞四律,是以下四种朴素的行动。 写下:每天有固定时间用于“写下来”的练习,需要使用纸和笔进行传统书写。 具身:每天有固定时间用于肢体上的活动,在练习时使用身体去完成和获得练习体验。 (回到身体,觉察,因为大脑被电子产品长久侵蚀后,早已发生了器质性的变化。 所以通过八段锦和冥想?) 戒屏:每天有一段时间,不观看电子屏幕,不向任何电子屏幕投放注意力。 (注意力回到自身) 做事:全身心投入做人生本阶段最重要或最具意义的事。 (专注,心流) 积极解读是成熟的人和思虑深远的人...
Socket 模拟木马程序笔记(合规demo版)
前几天在看日系图书《网络是怎么连接的》,今天就遇到了 Socket 的问题。算是浏览器连接的最基本的问题。 服务端(控制端)accept() 是一个阻塞方法,等待客户端的连接,有程序连进来就可以使用 socket 发送指令了。 12345678910111213141516171819from socket import *# 1. 创建一个套接字S = socket() # 创建 TCP 套接字对象# 2. 套接字绑定一个端口S.bind(('0.0.0.0', 8888)) # 绑定所有网卡,端口 8888# 3. 开启监听S.listen() # 开始监听传入连接(默认挂起队列 5 个)# 4. 如果木马上线,申请连接后台s, addr = S.accept() # 阻塞等待客户端连接 # 返回新套接字 s 和客户端地址 addr# 设置功能print('1.关机 2.重启&...
CodeX 使用Bedrock 模型
昨天开始 Bedrock 可以使用,而mantle API终于支持了开源LLM以外的模型。这次的Model 是 no-streaming,在Bedrock的 playground 也看不到。 小伙伴提供了一些测试脚本: 123456789101112131415from aws_bedrock_token_generator import provide_tokenfrom openai import OpenAIclient = OpenAI( base_url="https://bedrock-mantle.us-east-2.api.aws/openai/v1", api_key=provide_token(region="us-east-2"),)response = client.responses.create( model="openai.gpt-5.5", input="你是什么模型啊?",)print(response.output_text) 如果你是其他...
文本向量化写到 OpenSearch OSS
先看OpenSearch的KNN索引mappping 12345678910111213141516171819202122232425262728{ "vector-index": { "mappings": { "properties": { "metadata": { "type": "object", "enabled": false }, "text": { "type": "text" }, "vector": { "type": "knn_vector", ...
SAML登陆Amazon Grafana
现在很多古老的系统还是使用SAML协议进行单点登录, 可以使用SAML-tracer抓断言,Chrome 插件https://chromewebstore.google.com/detail/saml-tracer/mpdajninpobndbfcldcmbpnnbhibjmch 对Grafana而言,大概是这几个字段,用户名,显示名字,登陆邮箱,如果需要整组授权,还要把组名映射到role面,SAML登陆可以以人为单位,也可以以整个组为单位,直接映射到SAML的Role,出于方便的目的,我们给到Admin。 SAML那边直接按照这个断言设置就好。
Hexo Sitemap 踩坑复盘:CRC32 哈希碰撞导致重复 URL
现象用 Google Search Console 检查站点收录时,发现 sitemap.xml 里有多组完全相同的 <loc> URL,但 lastmod 不同。比如: 123456789101112<url> <loc>https://blog.no-claw.com/posts/ebd08f3f/</loc> <lastmod>2024-07-02</lastmod></url><url> <loc>https://blog.no-claw.com/posts/ebd08f3f/</loc> <lastmod>2024-07-03</lastmod></url><url> <loc>https://blog.no-claw.com/posts/ebd08f3f/</loc> <lastmod>2024-07-09</lastmod></url&...
五种时间摘抄
只有当人们不再被旧的框架束缚,为自己创造一个天然和自由的环境,才有能力把这个时代巨大的信息冲刷变成养料、阳光和水分,用它们来滋养生活。当你能够对信息进行重新辨别和分类,把旧有、无效的待办事项杀死在脑中,就可以使用这种能力做到你从未做到的事情。到那时,你能够引导和控制无边无际的闪念,并利用它们来实现你的愿景。 成长中最大的成本是战略成本和时间成本,要分清什么是真正的节约,什么是真正的浪费。如果是真正想做的事,就要充满耐心。 不知道从哪里开始,不明白一切是为了什么; 梦想时有时无,目标模糊不清; 间歇性动力丧失,难以持续专注; 虚度大量碎片时间,习惯性拖延; 长期自我怀疑,纠结人生方向; 莫名恐慌焦虑,周期性情绪化; 对恋爱的未来没有期待; 反复开始,最终放弃健身; 长期分不清是懒还是累。 我们太容易被人影响了,但这或许不是我们的错,大概是这个时代独有的智能手机的错,因为我们总是主动和被动地在各种社交媒体上看到别人的生活和工作。看到带来比较,比较带来羡慕和嫉妒,这时候人就没法平静了。 如果说时间可以解决一切问题,那么当下问题的答案会写在未来。让遥远未来的自己审视今天的决定,才能分...
