Contrariamente a quanto può suggerire la fantasìa, un demone IRC non è un diavolo che chatta su IRCnet ;-).
La parola 'demone' infatti sta ad indicare un processo sempre attivo in background che svolge una certa funzione; ovvero in questo caso una specie di programma che resta attivo 24h su 24h fintanto che il computer su cui sta girando non viene spento o riavviato ed il quale ha come unico scopo quello di "restare connesso alla rete IRC".
Tipicamente per far sì che tale processo resti sempre attivo lo si lancia su di un server e fintanto che il server non si riavvia o non va offline per manutenzione il nostro demone resta sempre connesso ad IRCnet fornendo una presenza permanente in uno o più canali.
Su Network come IRCnet dove l'unico modo per ricevere lo status di operatore è quello di riceverlo da un altro (o di entrare per primi in un canale), un demone IRC al nostro servizio è decisamente una presenza comoda poichè impedisce ad altri di entrare per primi in un canale e distribuisce lo status di operatore solo ad una ristretta cerchia di persone; lo stato del canale in pratica si "conserva" fintanto che c'è almeno un demone attivo con lo status di operatore.
In realtà di demoni IRC ne esistono molti ma in concreto sono tutte derivazioni di 2 programmi principali che offrono il servizio di demone (non solo IRC) e che oltre a "restare semplicemente connessi al network" forniscono anche altre funzionalità, questi programmi sono l'Eggdrop (più comunemente chiamato Bot) e il psyBNC (qualcuno direbbe LA psyBNC ma siccome BNC sta per BouNCer a volte preferisco dire IL psyBNC).
Quando la prima volta tentarono di spiegarmi cosa era un bot mi pareva che fosse una cosa fantascientifica! Mi dissero:"quella non è una persona fisica, è un roBOT". Ora chiunque co ste premesse avrebbe pensato a qualcosa tipo Goldrake o Mazinga e sarebbe rimasto a lungo nell'ignoranza.
Oggi che non credo più a Mazinga so che un bot non è altro che un demone IRC lanciato su un computer, tipicamente un server, che fornisce servizio di shell hosting.
Ad essere sinceri un eggdrop è un pò più difficile da gestire/installare rispetto ad un psyBNC ma tale difficoltà viene ripagata con tantissime funzioni in più rispetto al BNC.
Oltre a distribuire lo status di operatore un eggdrop può far rispettare in canale dei parametri impostati da un operatore nonchè evitare che un malintenzionato possa tentare di rubare il canale, tuttavia il suo operato va sempre accostato a quello di uno o più operatori umani.
Gli eggdrop possono essere "linkati" fra di loro costituendo quella che si definisce una "botnet" aumentando notevolmente la sicurezza del canale in cui risiedono.
L'eggdrop può essere configurato in molti modi differenti e fornisce già per default una serie di protezioni e funzionalità che sono parte integrante del programma, tuttavia è possibile integrare infinite altre funzionalità sotto forma di script in linguaggio TCL che viene direttamente supportato dal motore dell'eggdrop. Si può scrivere uno script in TCL per ogni cosa che ci occorre ed integrarlo facilmente nel nostro eggdrop o nella nostra botnet.
Anche un BNC è un demone IRC che gira su di un server solo che offre funzionalità diverse rispetto ad un Bot.
A differenza di un bot una BNC è un'interfaccia indiretta verso una connessione ad IRCnet ovvero dopo aver lanciato psyBNC possiamo in futuro connettere il nostro client IRC direttamente al BNC invece che al server IRC e chattare direttamente dal BNC; nel momento in cui chiudiamo il nostro client non viene chiuso il programma psyBNC bensì la connessione dal nostro client alla BNC che è una cosa diversa poichè la connessione dal BNC al server IRC resta in maniera permanente e quindi il psyBNC risulta sempre e comunque connesso ad IRCnet anche dopo la chiusura del client.
Gli utenti che possono connettersi al psyBNC sono di 2 tipi: administrator e user. L'admin è il proprietario del BNC ed è l'unica persona che può connettersi al BNC quando il processo è stato appena lanciato. L'admin successivamente può 'addare' uno o più user dando anche a loro la possibilità di connettersi al BNC e quindi di chattare dal BNC. In realtà quando più persone sono connesse allo stesso psyBNC il processo principale viene diviso in più sottoprocessi (credo un thread per ogni user) e ogni utente ha l'impressione di avere una BNC dedicata solo per lui dove lui è l'unica persona connessa.
User e administrator di una BNC hanno più o meno gli stessi poteri tuttavia l'admin ha la possibilità di cancellare o addare in qualsiasi momento un user al BNC.
Anche psyBNC offre la possibilità di linkare fra loro più demoni.
I demoni IRC contrariamente a quanto molti pensano, sono completamente gratuiti: si scaricano da una miriade di siti web. Quello che invece si paga è il "permesso" per poter lanciare tali programmi su un server. Infatti ciò che si compra è il numero di processi che si possono lanciare in background.
I server che permettono ai propri utenti remoti di potersi loggare e lanciare un certo numero massimo di processi offrono un servizio di shell hosting, ovvero dopo aver comprato l'accesso ad un server con un certo determinato numero di processi posso connettermi al server per esercitare il mio account o via telnet o via SSH.
In entrambe i casi ciò che ottengo è uno shell prompt ovvero un prompt dei comandi da remoto che si interfaccia direttamente col sistema operativo dello shell provider quindi da casa mia dopo essermi connesso al server posso creare/cancellare/gestire directory/files, lanciare programmi come se stessi digitando tali comandi direttamente sul server, ovviamente in questo caso ciò che mi interessa fare è lanciare programmi, in particolare demoni IRC.
Innanzitutto bisogna portare il programma eggdrop sulla shell; potete uploadarlo o via FTP oppure se la vostra shell ha il comando wget potete scaricarlo direttamente sulla shell dando il comando: wget URL_di_un_sito_dove_si_trova_eggdrop1.6.6.tar.gz per esempio.
Il file eggdrop1.6.6.tar.gz è un pacchetto compresso che va scompattato; per farlo digitiamo il comando tar -zxvf eggdrop1.6.6.tar.gz questo scompatterà il contenuto del pacchetto in una nuova cartella che si chiamerà eggdrop1.6.6 (la cartella la crea lui).
Entriamo in tale cartella col comando cd eggdrop1.6.6 e scriviamo il comando ./configure che serve a predisporre la shell nel modo più adatto per la compilazione del programma eggdrop.
Quando la configurazione è terminata digitiamo il comando make per compilare l'Eggdrop; questa operazione può richiedere un pò di tempo. A compilazione terminata digitiamo il comando make install DEST=~/botdir dove botdir è il nome della cartella dove verrà installato il bot, si può cambiare 'botdir' con il nome che più vi piace.
A questo punto l'installazione è terminata, spostiamoci nella directory del bot e scriviamo il comando chmod 700 che setta i permessi della cartella in modo tale da tenerne nascosto il contenuto ad occhi indiscreti e a questo punto possiamo tranquillamente cancellare la directory di installazione 'eggdrop1.6.6', per farlo o risaliamo il file system facendo cd .. oppure col comando cd ~ e ora che siamo nel path dove si trova la cartella eggdrop1.6.6 la cancelliamo col comando rm -rf eggdrop1.6.6.
Ora all'interno della botdir ci sono uno o più file .conf. Questo(i) file sono importantissimi perchè al loro interno ci sono tutti i settaggi del bot; di norma ci sono dei file.conf già editati e pronti con settaggi generici altrimenti basta aprirne uno per capire come è fatto e mettere i propri settaggi (è tutto in inglese).
Quando si è finito di editare un file.conf (che possiamo chiamare anche pasquale.conf), dalla directory del bot scriviamo il comando ./eggdrop -m file.conf.
NOTA: L'opzione -m serve a creare un nuovo userfile per il bot e serve solo alla prima esecuzione; se per qualche motivo si deve riavviare il bot si potrà anche omettere.
Se tutto è andato secondo i piani e il file.conf è stato editato bene vedremo comparire il bot su IRC nei canali specificati nel .conf.
La prima cosa da fare è presentarsi immediatamente al bot scrivendo /msg nickTuoBot hello dal tuo client IRC; Questo ti farà diventare owner del bot. Una volta fatto, dovrai settare la password usando /msg eggdrop pass tuapass (dove al posto di tuapass devi mettere la tua password).
Esattamente come per il bot bisogna portare il programma psyBNC sulla shell; potete uploadarlo o via FTP oppure se la vostra shell ha il comando wget potete scaricarlo direttamente sulla shell dando il comando: wget URL_di_un_sito_dove_si_trova_psyBNC2.1.tar.gz per esempio.
Il file psyBNC2.1.tar.gz è un pacchetto compresso che va scompattato; per farlo digitiamo il comando tar -zxvf psyBNC2.1.tar.gz questo scompatterà il contenuto del pacchetto in una nuova cartella che si chiamerà psyBNC2.1 (la cartella la crea lui).
Entriamo in tale cartella col comando cd psyBNC2.1 e scriviamo il comando make che compilerà il programma psyBNC.
Una volta compilato il programma è importante editare il file di configurazione che si chiama per default psybnc.conf. Alla prima esecuzione tuttavia l'unica cosa che può essere necessario cambiare è la porta (per default è la 31337). Successivamente nel file di configurazione verranno scritte dal programma stesso altre informazioni come l'identificativo degli users, dell'admin, le loro password, i canali...ecc.
Dopo aver apportato gli eventuali cambiamenti al file psybnc.conf salviamolo (gli si può anche cambiare nome es. pippo.conf) digitiamo il comando ./psybnc psybnc.conf per lanciare il BNC.
Se tutto è andato correttamente vedrai apparire a video una serie di messaggi che specificano la porta messa da te nel file.conf ed il PID che è stato assegnato al processo psyBNC. Se non si è ottenuto nessun messaggio di errore apriamo un client IRC e connettiamoci alla bnc col comando (da dare nel client IRC) /server indirizzo_shell porta_messa_nel_file.conf; tipo /server server1.phoenix.shells.de 31336
OWNERS | |
---|---|
Sintassi comando | Descrizione |
.chnick vecchionick nuovonick | Cambia il nick dell'utente specificato all'interno della party-line |
.chpass nick nuovapass | Cambia la password di un utente |
.chattr nickname [attributo] | Permette di variare le flag di un utente |
.comment nickname [commento] | Permette di creare o variare i commenti per l'utente specificato. Attenzione, i commenti sono visibili dai soli master o owner del bot |
.msg nickname [messaggio] | Invia un messaggio ad un utente specifico |
.chemail nickname [e-mail] | Setta l'e-mail nell'apposito campo nelle informazioni utente |
.adduser nickname | Aggiunge alla lista un utente che è presente in canale con una hostmask di livello 3 (*!userid@*.dominio.it) |
.chaddr bot address:numero porta | Cambia l'address di un bot per linkare il proprio alla botnet |
.+user nickname hostmask | Aggiunge un utente al database con l'hostmask definita fra i parametri |
.-user nickname | Elimina l'utente dal data base |
.+host nickname hostmask | Aggiunge una nuova hostmask all'utente predefinito |
.-host nickname hostmask | Elimina una hostmask dall'utente predefinito |
.chinfo nickname [info-line] | Varia le informazioni per l'utente predefinito |
.save | Nei bot eggdrop il salvataggio del data base utenti avviene periodicamente, se si effettua una modifica questo può essere forzato per rendere effettivi i cambiamenti |
.binds [tipo] | Mostra i bindings tcl. Questi non sono altro che degli "alias" con i quali lanciare i comandi tcl |
.reset [canale] | Resetta le informazioni per il canale specificato |
.link bot | Esegue il link alla botnet |
.unlink nomebot | Rimuove il link del bot specificato dalla botnet |
.trace bot | Invia un pacchetto di tracciatura al bot specificato mostrando il percorso fatto |
.banner messaggio | Invia un messaggio a tutti gli utenti attualmente connessi al bot, solitamente questo comando viene usato per annunciare uno shutdown |
.boot nickname [messaggio] | Esegue l'espulsione di un utente dalla party-line |
.boot nickname@bot [messaggio] | Se i bot sono configurati per i boot remoti esegue un boot remoto dell'utente all'interno della botnet |
.relay botname | Esegue la riconnessione al bot specificato via telnet finché non verrà specificato il comando "*bye*" in party-line |
.flush bot | Esegue la pulizia del resync-buffer del bot nel caso le sue liste siano condivise con altri bot della botnet |
.status | Restituisce lo stato di funzionamento del bot in forma breve |
.dccstat | Visualizza in formato tabulare le informazioni su tutte le connessioni attive |
.debug | Se configurato durante la fase di compilazione del sorgente c del bot restituisce un dump della memory allocation |
.set variabile [valore] | Cambia i parametri dei settaggi interni del bot ) |
.rehash | Inizializza il bot rileggendo il file init, da utilizzare ogni volta che si esegue un cambiamento all'interno di questo file |
.reload | Esegue il ricaricamento del data base utenti |
.die | Esegue lo shutdown del bot |
.restart | Salva e ricarica la user list |
.dump testo | invia il testo specificato direttamente al server |
.console attributo | Permette di variare la console di sistema |
.+ignore nickname [hostmask] | Aggiunge l'utente alla ignore list |
.-ignore nickname [hostmask] | Rimuove l'utente dalla ignore list |
.ignores [chiavedi ricerca] | Visualizza il contenuto della ignore list tramite una chiave di ricerca |
.ignores all | Visualizza il contenuto della intera ignore list |
.jump [irc srv] | Esegue il cambio di server |
.assoc [numero canale nome] | Associa il nome ad uno dei canali della party-line |
.assoc numero canale | Rimuove il nome canale |
Sintassi comando | Descrizione |
---|---|
/BHELP | Mostra un elenco dei comandi |
/BWHO | Mostra l'elenco degli utenti del BNC |
/ADDUSER login | Aggiunge un utente |
/DELUSER login | Elimina un utente |
/PASSWORD newpass | Cambia la password per il network corrente |
/JUMP | Jumpa al server successivo in lista |
/ADDSERVER | Aggiunge un server alla lista |
/DELSERVER | Elimina un server dalla lista |
/LISTSERVERS | Mostra la lista dei server |
/REHASH | Rilancia il BNC e lo rehasha |
/BQUIT | Chiude tutte le connessioni a IRC |
/BCONNECT | Ritenta una connessione all'ultimo server |
/SETAWAYNICK nick | Imposta un nick per il periodo di away |
/SETAWAYNICK | Disabilita il cambio di nick per l'away |
/SETLEAVEMSG message | Imposta un messaggio di uscita per l'away |
/SETLEAVEMSG | Disabilita il messaggio di uscita per l'away |
/BVHOST | Aggiunge un virtual host alla lista del BNC |
/ADDOP login | Aggiunge un utente alla lista degli op |
/DELOP login | Elimina un utente dalla lista degli op |
/ADDBAN *!*@* | Aggiunge un ban |
/DELBAN *!*@* | Elimina un ban |
/PLAYPRIVATELOG | Mostra i messaggi di testo |
/ERASEPRIVATELOG | Elimina i messaggi di testo salvati |
/PLAYTRAFFICLOG | Mostra i messaggi relativi al traffico delle connessioni |
/ERASETRAFFICLOG | Elimina i messaggi relativi al traffico delle connessioni |
/PLAYMAINLOG | Mostra i messaggi principali di log |
/ERASEMAINLOG | Elimina i messaggi principali di log |
/NAMEBOUNCER name | Assegna un nome al vostro BNC |
/LINKTO :host:port | Aggiunge un host e una porta di un altro psyBNC a cui linkarsi |
/LINKFROM name :host:port | Aggiunge un bouncer a cui linkarsi |
/LISTLINKS | Mostra la lista dei links attivi |
/DELLINK number | Elimina un link attraverso il numero espresso nella LISTLINK |