1 votos

¿Cómo analizar los valores de los atributos ampliados de los archivos de macOS?

Si descarga un archivo de Internet utilizando Safari, se añadirán algunos atributos ampliados al archivo descargado, entre ellos com.apple.metadata:kMDItemWhereFroms que contiene la URL original de la descarga. En Finder > Get Info el valor de esta tecla se mostrará en De dónde: .

/bin/ls -alh muestra la presencia de atributos ampliados con un @ en la columna de modo y xattr -l filename.zip listará todos los atributos.

Según la xattr para imprimir el valor de un atributo que se puede utilizar:

xattr -p com.apple.metadata:kMDItemWhereFroms filename.zip

# OUTPUT
# com.apple.metadata:kMDItemWhereFroms: bplist00_=https://example.com/filename.zip

Por lo tanto, aunque el contenido sea visible, el valor está en formato binario con una cabecera de bplist00_ .

Intenté analizarlo de la siguiente manera:

xattr -p com.apple.metadata:kMDItemWhereFroms filename.zip > url.plist

# checking the file format:
file url.plist

# OUTPUT:
# url.plist: Apple binary property list

# assuming this should work:
plutil -convert xml1 url.plist

# OUTPUT:
# url.plist: Property List error: Unexpected character b at line 1 / JSON error: 
# JSON text did not start with array or object and option to allow 
# fragments not set. around line 1, column 0.

Intentando analizar el archivo con el ootb de Python plistlib también arroja un error:

import plistlib

with open('url.plist', 'rb') as fi:
    plist = plistlib.load(fi)

# OUTPUT:
# plistlib.InvalidFileException: Invalid file

Desde la salida parece que no es un formato normal plist binario a pesar de que file url.plist afirma que es un Apple binary property list '. ¿Alguna pista sobre cuál es el formato y cómo convertirlo en un valor de texto plano?

4voto

hjdm Puntos 18

Puede imprimirlo en hex y luego ejecutarlo a través de xxd así:

xattr -x -p com.apple.metadata:kMDItemWhereFroms filename.zip | xxd -r -p | plutil -p - 

Si quieres tener otro formato de salida puedes cambiar plutil a algo como:

plutil -convert json -o - -

Ejemplo de salida:

["https:\/\/another.example.com","https:\/\/example.com\/path\/"]

2voto

Richard Marquez Puntos 387

Terminé usando Python como se describe en https://stackoverflow.com/a/33182025/191246

# dependencies:
# pip install xattr biplist

import biplist
import xattr

attrs = xattr.xattr('filename.zip')

print(biplist.readPlistFromString(attrs.get('com.apple.metadata:kMDItemWhereFroms')))

# OUTPUT:
# ['https://example.com/..', 'https://another.example/..']

Con Python el resultado es una lista que se puede manipular e iterar mediante programación.

1voto

benwiggy Puntos 8

Howard Oakley ha creado un editor para atributos extendidos, que puede ser útil para analizar el contenido.

https://eclecticlight.co/xattred-sandstrip-xattr-tools/

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X