[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]
L'analisi del traffico della rete, sia per mezzo dell'intercettazione di tutti i pacchetti che attraversano una rete fisica, sia per mezzo del controllo di ciò che riguarda esclusivamente una singola interfaccia di rete del nodo locale, è molto importante per comprendere i problemi legati alla sicurezza e per scoprire inconvenienti di vario genere.
L'uso produttivo degli strumenti che vengono descritti in questo capitolo richiederebbe una preparazione adeguata sulla composizione dei pacchetti dei protocolli TCP/IP, diversamente si riesce solo a sfiorare la comprensione di quello che accade. Tuttavia, per quanto poco, un po' di pratica con questi può essere utile in ogni caso.
Netstat (1) è un programma specifico di GNU/Linux, in grado di mostrare in modo agevole alcune informazioni contenute nella directory /proc/net/
. Le informazioni disponibili sono molte, anche troppe. In queste sezioni viene mostrato solo un uso limitato di Netstat, riferito ai protocolli TCP/IP.
Le informazioni disponibili riguardano esclusivamente la sfera del nodo locale, comprese le connessioni che lo riguardano.
Netstat potrebbe essere utilizzato per fornire le stesse informazioni che si possono ottenere già da route, ifconfig e in parte da iptables. In generale, comunque, questo non dovrebbe essere il suo uso normale, che qui non viene mostrato.
L'eseguibile netstat emette attraverso lo standard output una serie di notizie riferite a tutti i tipi di connessione disponibili, traendo le informazioni dai file virtuali della directory /proc/net/
.
netstat [opzioni]
Se netstat viene usato senza opzioni, mostra la situazione di tutti i tipi di collegamento, elencando i socket aperti. Se tra le opzioni appare l'indicazione di uno o più protocolli, le informazioni che si ottengono si limitano a quanto richiesto espressamente.
Segue la descrizione di alcuni esempi.
#
netstat --inet
Emette l'elenco dei socket di dominio Internet, ovvero tutte le comunicazioni aperte tra i programmi attraverso i protocolli TCP/IP.
#
netstat --inet -e
Come nell'esempio precedente, aggiungendo l'indicazione degli utenti proprietari dei processi che attuano le connessioni.
#
netstat --tcp -a
Mostra la situazione delle porte TCP, in particolare quelle dei servizi in ascolto.
Gli elenchi restituiti da Netstat sono composti in forma tabellare. Di seguito appare la descrizione dei nomi delle colonne di queste.
A titolo di esempio viene mostrato come può apparire una connessione TELNET tra dinkel.brot.dg
e roggen.brot.dg
.
#
netstat --tcp
[Invio]
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 roggen.brot.dg:1170 dinkel.brot.dg:telnet ESTABLISHED tcp 0 0 dinkel.brot.dg:telnet roggen.brot.dg:1170 ESTABLISHED
Tcpdump (2) è lo strumento fondamentale per l'analisi del traffico che avviene nella rete fisica a cui si è collegati. Permette sia di ottenere una visione sintetica dei pacchetti, sia di visualizzarne il contenuto in esadecimale. Inoltre, è possibile definire un filtro ai pacchetti da prendere in considerazione. Purtroppo, il suo utilizzo efficace richiede un'ottima conoscenza dei protocolli TCP/IP.
I pacchetti vengono analizzati solo nella prima parte, normalmente di 68 byte, perdendo le informazioni successive. Eventualmente, questa dimensione può essere aumentata, anche se in generale ciò è sconsigliabile dal momento che richiederebbe un tempo di elaborazione maggiore, portando anche alla perdita di pacchetti.
Tcpdump può generare un risultato in esadecimale, oppure può emettere i pacchetti così come sono. Per poter interpretare il contenuto dei pacchetti, è necessario conoscere la loro struttura, in base ai protocolli relativi. A titolo di esempio, viene mostrato un programma Perl elementare, per filtrare i caratteri di controllo ASCII:
#!/usr/bin/perl while ($riga = <STDIN>) { $riga =~ tr/\x00-\x1F//; $riga =~ tr/\x7F//; $riga =~ tr/\xFF//; print STDOUT ("$riga"); } |
Supponendo che questo sia il programma filtro, si può spiare in modo molto banale ciò che passa per la rete con il comando seguente:
#
tcpdump -l -i eth0 -s 0 -w - | filtro
La cosa diventa ancora più semplice se si vuole utilizzare il programma strings che dovrebbe essere disponibile in tutti i sistemi standard:
#
tcpdump -l -i eth0 -s 0 -w - | strings
tcpdump emette le informazioni tratte dalla parte iniziale dei pacchetti che possono essere intercettati attraverso un'interfaccia di rete, che corrispondono a una data espressione.
tcpdump [opzioni] [espressione]
Segue la descrizione di alcuni esempi.
#
tcpdump -i eth0
Emette attraverso lo standard output tutto il traffico che può essere intercettato per mezzo dell'interfaccia eth0.
#
tcpdump -n -i eth0
Come nell'esempio precedente, ma le informazioni sugli indirizzi e sui numeri di porta vengono indicati in forma numerica.
#
tcpdump -x -i eth0
Emette attraverso lo standard output il contenuto della prima parte dei pacchetti che possono essere intercettati per mezzo dell'interfaccia eth0. Questi dati vengono espressi in forma esadecimale.
L'utilizzo di Tcpdump non è molto utile se non viene definito un filtro a ciò che si vuole analizzare. Per questo motivo, dopo le opzioni normali della riga di comando può essere indicata un'espressione, più o meno articolata: solo i pacchetti che soddisfano la condizione espressa vengono presi in considerazione.
Questa espressione contiene spesso degli spazi: può essere fornita a Tcpdump in un argomento unico utilizzando dei delimitatori, oppure può essere composta da più argomenti in sequenza. Inoltre, attraverso l'opzione -F è possibile fornire l'espressione contenuta in un file; in tal caso, l'espressione può essere scritta su più righe, senza bisogno di simboli di continuazione.
Le espressioni di Tcpdump sono composte da primitive che possono essere raggruppate per mezzo delle parentesi tonde (in modo da evitare ambiguità nell'ordine di risoluzione) e connesse attraverso operatori booleani:
| un punto esclamativo o la parola chiave not rappresenta la negazione logica; |
| una doppia e-commerciale (&&) o la parola chiave and rappresenta il concatenamento, ovvero un AND logico; |
| una doppia barra verticale (||) o la parola chiave or rappresenta l'alternanza, ovvero un OR logico. |
All'interno delle primitive possono apparire riferimenti a diversi tipi di entità, che vengono descritte brevemente.
Gli indirizzi di origine o di destinazione, riferiti al protocollo TCP/IP, possono essere indicati attraverso nomi di dominio o numeri IP. In particolare, è possibile fare riferimento a una sottorete indicando il numero IP parziale.
Le porte possono essere identificate per numero o per nome.
Per identificare i protocolli si possono usare delle parole chiave precise; in particolare: ether, fddi, ip, arp, rarp, decnet, tcp, udp.
Il protocollo identificato dalle parole chiave elencate dovrebbe essere intuitivo, almeno per i casi più comuni (IP, ARP, RARP, TCP e UDP). Le prime due parole chiave sono equivalenti: ether e fddi rappresentano semplicemente il secondo livello, collegamento dati, del modello ISO-OSI.
Segue la descrizione di alcuni esempi.
#
tcpdump host dinkel.brot.dg
Individua ed emette tutto il traffico riferito a dinkel.brot.dg
.
#
tcpdump host dinkel.brot.dg and host roggen.brot.dg
Individua ed emette tutto il traffico riferito simultaneamente a dinkel.brot.dg
e a roggen.brot.dg
. In pratica si limita a estrarre il traffico tra questi due nodi.
#
tcpdump host dinkel.brot.dg and \(host roggen.brot.dg
<-'
`->or host weizen.brot.dg\)
Individua esclusivamente il traffico intrattenuto tra dinkel.brot.dg
e roggen.brot.dg
, oppure tra dinkel.brot.dg
e weizen.brot.dg
. Le parentesi tonde sono state protette attraverso la barra obliqua inversa per evitare una diversa interpretazione da parte della shell.
#
tcpdump host dinkel.brot.dg and not host roggen.brot.dg
Analizza tutto il traffico intrattenuto da dinkel.brot.dg
e tutti gli altri nodi, a esclusione di roggen.brot.dg
.
#
tcpdump gateway router.brot.dg
Analizza tutto il traffico che attraversa il nodo router.brot.dg
senza essere diretto, o provenire da quello.
Vale la pena di annotare un'idea molto semplice per controllare in modo approssimativo il traffico di una connessione PPP. In questo caso, si pensa a una connessione PPP attraverso linea commutata, intesa come la connessione di un utente che accede a un ISP per collegarsi a Internet. L'esigenza potrebbe nascere nel momento in cui si dovesse sospettare che il modem stia trasmettendo all'esterno dati che non dovrebbe, magari per opera di un software manomesso ad arte per questo scopo.
In un sistema GNU/Linux tipico ci sono diverse console virtuali inutilizzate, che potrebbero essere adibite al monitoraggio continuo del contenuto dei pacchetti che transitano attraverso l'interfaccia ppp0. Per farlo basta usare Tcpdump, con l'aiuto di un filtro come strings, come è già stato descritto. In questo caso, il tutto potrebbe essere avviato dallo script /etc/ppp/ip-up
(direttamente o attraverso un altro script specifico). I comandi necessari sono quelli seguenti, supponendo di voler utilizzare la dodicesima console virtuale (/dev/tty12
):
#!/bin/sh #... #... /bin/chown root.tty /dev/tty12 /bin/chmod 0600 /dev/tty12 /usr/bin/nohup /usr/sbin/tcpdump -l -i ppp0 -s 0 -w - \ | /usr/bin/strings > /dev/tty12 & |
Si può osservare che si modificano i permessi di accesso al file di dispositivo /dev/tty12
per evitare che altri possano leggere il traffico attraverso il terminale stesso.
In condizioni normali, quando l'interfaccia di rete ppp0 scompare a seguito della conclusione della connessione, anche l'eseguibile tcpdump termina di funzionare. |
Volendo complicare le cose, si può anche fare in modo che i dati vengano memorizzati in un registro, per poter fare una verifica successiva in modo più dettagliato:
/usr/bin/nohup /usr/sbin/tcpdump -l -i ppp0 -s 0 -w - \ | /usr/bin/tee /var/log/ppp0.log | /usr/bin/strings > /dev/tty12 & |
Come si vede, il file /var/log/ppp0.log
viene memorizzato prima di essere ridotto da strings.
IPTraf (3) è un programma di servizio per l'analisi del traffico IPv4 (in parte anche di quello non IP), che transita attraverso la rete fisica a cui ci si trova connessi. IPTraf è specializzato nel tracciamento delle connessioni e nella produzione di statistiche, senza addentrarsi nella lettura del contenuto dei pacchetti.
IPTraf è fondamentalmente un programma interattivo, che utilizza una console virtuale o un terminale a caratteri, organizzato attraverso dei menù. La figura 190.1 mostra il menù generale di IPTraf.
Figura 190.1. Menù generale di IPTraf.
|
IPTraf può essere configurato attraverso la funzione {Options
} che appare nel menù generale. Inoltre, può annotare le informazioni sul traffico all'interno di un registro. Il file di configurazione e quello delle registrazioni vengono creati all'interno della directory /var/lib/iptraf/
, che deve essere presente.
Perché possa essere analizzato tutto il traffico della propria rete fisica, è necessario che sia abilitata la modalità promiscua, come descritto nella sezione dedicata alla configurazione di IPTraf. |
In questa sezione vengono descritti solo alcuni aspetti di IPTraf. Per il resto si può consultare la documentazione che accompagna questo programma.
Tabella 190.6. IPTraf funziona fondamentalmente in modo interattivo, tuttavia può essere avviato con delle opzioni in modo da raggiungere immediatamente la funzione desiderata.
La configurazione di IPTraf può essere definita a livelli differenti: la configurazione generale e quella che riguarda i filtri di selezione dei pacchetti da elaborare. La configurazione generale è definibile attraverso la funzione {Options
} del menù generale, da cui si accede a quanto si vede nella figura 190.2, che rappresenta anche l'impostazione predefinita.
Figura 190.2. Definizione delle opzioni generali di IPTraf.
|
Le opzioni si attivano e si disattivano premendo il tasto [Invio]; quando una voce è terminata da tre punti di sospensione (...), selezionandola si ottiene una finestra a scomparsa attraverso la quale fornire altre indicazioni. Lo stato delle opzioni è indicato dalla finestra destra: {Enabled Options
}.
La funzionalità di controllo del traffico IP rappresenta l'utilizzo più comune di IPTraf. Selezionando la voce corrispondente dal menù generale, oppure avviando iptraf con l'opzione -i, si ottiene qualcosa di simile a quanto mostrato nella figura 190.3, dove in particolare appare anche lo stato di una connessione TELNET tra 192.168.1.1 e 192.168.1.2.
Figura 190.3. Monitor di traffico IP con una connessione TELNET attiva.
|
Il monitor di traffico IP si compone di due finestre: una superiore per le connessioni TCP e una inferiore per gli altri tipi. Una delle due finestre è quella attiva, che si distingue perché appare la parola Active sul bordo nella parte bassa, al lato destro. All'interno della finestra attiva è possibile fare scorrere le informazioni con i tasti [freccia su] e [freccia giù]; per cambiare la finestra attiva basta utilizzare il tasto [w], come suggerisce il promemoria che appare nell'ultima riga dello schermo. Per uscire da questa funzionalità basta il tasto [x], oppure la combinazione [Ctrl+x].
Non è possibile conoscere quale sia la parte che ha originato la connessione TCP, salvo intuirlo dalle convenzioni sull'uso delle porte; nella finestra relativa, le connessioni TCP vengono sempre mostrate con una coppia di voci: una per ogni direzione della connessione TCP.
Il significato delle varie colonne di informazione che appaiono nella finestra delle connessioni TCP dovrebbe essere abbastanza intuitivo, a parte la colonna Flags, all'interno della quale possono essere annotate lettere e parole chiave differenti. Il significato di queste viene descritto di seguito.
Se si verifica una presenza inusuale di pacchetti SYN, può trattarsi di un tentativo di attacco, definito SYN flood, che letteralmente significa: «inondazione di pacchetti SYN». |
Sniffit (4) è un programma per l'analisi del traffico di rete, che può essere usato per individuare le connessioni TCP in corso, oppure per conservare una sorta di registro delle comunicazioni avvenute, contenente le comunicazioni stesse.
Naturalmente, la lettura del contenuto dei pacchetti può essere utile a livello didattico, oppure per individuare dei problemi nell'utilizzo della rete, mentre diventa una pratica illegale quando ciò sconfina nel diritto alla riservatezza delle persone. |
La sintassi per l'avvio di Sniffit è quella seguente, tenendo conto che almeno un'opzione del primo gruppo è obbligatoria.
sniffit {-v|-s nodo|-t nodo|-i|-I|-c file_di_configurazione}...
<-'
`->altre_opzioni
Segue la descrizione di alcune opzioni.
Qui viene mostrato soltanto il funzionamento interattivo, con l'opzione -I, all'interno del quale è possibile anche inserirsi in uno dei flussi TCP per leggerne i dati:
#
sniffit -I -F eth0
In questo modo si ottiene il funzionamento interattivo, specificando espressamente l'interfaccia (in questo caso si tratta di eth0. Quello che si vede nella figura seguente è soltanto il traffico TCP attivo:
Figura 190.4. Sniffit durante il funzionamento interattivo con l'opzione -I.
|
Nel riquadro delle connessioni TCP, appare un cursore, con cui è possibile selezionare, all'interno di una connessione, uno dei due flussi (andata o ritorno). Una volta collocato il cursore sopra un flusso di interesse, basta premere [Invio] per ottenere una finestra in cui appare il contenuto di quella comunicazione:
Figura 190.5. Intercettazione di una copia del flusso di dati.
|
Come si può intuire dalla figura, in questo caso si intercetta il flusso dei dati trasmessi da un cliente TELNET, proprio nella fase dell'autenticazione: l'utente tizio, con la parola d'ordine baci47.(5)
Ethereal (6) è un programma per l'analisi del traffico di rete, fino al livello due del modello ISO-OSI (collegamento dati), riuscendo a riconoscere all'interno di questo una serie di protocolli al livello tre e quattro del modello ISO-OSI (rete). In particolare, individua correttamente molti protocolli collegati a IPv4 e IPv6.
Ethereal è pensato principalmente per accumulare il traffico intercettato, allo scopo di consentire un'analisi dettagliata di questo in un momento successivo; nello stesso modo è predisposto per accedere a informazioni di questo genere accumulate da programmi diversi, così come è in grado di esportare i propri dati in formati alternativi.
Ethereal consente anche una visualizzazione in tempo reale del traffico in corso, in modo analogo a quanto fa IPTraf, con la differenza che le informazioni fornite sono molto più chiare. In questo senso, Ethereal è un ottimo strumento didattico per lo studio delle reti.
Ethereal viene usato normalmente attraverso il sistema grafico X e deve funzionare con i privilegi dell'utente root, per poter accedere direttamente all'interfaccia di rete da sondare. L'eseguibile da avviare è ethereal:
ethereal [opzioni]
Qui si intende mostrare il funzionamento di Ethereal in modo interattivo, senza l'uso di opzioni nella riga di comando. Eventualmente si può consultare la pagina di manuale ethereal(1).
Figura 190.6. Ethereal avviato senza opzioni, rimane in attesa prima di iniziare la sua analisi. |
Una volta avviato l'eseguibile ethereal, per ottenere un'analisi del traffico in tempo reale può essere necessario controllare la configurazione. Si trova la voce {Preferences
} nel menù {Edit
}:
Figura 190.7. La finestra di configurazione di Ethereal per quanto riguarda la selezione dei pacchetti catturati. |
La figura mostra in particolare la selezione della modalità promiscua, con cui si intercettano tutti i pacchetti che l'interfaccia di rete selezionata è in grado di osservare.
Una volta definita la configurazione e selezionata l'interfaccia di rete di interesse, si può passare alla cattura dei pacchetti, selezionando la voce {Start
} dal menù {Capture
}. Si ottiene una finestra da cui è possibile aggiustare le opzioni relative alla cattura:
Figura 190.8. La finestra che appare quando si chiede di iniziare la cattura dei pacchetti. |
Durante la cattura dei pacchetti viene visualizzata una statistica sull'avanzamento di questo lavoro, dove appare un pulsante grafico che consente di fermare l'accumulo dei dati. Se era stata richiesta la visualizzazione in tempo reale delle informazioni relative alla cattura, anche il contenuto dei pacchetti viene visualizzato nella finestra principale di Ethereal.
Figura 190.9. Statistiche visualizzate durante la cattura dei pacchetti. |
La finestra principale di Ethereal si divide in tre parti: in quella superiore appare l'elenco di pacchetti intercettati con una descrizione essenziale del loro contenuto; selezionando un pacchetto nella parte superiore, in quella centrale appare un elenco ad albero di componenti del pacchetto stesso; selezionando una voce nell'elenco del riquadro centrale, appare in quello inferiore l'evidenziamento della porzione di pacchetto che lo riguarda. La figura seguente mostra la porzione IP di un pacchetto relativo a una comunicazione TELNET:
Figura 190.10. Porzione IP di un pacchetto relativo a una comunicazione TELNET. |
Nella figura successiva, si analizzano i dati TCP dello stesso pacchetto, mostrando in particolare dove si colloca l'informazione sulla porta di destinazione:
Figura 190.11. Porta di destinazione TCP di un pacchetto relativo a una comunicazione TELNET. |
IPlogger (7) è un pacchetto di programmi contenente alcuni demoni che si occupano di annotare le connessioni all'interno del registro del sistema. Allo stato attuale si tratta solo di tcplog e di icmplog, in grado rispettivamente di annotare le connessioni TCP e l'utilizzo del protocollo ICMP. Non è niente di eccezionale, ma qualcosa di utile nel caso non si abbiano strumenti migliori.
Non c'è molto da aggiungere sull'utilizzo di questi due demoni: basta fare in modo che la procedura di inizializzazione del sistema provveda ad avviarli e loro si arrangiano. Non occorre alcuna configurazione.
È probabile che questo pacchetto abbia uno sviluppo futuro, aggiungendo varie forme di identificazione di attacchi noti.
Netcat6 (8) è un programma creato allo scopo di leggere e scrivere dati attraverso delle connessioni di rete TCP o UDP. Si tratta di uno strumento generico, vagamente simile a un cliente TELNET, con la differenza che può funzionare anche con il protocollo UDP. Le potenzialità di questo programma sono notevoli, ma qui verranno mostrate solo alcune delle sue caratteristiche; per il resto si può leggere la sua documentazione, che per essere compresa richiede comunque un po' di esperienza nella gestione delle reti TCP/IP.
Netcat6 può funzionare, quasi indifferentemente, come cliente o servente di una connessione; per questo è uno strumento ottimale per la verifica del funzionamento delle connessioni di rete e non solo. In un certo senso, l'eseguibile nc6, ovvero ciò che costituisce Netcat6, è paragonabile idealmente al programma dd, con la differenza che invece di fare riferimento a dei dispositivi, si lavora con la rete a livello di trasporto TCP e UDP: il quarto nel modello ISO-OSI.
L'eseguibile nc6 è tutto ciò che compone Netcat6. Questo programma instaura una connessione, in qualità di cliente o di servente, utilizzando il protocollo TCP oppure UDP, trasmettendo ciò che ottiene dallo standard input e restituendo attraverso lo standard output ciò che riceve dall'altro capo.
nc6 [opzioni] host porta
nc6 -l -p porta [host [porta]]
L'uso di Netcat6 differisce fondamentalmente a seconda del fatto che si voglia raggiungere un servizio in ascolto presso un nodo, a una porta determinata, oppure che si intenda avviarlo per restare in ascolto in attesa di una richiesta di connessione. Nel secondo caso si usa l'opzione -l (Listen).
Il funzionamento di questo programma si comprende meglio attraverso degli esempi, ma per il momento viene mostrato il significato di alcune opzioni.
L'esempio seguente, serve a instaurare una connessione TCP con il servente SMTP dinkel.brot.dg
:
$
nc6 dinkel.brot.dg smtp
Un uso interessante di Netcat6 è quello con il quale si ottiene un trasferimento dati senza bisogno di una shell remota (rsh per esempio). Per questo, da una parte occorre avviare l'eseguibile nc6 in ascolto di una certa porta TCP, mentre dall'altra si utilizza sempre nc6 in modo che cerchi di contattare quella porta di quel nodo. Il canale che si crea può essere sfruttato per questo scopo.
$
nc6 -l -p 1234 | tar xzpvf -
In questo modo, Netcat6 viene avviato in ascolto della porta 1 234, che si presume sia libera. Il suo standard output viene passato a tar che deve occuparsi di estrarne il contenuto nella directory corrente. In pratica, si presume che Netcat6 debba ricevere dalla porta 1 234 un file corrispondente a un archivio tar+gzip e che questo debba essere riprodotto localmente.
$
tar czf - /home/tizio | nc6 dinkel.brot.dg 1234
Questo comando è la controparte dell'esempio mostrato prima: viene archiviata la directory /home/tizio/
e passata all'eseguibile nc6 attraverso una pipeline. Evidentemente, dinkel.brot.dg
è il nodo all'interno del quale deve essere riprodotta tale directory.
Netcat6 può essere usato per ridirigere una connessione TCP, per esempio attraverso un firewall. Gli esempi seguenti si riferiscono a Inetd, pertanto si tratta di direttive del file /etc/inetd.conf
.
www stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/nc6 roggen.brot.dg 80 |
In questo caso, le richieste TCP per la porta www (ovvero 80), sono ridirette attraverso Netcat6 verso il nodo roggen.brot.dg
alla stessa porta.
www stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/nc6 roggen.brot.dg 1234 |
Questa è solo una piccola variante dell'esempio precedente, in cui si presume che il vero servente HTTP si trovi sempre nel nodo roggen.brot.dg
, ma sia in ascolto della porta 1 234.
daniele @ swlibero.org
2) Tcpdump software libero con licenza speciale
4) Sniffit software libero con licenza speciale
5) Questo esempio viene mostrato proprio per far comprendere quanto vulnerabile sia un terminale remoto che non utilizzi una comunicazione cifrata.
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome strumenti_per_il_controllo_e_l_analisi_del_traffico_ip.html
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]