¿Dónde se almacenan los insultos de sudo?

234

Para aquellos a quienes les gusta el humor, sudose puede configurar para imprimir una frase aleatoria más o menos insultante o divertida en lugar de la neutral Sorry, try again.agregando la siguiente línea a /etc/sudoers(¡usando el comando sudo visudo, no editando manualmente!):

Defaults insults

Aquí hay unos ejemplos:

[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!

Ahora, solo por diversión, me gustaría leerlos todos, pero ingresar contraseñas incorrectas todo el día no es realmente el mejor método (demora después de cada intento, solo 2 mensajes por 3 intentos, abortar después de 3 intentos, ...).

Entonces ... ¿dónde están realmente almacenados estos insultos? ¿Algún archivo de texto sin formato que pueda leer directamente? ¿O cadenas codificadas en el código fuente?

¿Cómo puedo obtener una lista de todos los sudomensajes de insulto disponibles ?

Byte Commander
fuente

Respuestas:

181

Están en el archivo binario

/usr/lib/sudo/sudoers.so

(encontrado por: find /usr/lib/sudo -type f | xargs grep "fallen in the water")

Si habilitas descargas de origen y haces

apt source sudo

Puede encontrar los archivos de insultos en el directorio de origen en

plugins/sudoers

Los archivos son

ins_2001.h
ins_classic.h
ins_csops.h
ins_goons.h
insults.h

Ejemplo de cómo se ven estos archivos:

#ifndef SUDOERS_INS_GOONS_H
#define SUDOERS_INS_GOONS_H

/*
 * Insults from the "Goon Show."
 */

    "You silly, twisted boy you.",
    "He has fallen in the water!",
    "We'll all be murdered in our beds!",
    "You can't come in. Our tiger has got flu",

y así sucesivamente ... son bastante legibles.

Zanna
fuente
24
Ahora que Zanna nos dice que están en sudoers.so, también puedes "leerlos" usando cadenas en lugar del código fuente. Ejecute esto: strings /usr/lib/sudo/sudoers.so
Stéphane
3
@ Stéphane Eso es cierto, aunque stringsno te dirá si todos los insultos son iguales. Leer la fuente real podría revelar si ciertos criterios influyen en la elección del insulto.
Kasperd
3
@ Stéphane Plus ejecutando cadenas en un ejecutable produce una cantidad tediosamente grande de falsos positivos.
MariusMatutiae
77
En realidad, no iba a hacer esto hasta que vi los insultos de Goon Show, momento en el que no pude
escribir
77

Con

dpkg -L sudo | xargs grep dumber

podemos buscar qué archivos del paquete sudocontienen la palabra dumber.

La única coincidencia está en el archivo /usr/lib/sudo/sudoers.so. Este es un archivo binario, por lo que usamos el stringscomando para obtener solo cosas que parecen legibles para los humanos. Como es mucho, canalizamos el resultado en less:

strings /usr/lib/sudo/sudoers.so | less

En lesspodemos usar

/dumber

para buscar nuevamente la palabra "más tonto". Eso nos lleva directamente a los insultos. Desplácese hacia arriba y hacia abajo con las teclas del cursor y salga conq

Florian Diesch
fuente
66
Votado por mostrar una técnica general fácil para descubrir la respuesta a este tipo de preguntas.
200_success
1
Úselo strings -n10para reducir los falsos positivos. Vea también la respuesta de @ DigitalTrauma que usa objcopy para alimentar solo la .rodatasección strings, nuevamente reduciendo el ruido.
Peter Cordes
76

Lista de todos los insultos

Cuando observamos todos los insultos, descubrimos un dato interesante: decir que el brócoli es políticamente correcto, pero que Burrito no lo es. Todos los insultos se enumeran a continuación.

ins_2001.h (Insultos de Space Odyssey 2001):

.
    /*
     * HAL insults (paraphrased) from 2001.
     */

    "Just what do you think you're doing Dave?",
    "It can only be attributed to human error.",
    "That's something I cannot allow to happen.",
    "My mind is going. I can feel it.",
    "Sorry about this, I know it's a bit silly.",
    "Take a stress pill and think things over.",
    "This mission is too important for me to allow you to jeopardize it.",
    "I feel much better now.",

ins_classic.h (Insultos originales de Sudo 8):

    /*
     * Insults from the original sudo(8).
     */

    "Wrong!  You cheating scum!",
#ifdef PC_INSULTS
    "And you call yourself a Rocket Scientist!",
#else
    "No soap, honkie-lips.",
#endif
    "Where did you learn to type?",
    "Are you on drugs?",
    "My pet ferret can type better than you!",
    "You type like i drive.",
    "Do you think like you type?",
    "Your mind just hasn't been the same since the electro-shock, has it?",

ins_csops.h (Insultos de CSOps):

    /*
     * CSOps insults (may be site dependent).
     */

    "Maybe if you used more than just two fingers...",
    "BOB says:  You seem to have forgotten your passwd, enter another!",
    "stty: unknown mode: doofus",
    "I can't hear you -- I'm using the scrambler.",
    "The more you drive -- the dumber you get.",
#ifdef PC_INSULTS
    "Listen, broccoli brains, I don't have time to listen to this trash.",
#else
    "Listen, burrito brains, I don't have time to listen to this trash.",
#endif
    "I've seen penguins that can type better than that.",
    "Have you considered trying to match wits with a rutabaga?",
    "You speak an infinite deal of nothing",

ins_goons.h (Goon Mostrar insultos):

.
    /*
     * Insults from the "Goon Show."
     */

    "You silly, twisted boy you.",
    "He has fallen in the water!",
    "We'll all be murdered in our beds!",
    "You can't come in. Our tiger has got flu",
    "I don't wish to know that.",
    "What, what, what, what, what, what, what, what, what, what?",
    "You can't get the wood, you know.",
    "You'll starve!",
    "... and it used to be so popular...",
    "Pauses for audience applause, not a sausage",
    "Hold it up to the light --- not a brain in sight!",
    "Have a gorilla...",
    "There must be cure for it!",
    "There's a lot of it about, you know.",
    "You do that again and see what happens...",
    "Ying Tong Iddle I Po",
    "Harm can come to a young lad like that!",
    "And with that remarks folks, the case of the Crown vs yourself was proven.",
    "Speak English you fool --- there are no subtitles in this scene.",
    "You gotta go owwwww!",
    "I have been called worse.",
    "It's only your word against mine.",
    "I think ... err ... I think ... I think I'll go home",

El archivo insults.hcontiene instrucciones del compilador sobre cuáles de los insultos anteriores incluir en el núcleo compilado. De hecho, podría crear su propio archivo de insultos, agregar el nombre a insults.h y volver a compilar para tener mensajes como "¿Qué, es un usuario de ArchLinux?" o "¡Esto no es Windows donde los errores son comunes!", etc.

Observe el #ifdef PC_INSULTSen algunos de los archivos de insulto. Esto no significa "si tiene una computadora personal" significa "si quiere ser políticamente correcto".

WinEunuuchs2Unix
fuente
47
No tenía idea de que el "brócoli" se considerara más políticamente correcto que el "burrito".
esponjoso
99
@fluffy Supongo que es una referencia a las personas cuya dieta nacional incluye burritos. Ahora lamento no haber censurado el código. Debería haber usado solo las opciones PC_INSULT y haber eliminado la otra mitad. Por otro lado, no me gusta la censura de la historia como ha sucedido con Tom Sawyer y libros como ese. Como estos insultos son de 2004, sería culpable de censurar la historia si hubiera eliminado las secciones #ifdef.
WinEunuuchs2Unix
77
No se preocupe demasiado por "censurar el historial" cuando hable sobre los términos que deberíamos usar ahora. Puedo pensar en muchas palabras que usé hace 40 años que eran racialmente insultantes, sexistas, etc. Estoy feliz de referirme a ellas en su contexto histórico, pero gracias a Dios, la sociedad ha avanzado y reconocido el daño en muchos de estos términos. . Sí, por favor, despójate de lo políticamente correcto si quieres. Intenta estar en una minoría pobre lastimada por las palabras primero, por favor.
Michael Durrant
44
La corrección de la PC no tiene fin. Cualquier palabra puede considerarse ofensiva, y el brócoli no sería PC en Perú, por ejemplo ... Burrito es un insulto racial evidente.
Shautieh
17
La mayoría de las personas fuera de los Estados Unidos y probablemente algunas personas en los Estados Unidos no verían esto como "un insulto racial evidente". Para mí, es curioso que quien escribió esta lista de insultos deliberados (¡ese es el nombre de la función!) Realmente se preocupara de que personas específicas se sintieran realmente ofendidas ... no tiene fin, y si realmente le preocupa, no habilite esta función ...?!
Ríe el
11

Las respuestas anteriores son excelentes para la búsqueda sin conexión. Pero estamos en línea. Así que abre la búsqueda de código de Debian y prueba uno de los insultos aquí . Instantáneamente te dice que está adentro sudo_1.8.12-1/plugins/sudoers/ins_csops.h. Esto tiene la ventaja de encontrarlo en todas partes, ya sea un archivo de configuración para implementar /etco lo que sea. Y dado que es un archivo .h, es visible, está en la fuente y no es algo que pueda modificar.

chx
fuente
7

Para agregar a las otras respuestas, los insultos parecen estar en la .rodatasección de sudoers.so. Puede usar objcopypara restringir un poco la salida, aunque todavía habrá muchos falsos positivos:

$ objcopy /usr/lib/sudo/sudoers.so /dev/null --dump-section .rodata=/dev/stdout | strings | head
/build/sudo-g3ghsu/sudo-1.8.16/plugins/sudoers/auth/sudo_auth.c
invalid authentication methods
Invalid authentication methods compiled into sudo!  You may not mix standalone and non-standalone authentication.
There are no authentication methods compiled into sudo!  If you want to turn off authentication, use the --disable-authentication configure option.
Unable to initialize authentication methods.
Just what do you think you're doing Dave?
It can only be attributed to human error.
That's something I cannot allow to happen.
My mind is going. I can feel it.
Sorry about this, I know it's a bit silly.
$ 
Trauma digital
fuente
Si puede tolerar muchos falsos positivos, ¿por qué no solo usar en stringslugar de objcopy? :)
Ruslan
@Ruslan: Ya lo es objcopy | strings, solo para escanear la .rodatasección del segmento de texto. Lo que reduce los falsos positivos es el aumento de la longitud mínima de la cadena por defecto 4 hasta algo así como 10: strings -n10. Y entrar less, no head, en la OMI. Todos los insultos parecen ser contiguos, por cierto.
Peter Cordes el
Ah, no desplacé el código, para ver que stringsya estaba en uso.
Ruslan