Como listar todas as chaves .plist disponíveis em um determinado aplicativo de domínio pelo comando padrão?


17

Desejo conhecer todas as chaves (lista de propriedades) disponíveis em determinado aplicativo de domínio, como exemplo para listar as chaves disponíveis com.apple.dockdigitando este comando:

$ defaults read com.apple.dock

mas, de alguma forma, a saída desse comando mostrou apenas a chave da lista de propriedades ativas e, no entanto, nem todas as chaves disponíveis com.apple.docklistadas lá.

Alguém pode me ajudar nisso?


Você se importa se eu reformular isso. Você está perguntando sobre a ferramenta que grava mensagens e não sobre como fazer engenharia reversa no programa que lê as mensagens. Por padrão, o programa ignora tudo o que você coloca nos padrões que não esperava ver. Você poderia incorporar shakespeare nas preferências do localizador e, felizmente, isso não faria nada, desde que fosse XML válido válido uma vez gravado no arquivo.
bmike

@ Mike Eu percebo isso. O que me interessava era a lista de valores que o aplicativo realmente utiliza. Eu pensei que poderia haver uma lista completa escondida em algum lugar em um arquivo de configuração principal dentro do Apps.
awesomo

A lista de valores existe apenas no código fonte de cada programa. Você tem um programa em que está interessado? Uma vez compiladas, as chaves de string no binário são codificadas e todas misturadas com as outras strings. Não há nada impedindo o autor de um programa de incluir uma lista, pois ela pode ser facilmente adicionada à pasta Conteúdo / Recursos que existe em qualquer Aplicativo. Na prática, isso não é amplamente feito.
Bmike

Você também pode diferenciar a saída defaults readpara encontrar as chaves para preferências normais ou usar o CFPreferencesCopyValuemétodo em gdb. Consulte Como explorar mais padrões, escrever ajustes no OS X? - Super Usuário .
Lri

Você também pode diferenciar a saída defaults readpara encontrar as chaves para preferências normais, executar seqüências de caracteres nos binários das estruturas ou usar o CFPreferencesCopyValuemétodo no gdb. Consulte Como explorar mais padrões, escrever ajustes no OS X? - Super Usuário .
Lri 26/08/12

Respostas:


7

Esta não é uma tarefa trivial, se bem me lembro, as pessoas executam o stringsutilitário na linha de comando em um Aplicativo e procuram coisas que correspondam a uma estrutura semelhante a com.domain.FeatureName. (com.apple.iTunes, ch.cyberduck.CyberDuck, com.panic.Coda, etc.)

A maneira mais fácil de gerenciar essas substituições é pelo Painel de Preferências do Sistema, com o nome de Segredos . Usando isso, você instala um Painel de Preferências nas Preferências do Sistema e fornece uma interface para escolher um aplicativo e alterar as configurações para sua preferência específica.


Eu adoraria se você também respondesse lá - apple.stackexchange.com/questions/19899/… - strings é a maneira mais amigável de tentar essa engenharia reversa de chaves para os usuários finais.
Bmike


5

Realmente não existe uma noção de chaves "disponíveis". O aplicativo é gratuito para ler as chaves que desejar. A maioria das pessoas descobre chaves padrão "secretas" usando stringso binário do aplicativo para ver quais chaves ele tentará ler.


Sim, é exatamente isso que eu quero encontrar, as chaves padrão "secretas". Você poderia explicar mais sobre a chave "secreta"? É muito útil se houver algum exemplo. Muito obrigado.
Wongacid

11
Muitos exemplos conhecidos estão listados em secrets.blacktree.com
jtbandes

Obrigado!! entre em contato se você tiver outro ótimo link para esse tipo de informação. :-)
wongacid

4

A maioria das pessoas aqui quer fazer tudo através da linha de comando, mas tenho uma sugestão mais prática.

Esses dois programas descritos abaixo listam muitos dos recursos personalizáveis ​​de linha de comando conhecidos dos aplicativos Mac OS X, classificados por aplicativo ou função. A vantagem é que a lista de funções é fornecida para você; você não precisa pesquisar no Google para descobrir quais são as funções e as seqüências de linha de comando necessárias para modificar cada uma.

Existem vários aplicativos comerciais ou freeware que fornecem uma interface gráfica com o usuário listando a maioria das opções de personalização que podem ser modificadas através do Terminal. Para ativar qualquer um desses recursos, usando esses programas que estou descrevendo, você o faz na GUI do aplicativo e não precisa usar a linha de comando. Você não precisa saber nada sobre defaults writeou .plistarquivos.

Dois desses aplicativos são:

TinkerTool

que é grátis e

MacPilot

que acaba de ser atualizado com os novos recursos do Lion e custa US $ 20,00.

Estes são os programas que eu possuo e uso.

Baixe o TinkerTool gratuito e a versão de teste do MacPilot e clique em todas as guias para ver todos os inúmeros recursos que você pode personalizar. Há muitos para listar aqui.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Atualizar

O desenvolvedor Frederik Wiker lançou aplicativos freeware (doações aceitas) para a criação de padrões, personalizações de gravação específicas para Lion e Mountain Lion; muitos deles também funcionam bem para o Mavericks (Mac OS X 10.9).

Faça o download destes e veja quais personalizações estão disponíveis para você.

Tweaks do leão

Ajustes na montanha

insira a descrição da imagem aqui


Obrigado pelas recomendações. Eu aprecio a abordagem alternativa.
awesomo

Você realmente deve aceitar a resposta deste / trigo. São anos-luz à minha frente.
Jason Salaz

3

Talvez uma explicação bastante longa de como as coisas funcionem possa esclarecer a sua pesquisa e de outras pessoas por essas preferências "ocultas".

A maioria dos aplicativos lê seus arquivos de preferência uma vez quando inicia e a defaultsferramenta existe para garantir que os arquivos de preferência sejam uma estrutura válida e não contenham erros de sintaxe. (Ele também permite que o sistema altere como as chaves são armazenadas e as pessoas não precisam conhecer os detalhes da implementação e podem usar o comando defaults para fazer toda a leitura e gravação.)

Os guias de estilo e gramática do idioma inglês garantem que as palavras digitadas aqui sejam significativas para o falante médio de inglês, e a padronização do sistema de padrões define uma estrutura para que todos saibam o que esperar. A formatação da lista de preferências é muito mais rígida e matemática do que uma linguagem humana, mas os conceitos são semelhantes.

O sistema padrão do usuário do Mac OS X é um armazenamento de valores-chave (ou banco de dados, se você preferir).

Você pode escrever qualquer coisa nessas lojas de valores-chave de preferência, um soneto de Shakespeare, números, uma lista de compras. Se o programa for codificado para procurar uma chave específica, ele lerá o valor armazenado. Se não está procurando essa chave - seu valor fica lá não utilizado e não lido.

Isso mostra como saber quais valores um programa específico pode estar procurando ao iniciar. Tudo se resume a você ou saber o valor ou fazer a engenharia reversa do programa.

Existem muitas ferramentas para examinar um programa e tentar descobrir quais seqüências de caracteres (as chaves) estão incorporadas, como stringsdbx / lldb, além de vincular sua própria biblioteca para despejar a estrutura interna de um programa específico.

Na prática, algumas coisas necessárias para o teste são adicionadas dessa maneira "oculta", para que você não possa examinar o painel de preferências do programa e ver esses novos recursos que não estão prontos para uso amplo. De certa forma, não é nada simples obter uma lista abrangente, a menos que o autor desse programa libere o código-fonte ou documente essas configurações publicamente.

Quando você lê o repositório de padrões de um aplicativo em particular - você está apenas lendo o "livro" que foi escrito quando o aplicativo criou seu conjunto padrão ou as configurações fornecidas com o Mac OS X. É por isso que você não recebe os detalhes completos lista de coisas que são realisticamente possíveis de mudar com esse aplicativo.


2

Até onde eu sei, um aplicativo só armazenará uma nova chave se diferir dos padrões, pelo menos é o que meus aplicativos fazem. Isso não é algo que pode ser controlado facilmente, pois faz parte da estrutura de padrões do usuário, pois o aplicativo apenas informa aos padrões do usuário o que ele precisa ser armazenado e cuida do resto. Não acho que as informações que você está procurando sejam facilmente obtidas, infelizmente. Poderia ser bom ter acesso a isso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.