sách gpt4 ai đã đi

Hiểu đầu ra của xattr -p com.apple.quarantine

In lại 作者:行者123 更新时间:2023-12-03 14:13:52 31 4
mua khóa gpt4 Nike

前几天,我正在处理一些具有扩展属性 com.apple.quarantine 的文件。我知道它的用途,但我一直很好奇当你输出它的值时下面的属性意味着什么。

例如。当我输入
xattr -p com.apple.quarantine xmlrpc.php
对于具有上述 xattr 的文件,我得到如下输出:
0083;59b926ad;Safari.app;55847AA4-5562-42A2-89A7-8FAD394B455C
前4位代表什么?即0083谷歌没有提出任何好的东西,我从用户那里找到了一些指南,也试图弄清楚这些数字究竟代表什么。

1 Câu trả lời

您可能已经知道,隔离标志是在代理(浏览器、邮件客户端等)将文件保存到您的计算机时设置的。这是您第一次尝试打开从 Internet 下载的应用程序时出现的警告的原因。

所有这些信息都已存储,并且每个用户都有完整的历史记录。

前 4 位数字是一组我希望在 quarantine.h 中定义的标志,这似乎是 copyfile.c 中包含的私有(private) header ,在 Apple 的开源代码中。

这些标志代表状态,例如文件是否被隔离。

仔分割析,内核扩展 quarantine.kext负责处理这个,在反汇编时,我们可以看到函数 quarantine_get_flags .

这里只是一个反汇编的 kext 片段
nhập mô tả hình ảnh ở đây

注意 xattr 输出的前 4 个标志的格式为 _sscanf(rbx, "%04x;") == 0x1)

这调用 quarantine_get_info .

nhập mô tả hình ảnh ở đây

我们可以在这里看到,flags 表示文件在系统上的各种状态,其中 vfs 是虚拟文件系统,vnode 是文件的基本表示结构。

Đối vớixattr 的其余部分输出,每个用户都有一个本地的sqlite3记录下载的每个项目的数据库。它的位置是

~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2



数据库只有一张表 LSQuarantineEvent .您可以使用 sqlite3 读取所有数据终端中的命令
sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 "select * from LSQuarantineEvent;" 

如果您过滤结果(grep 或替代),您将能够匹配构成 xattr 后半部分的 GUID输出,您将看到有关该特定下载的所有信息,包括负责下载文件的代理,甚至是从中检索文件的 URL。

关于macos - 了解 xattr -p com.apple.quarantine 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46198557/

31 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com