È possibile copiare un attributo com.apple.quarantine esistente di un file arbitrario in un file proxy e quindi applicarlo a altri file arbitrari. Se apri determinati tipi di file (ad esempio file .txt), l'attributo di quarantena verrà comunque ignorato.
Esempio:
xattr -p com.apple.quarantine /Users/user/dnscrypt-osxclient-1.0.12.dmg > quarantine.attr
xattr -w com.apple.quarantine "'cat quarantine.attr'" test.command
Questo applicherà i dati raccolti da .dmg al file .command - inclusa la data di download e l'app di download del file dmg originale. Tuttavia, la data di download originale / app di non sarà ripristinata.
Fonte: Uso di xattr per impostare la proprietà di quarantena di Mac OSX
Formato dell'attributo di quarantena:
flag;date;app_name;UUID;
- almeno 0001-0003 viene visualizzata la finestra di dialogo "Vuoi veramente aprire questo file ...", ma 0062 no.
- date (in Unix timestamp esadecimale almeno 00000000-1c000000 sono date sconosciute, una precoce data che funziona è 1d000000: 02 giugno 1985, 05:47:44 GMT)
- app (qualsiasi nome app consentito)
- Un UUID relativo a un download di file che può essere trovato in /Users/user/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 (ovviamente facoltativo)
Quindi utilizzando 0001;55555555;Klanomathiner;
nel file proxy menzionato sopra e applicandolo a un file (nell'esempio test.command) salirà:
o0001;66666666;ACyborgfromthefuture;
Dopoaverapertoilfile,ilprimo"flag" sarà impostato su 0041 e la riapertura non salirà nulla.
Con alcuni bash / SQL-magic potresti persino recuperare l'UUID originale e la data / l'app di download interrogando il nome del file nel database sqlite - che rappresenta il file com.apple.LaunchServices.QuarantineEventsV2 - e ripristinare l'originale attributo di quarantena. Ma sono troppo pigro per disegnarlo ora. Qualcun altro ha già fatto lavoro simile / correlato:
Leggi com.apple.quarantine
/usr/bin/xattr -p com.apple.quarantine "${file}"
Imposta com.apple.quarantine
application="cURL"
date=$(printf %x $(date +%s))
uuid=$(/usr/bin/uuidgen)
/usr/bin/xattr -w com.apple.quarantine "0002;${date};${application};${uuid}" "${file}"
Inserisci UUID nel database
download_url="http://example.com/file.zip"
date=$(($(date +%s) - 978307200))
/usr/bin/sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 "INSERT INTO \"LSQuarantineEvent\" VALUES('${uuid}',${date},NULL,'${application}','${download_url}',NULL,NULL,0,NULL,'${url}',NULL);"
Verifica se UUID esiste nel database
/usr/bin/sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 "SELECT * FROM LSQuarantineEvent WHERE LSQuarantineEventIdentifier == '${uuid}'"