XATTR十六进制输出的打印字符串表示(Printing string representation

2019-09-20 08:57发布

我试图写一个脚本使用XATTR,这样我就可以将其重命名,但仍然可以轻松地获得其原来的名称以供参考抽取与Safari浏览器在OS X下载磁盘映像原来的下载网址。

此命令打印给定的文件是从下载的,作为一个例子URL的十六进制表示:

xattr -p com.apple.metadata:kMDItemWhereFroms *.dmg

62 70 6C 69 73 74 30 30 A1 01 5F 10 4F 68 74 74
70 3A 2F 2F 61 64 63 64 6F 77 6E 6C 6F 61 64 2E
61 70 70 6C 65 2E 63 6F 6D 2F 4D 61 63 5F 4F 53
5F 58 2F 6D 61 63 5F 6F 73 5F 78 5F 31 30 2E 36
2E 31 5F 62 75 69 6C 64 5F 31 30 62 35 30 34 2F
30 34 31 35 30 37 33 61 2E 64 6D 67 08 0A 00 00
00 00 00 00 01 01 00 00 00 00 00 00 00 02 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 5C

该URL开始于14字节(如果我能正确计算),并以NULL结束。 我怎样才能让我得到一个字符串格式化输出这个字符串,如下所示:

http://adcdownload.apple.com/Mac_OS_X/mac_os_x_10.6.1_build_10b504/0415073a.dmg

(不用担心,这个链接不起作用,除非你到ADC登录)

...基本上,同样的事情查找将显示获取信息。 我试着管道XATTR的输出XXD,但我不知道如何指定偏移因此字符串开始在正确的地方。

Answer 1:

所以,看由XATTR -p返回的二进制数据后,我意识到,这实际上是一个二进制的plist ......因此“bplist的”在数据的前面。 出于某种原因,之前我没有注意到这一点,但在此,这里的,应该在每一个OS X的工作从10.5到10.8妥善的解决办法。

为了避免重复,我会链接到源,而不是粘贴的: https://github.com/jakepetroules/wherefrom



文章来源: Printing string representations of xattr hex output