¿Cómo enumerar todas las claves .plist disponibles en una determinada aplicación de dominio mediante el comando predeterminado?

Quiero saber todas las claves (lista de propiedades) que están disponibles en cierta aplicación de dominio, como ejemplo, podría enumerar las claves disponibles com.apple.dockingresando este comando:

$ defaults read com.apple.dock

pero de alguna manera, la salida de este comando solo mostró la clave de la lista de propiedades activa y, sin embargo, no todas las claves disponibles para la com.apple.docklista allí.

Alguien me puede ayudar en esto?

¿Te importa si reformulo esto? Está preguntando sobre la herramienta que escribe mensajes y no sobre cómo aplicar ingeniería inversa al programa que lee los mensajes. Por defecto, el programa ignora todo lo que pones en los valores predeterminados que no esperaba ver. Podría incrustar shakespeare en las preferencias del buscador y felizmente no haría nada siempre que fuera un plist XML válido una vez escrito en el archivo.
@bmike Me doy cuenta de esto. Lo que me interesaba era la lista de valores que utiliza realmente la aplicación. Pensé que podría haber una lista completa escondida en algún lugar de un archivo de configuración principal dentro de Aplicaciones.
La lista de valores solo existe en el código fuente de cada programa. ¿Tienes algún programa que te interese? Una vez que se compilan, las claves de cadena en el binario se codifican y se mezclan con las otras cadenas. No hay nada que impida que el autor de un Programa incluya una lista, ya que podría agregarse fácilmente a la carpeta Contenidos/Recursos que existe en cualquier Aplicación determinada. En la práctica, esto no se hace mucho.
También puede diferenciar la salida de defaults readpara encontrar las claves para las preferencias normales o usar el CFPreferencesCopyValuemétodo en gdb. Consulte ¿Cómo explorar más ajustes de escritura predeterminados en OS X? - Súper usuario .
También puede diferenciar la salida de defaults readpara encontrar las claves para las preferencias normales, ejecutar cadenas en los binarios de los marcos o usar el CFPreferencesCopyValuemétodo en gdb. Consulte ¿Cómo explorar más ajustes de escritura predeterminados en OS X? - Súper usuario .

Respuestas (6)

Esta no es una tarea trivial, si no recuerdo mal, las personas ejecutan la stringsutilidad en la línea de comandos contra una aplicación y buscan cosas que coincidan con una estructura similar a com.domain.FeatureName. (com.apple.iTunes, ch.cyberduck.CyberDuck, com.panic.Coda, etc.)

Probablemente, la forma más fácil de administrar estas anulaciones es mediante un Panel de Preferencias del Sistema con el nombre de Secretos . El uso de esto instala un Panel de preferencias en las Preferencias del sistema y le brinda una interfaz para elegir una aplicación y cambiar su configuración a su preferencia particular.

Me encantaría que también respondieras esto allí - apple.stackexchange.com/questions/19899/… - strings es la forma más amigable de intentar esta ingeniería inversa de claves para los usuarios finales.

Encontré un sitio web dedicado a estos comandos de escritura predeterminados de Mac OS X, algunos comandos útiles para Mac OS X Lion y Mountain Lion.

http://www.defaults-write.com

Realmente no hay una noción de claves "disponibles". La aplicación es libre de leer las teclas que quiera. La mayoría de las personas descubren las claves predeterminadas "secretas" utilizando stringspara mirar a través del binario de la aplicación para ver qué claves intentará leer.

sí, esto es exactamente lo que quiero encontrar, claves predeterminadas "secretas". ¿Podría explicar más sobre la clave "secreta"? Es muy útil si hay algún ejemplo. Muchísimas gracias.
Muchos ejemplos bien conocidos se enumeran en secrets.blacktree.com
¡¡Gracias!! avíseme si tiene algún otro enlace excelente sobre este tipo de información. :-)

La mayoría de la gente aquí quiere hacer todo a través de la línea de comandos, pero tengo una sugerencia más práctica.

Estos dos programas que se describen a continuación enumeran una gran cantidad de funciones personalizables de línea de comandos conocidas de las aplicaciones de Mac OS X, ordenadas por aplicación o función. La ventaja es que se le proporciona la lista de funciones; no tienes que buscar en Google para saber cuáles son las funciones y las secuencias de línea de comandos necesarias para modificar cada una.

Existen varias aplicaciones gratuitas o comerciales que proporcionan una interfaz gráfica de usuario que enumera la mayoría de las opciones de personalización que se pueden modificar a través de la Terminal. Para activar cualquiera de estas características, usando estos programas que estoy describiendo, lo hace dentro de la GUI de la aplicación y no necesita usar la línea de comando en absoluto. No es necesario saber nada acerca de defaults writeo .plistarchivos.

Dos de estas aplicaciones son:

TinkerTool

que es gratis y

MacPilot

que se acaba de actualizar con nuevas características de Lion y cuesta US $ 20.00.

Estos son programas que poseo y uso.

Descargue la TinkerTool gratuita y la versión de prueba de MacPilot y haga clic en todas las pestañas para ver todas las funciones que puede personalizar. Hay demasiados para enumerarlos aquí.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Actualizar

El desarrollador Frederik Wiker ha lanzado aplicaciones gratuitas (se aceptan donaciones) para crear personalizaciones de escritura predeterminadas específicas para Lion y Mountain Lion; muchos de ellos también funcionan bien para Mavericks (Mac OS X 10.9).

Descárguelos y vea qué personalizaciones están disponibles para usted.

Ajustes de león

Ajustes de montaña

ingrese la descripción de la imagen aquí

Gracias por las recomendaciones. Aprecio el enfoque alternativo.
Realmente deberías aceptar esta respuesta de Wheat. Está a años luz del mío.

Tal vez una explicación bastante larga de cómo funcionan las cosas podría aclarar su búsqueda y la de otros de estas preferencias "ocultas".

La mayoría de las aplicaciones leerán sus archivos de preferencias una vez cuando se inicien y la defaultsherramienta existe para garantizar que los archivos de preferencias tengan una estructura válida y no contengan errores de sintaxis. (También permite que el sistema cambie la forma en que se almacenan las claves y las personas no tienen que conocer los detalles de implementación y pueden usar el comando predeterminado para leer y escribir).

Las guías de estilo y gramática del idioma inglés aseguran que las palabras que escribo aquí sean significativas para el hablante de inglés promedio, y la estandarización del sistema predeterminado establece un marco para que todos sepan qué esperar. El formato de la lista de preferencias es mucho más rígido y matemático que un lenguaje humano, pero los conceptos son similares.

El sistema predeterminado de usuario de Mac OS X es un almacén de valores clave (o una base de datos, si lo prefiere).

Puede escribir cualquier cosa en estas tiendas de valor clave de preferencia, un soneto de Shakespeare, números, una lista de compras. Si el programa está codificado para buscar una clave específica, leerá el valor almacenado. Si no está buscando esa clave, su valor se encuentra allí sin usar y sin leer.

Esto muestra cómo saber qué valores podría estar buscando un programa específico cuando se inicia. Todo se reduce a que debe conocer el valor o aplicar ingeniería inversa al programa.

Existen muchas herramientas para buscar en un programa y tratar de averiguar qué cadenas (las claves) están incrustadas, como stringsy dbx/lldb, así como enlaces en su propia biblioteca para volcar la estructura interna de un programa específico.

En la práctica, algunas cosas que se necesitan para las pruebas se agregan de esta manera "oculta" para que no pueda mirar el panel de preferencias del programa y ver estas nuevas funciones que no están listas para un uso generalizado. En cierto modo, no es nada sencillo obtener una lista completa a menos que el autor de ese programa publique el código fuente o documente estas configuraciones públicamente.

Cuando lee la tienda predeterminada para una aplicación en particular, solo está leyendo el "libro" que se escribió cuando la aplicación creó su conjunto predeterminado o la configuración que se envió con Mac OS X. Es por eso que no recibe el exhaustivo lista de cosas que son realmente posibles de cambiar con esa aplicación.

Hasta donde sé, una aplicación solo almacenará una nueva clave si difiere de sus valores predeterminados, al menos eso es lo que hacen mis aplicaciones.

Esto no es algo que pueda controlarse fácilmente, ya que es parte del User Defaultsmarco, ya que la aplicación solo le dice al usuario de forma predeterminada qué debe almacenarse y se encarga del resto.

Lamentablemente, no creo que la información que está buscando se obtenga fácilmente. Sin embargo, podría ser bueno tener acceso a esto.