Para quem gosta de humor, sudo
pode ser configurado para imprimir uma frase aleatória, mais ou menos ofensiva ou engraçada, em vez de neutra Sorry, try again.
, adicionando a linha abaixo a /etc/sudoers
(usando o comando sudo visudo
, não editando manualmente!):
Defaults insults
aqui estão alguns exemplos:
[sudo] password for bytecommander:
The more you drive -- the dumber you get.
[sudo] password for bytecommander:
I've seen penguins that can type better than that.
[sudo] password for bytecommander:
This mission is too important for me to allow you to jeopardize it.
[sudo] password for bytecommander:
He has fallen in the water!
[sudo] password for bytecommander:
Hold it up to the light --- not a brain in sight!
Agora, apenas por diversão, eu gostaria de ler todas elas, mas inserir senhas erradas o dia todo não é realmente o melhor método (atraso após cada tentativa, apenas 2 mensagens por 3 tentativas, abortar após 3 tentativas, ...).
Então ... onde esses insultos são realmente armazenados? Qualquer arquivo de texto simples que eu possa ler diretamente? Ou seqüências codificadas no código fonte?
Como posso obter uma lista de todas as sudo
mensagens de insulto disponíveis ?
strings /usr/lib/sudo/sudoers.so
strings
não lhe diga se todos os insultos são iguais. A leitura da fonte real pode revelar se certos critérios influenciam a escolha do insulto.Com
podemos procurar que os arquivos do pacote de
sudo
conter a palavradumber
.A única correspondência está no arquivo
/usr/lib/sudo/sudoers.so
. Como é um arquivo binário, usamos ostrings
comando para obter apenas coisas que parecem legíveis por humanos. Como é bastante, canalizamos o resultadoless
:Em
less
podemos usarpara procurar novamente a palavra "idiota". Isso nos leva diretamente aos insultos. Role para cima e para baixo com as teclas do cursor e saia comq
fonte
strings -n10
para reduzir falsos positivos. Consulte também a resposta do @ DigitalTrauma, que usa objcopy para alimentar apenas a.rodata
seçãostrings
, reduzindo novamente o ruído.Lista de todos os insultos
Quando olhamos para todos os insultos, descobrimos um boato interessante: dizer que Brócolis é politicamente correto, mas dizer que Burrito não é. Todos os insultos estão listados abaixo.
ins_2001.h
(Insultos no Space Odyssey de 2001):ins_classic.h
(Sudo original 8 insultos):ins_csops.h
(Insultos de CSOps):ins_goons.h
(Goon Show insultos):O arquivo
insults.h
contém instruções do compilador sobre quais dos insultos acima devem ser incluídos no kernel compilado. De fato, você pode criar seu próprio arquivo de insultos, adicionar o nome a insults.he recompilar para ter mensagens como "O que você é um usuário do ArchLinux?" ou "Não é no Windows que erros são comuns!", etc.Observe o
#ifdef PC_INSULTS
em alguns dos arquivos de insulto. Isso não significa "se você tem um computador pessoal", significa "se você quer ser politicamente correto".fonte
As respostas acima são ótimas para pesquisa offline. Mas estamos online. Então abra a pesquisa de código Debian e tente um dos insultos aqui . Ele imediatamente lhe diz que é no
sudo_1.8.12-1/plugins/sudoers/ins_csops.h
. Isso tem a vantagem de encontrá-lo em qualquer lugar, seja um arquivo de configuração a ser implantado/etc
ou o que for. E como é um arquivo .h, é visível que está na fonte e não em algo que você possa modificar.fonte
Para adicionar às outras respostas, os insultos parecem estar na
.rodata
seção sudoers.so. Você pode usarobjcopy
para restringir um pouco a saída, embora ainda haja muitos falsos positivos:fonte
strings
vez deobjcopy
? :)objcopy | strings
, apenas para digitalizar a.rodata
seção do segmento de texto. O que reduz os falsos positivos é aumentar o comprimento mínimo corda do padrão 4-se a algo como 10:strings -n10
. E tubulação paraless
, nãohead
, IMO. Todos os insultos parecem contíguos, aliás.strings
já estava sendo usado.