Dove sono memorizzati gli insulti di sudo?

224

Per coloro a cui piace l'umorismo, sudo può essere configurato per stampare una frase casuale più o meno insultante o divertente al posto del neutro Sorry, try again. aggiungendo la riga sotto a /etc/sudoers (usando il comando sudo visudo , non modifica manualmente!):

Defaults insults

Ecco alcuni esempi:

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

Ora mi diverto a leggere tutti, ma inserire password errate tutto il giorno non è il metodo migliore (ritardo dopo ogni tentativo, solo 2 messaggi per 3 tentativi, interruzione dopo 3 tentativi, .. .).

Quindi ... dove vengono effettivamente archiviati questi insulti? Qualunque file di testo semplice che posso leggere direttamente? O stringhe hard coded nel codice sorgente?

Come posso ottenere un elenco di tutti i messaggi di insulto sudo disponibili?

    
posta Byte Commander 15.10.2016 - 20:25

5 risposte

173

Sono nel file binario

/usr/lib/sudo/sudoers.so

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

Se attivi i download di origine e fai

apt source sudo

Puoi trovare i file degli insulti nella directory sorgente sotto

plugins/sudoers

I file sono

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

Esempio di come appaiono questi file:

#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",

e così via ... sono abbastanza leggibili.

    
risposta data Zanna 15.10.2016 - 20:34
75

Con

dpkg -L sudo | xargs grep dumber

possiamo cercare quali file del pacchetto sudo contengono la parola dumber .

L'unica corrispondenza è nel file /usr/lib/sudo/sudoers.so . Questo è un file binario, quindi usiamo il comando strings per ottenere solo cose che sembrano essere leggibili. Poiché è molto, il risultato viene reindirizzato in less :

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

In less possiamo usare

/dumber

per cercare nuovamente la parola "più stupido". Questo ci porta dritti agli insulti. Scorrere su e giù con i tasti cursore e uscire con q

    
risposta data Florian Diesch 15.10.2016 - 20:55
72

Elenco di tutti gli insulti

Quando guardiamo tutti gli insulti scopriamo un bocconcino interessante: dire che Broccoli è politicamente corretto, ma dire che Burrito non lo è. Tutti gli insulti sono elencati di seguito.

ins_2001.h (2001 insulti Odyssey nello spazio):

.
    /*
     * 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 (Sudo 8 insulti originali):

    /*
     * 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 (insulti 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 Show insults):

.
    /*
     * 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",

Il file insults.h contiene le istruzioni del compilatore su quale dei suddetti insulti includere nel kernel compilato. In effetti, è possibile creare il proprio file di insulti, aggiungere il nome a insults.h e ricompilare per avere messaggi come "Cosa, sei un utente di ArchLinux?" oppure "Questo non è Windows in cui gli errori sono all'ordine del giorno!", ecc.

Notare #ifdef PC_INSULTS in alcuni file di insulto. Questo non significa "se hai un personal computer" significa "se vuoi essere politicamente corretto"

    
risposta data WinEunuuchs2Unix 15.10.2016 - 22:22
11

Le risposte sopra sono ottime per la ricerca offline. Ma siamo online. Quindi apri Ricerca codice Debian e prova uno degli insulti qui . Ti dice istantaneamente che è in sudo_1.8.12-1/plugins/sudoers/ins_csops.h . Questo ha il vantaggio di trovarlo ovunque che si tratti di un file di configurazione da distribuire in /etc o altro. E dal momento che è un file .h, è visibile è nella fonte e non qualcosa che puoi modificare.

    
risposta data chx 19.10.2016 - 01:49
7

Per aggiungere alle altre risposte, gli insulti sembrano essere nella sezione .rodata di sudoers.so. Puoi utilizzare objcopy per limitare in qualche modo l'output, sebbene ci siano ancora molti falsi positivi:

$ 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.
$ 
    
risposta data Digital Trauma 18.10.2016 - 01:48

Leggi altre domande sui tag