.DS_Store 解剖器

你以为它是垃圾,其实它悄悄记下了你文件夹里每一个文件的名字。

动手实验 本地解析 真实漏洞
抱着文件名清单的鬼祟小幽灵吉祥物

喂它一个 .DS_Store

挑一个预设场景,或把你电脑里的真实 .DS_Store 拖进来。文件不上传服务器,全程在你的浏览器里解析。

文件不上传服务器。所有解析在你的浏览器本地完成,断网也能用。
把真实的 .DS_Store 拖到这里,或点击选择
macOS 上每个被 Finder 打开过的文件夹都可能藏着一份
0
个文件名被这个文件悄悄记下
--

原始字节

前若干行十六进制,高亮处是魔数 Bud1

      

还原出的文件名

泄露现场

某网站根目录的 .DS_Store 被误传到了公网。点「开始扫描」,看看攻击者能从里面枚举出什么。

黑客透过泄露的 .DS_Store 清单窥探服务器隐藏文件
attacker@victim:~$
$ curl -s https://victim.example/.DS_Store | ./dsstore_scan
[*] 正在解析 B-tree 节点...
[+] 解析完成,发现 0 个条目,开始枚举:

怎么防住它

.DS_Store 本身不是恶意软件,问题出在「跟着项目一起被传到不该去的地方」。几条习惯就能堵住。

写进 .gitignore

项目根目录的 .gitignore 里加上 .DS_Store 和 **/.DS_Store,从源头避免误提交。

部署前清理

打包/同步到生产服务器前,过滤掉所有 .DS_Store。rsync 用 --exclude='.DS_Store'。

加 CI 检查

在 CI 流水线里加一步扫描,发现 .DS_Store 立即报警并阻断发布,别让人肉记忆背锅。

关闭网络卷写入

macOS 终端执行 defaults write com.apple.desktopservices DSDontWriteNetworkStores true,让 Finder 不再往网络/移动卷写 .DS_Store。