Copiar bytes aleatórios para a área de transferência no OS X


3

Estou trabalhando em um desafio no Over The Wire e não consigo nem superar o primeiro porque não consigo copiar bytes arbitrários para a área de transferência do OS X. Estou tentando usar este comando para copiar os dados para minha área de transferência:

echo -ne "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | pbcopy

Então, corri pbpaste | xxdpara verificar se ele copiava corretamente:

Eu esperava obter esta saída:

00000000: 4141 4141 4141 4141 4141 4141 4141 4141  AAAAAAAAAAAAAAAA
00000010: 4141 4141 efbe adde                      AAAA....

Mas, em vez disso, foi o que foi copiado:

00000000: 4141 4141 4141 4141 4141 4141 4141 4141  AAAAAAAAAAAAAAAA
00000010: 4141 4141 c394 c3a6 e289 a0ef ac81       AAAA..........

Eu tentei usar echo -ne "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | LANG=C pbcopy, LANG=C pbpaste | xxde pbpaste -Prefer txt | xxd, mas não daqueles trabalhou tanto. Como faço para que o OS X não mexa no que estou copiando?

Editar

Acontece que o problema está com pbpaste. Consegui usar o pbpaste para obter a saída correta LANG=MACROMAN pbpaste, mas ainda preciso de uma maneira de fazer isso sem a linha de comando. Então, eu preciso de uma maneira de colar em outras codificações usando cmd+v.

Editar 2

Acontece que o problema é a configuração de codificação de caracteres do iTerm 2. Mudei para Western (Mac OS Roman)e tentei novamente, usando cmd+vpara colar. Eu tenho essa saída, que é muuuito perto:

00000000: 4141 4141 4141 4141 4141 4141 4141 4141  AAAAAAAAAAAAAAAA
00000010: 4141 4141 efbe ad                        AAAA...

Só falta um byte agora! Parece que preciso encontrar uma codificação em que todas as sequências possíveis de bytes sejam válidas. Eu pensei que esse era o caso do Mac OS Roman, mas não parece ser o caso aqui.

Respostas:


1

Tão perto! Eu chequei:

echo -ne "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | xxd

Você tentou:

echo -ne "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | pbcopy
LANG=C pbpaste | xxd

ou

echo -ne "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | pbcopy ; LANG=C pbpaste | xxd

Tudo isso funcionou no Terminal com o OS X El Capitan e o bash. Eu tenho:

0000000: 4141 4141 4141 4141 4141 4141 4141 4141  AAAAAAAAAAAAAAAA
0000010: 4141 4141 efbe adde                      AAAA....

Isso é muito estranho, não está funcionando para mim. Também estou no El Capitan e estou obtendo o mesmo resultado que obtive anteriormente. Eu tentei várias conchas diferentes e clientes de terminal diferentes.
Addison

Estou usando o teclado americano, poderia mudar a ajuda do teclado?
Addison

Ah, eu encontrei este hints.macworld.com/article.php?story=20120114032406552 e, aparentemente, eu precisava usar LANG=MANROMAN pbpaste | xxdpara colá-lo. Mas ainda tenho o problema de não poder colar isso onde quiser. Tem que ser parte de um comando ...
Addison

Alguns shells usam echocomandos internos que não suportam as opções -e ou -n. O shell zsh funciona sem a opção -e. As conchas sh e ksh não funcionam. Espera-se que diferentes aplicativos de terminal se comportem de maneira diferente, e é verdade que você não pode colar em nenhum lugar e preservar os caracteres binários. A configuração de codificação em uso afeta como a área de transferência é interpretada. Cada aplicativo possui seus próprios padrões e configurações. Você já tentou printf "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | xxdcom outras conchas? Teclados não são um problema.
Creidhne

11
Não use pbpastepara colar a área de transferência. Não é o que faz. O pbpastecomando copia a área de transferência para a saída padrão. Cole a área de transferência com Editar-> Colar ou Cmd-V. O aplicativo em que você cola determina como interpretar o conteúdo da área de transferência. Se o aplicativo interpretar a área de transferência como UTF-8, os caracteres binários não serão preservados, mas serão traduzidos para Unicode. Se o aplicativo estiver definido para o Mac OS Roman, os caracteres binários serão (geralmente) preservados. Ajudaria se eu mudasse a resposta para explicar nossos comentários?
Creidhne
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.