:---------------------------:
                             L'Hacking e le News

                        .      by  Lord Shinva      .
                        :---------------------------:


 Conoscere le News
 ~~~~~~~~~~~~~~~~~
  Le news sono costituite da gruppi di discussione (come alt.hackers) che
racchiudono un certo numero di messaggi pubblici.  Tali messaggi (detti
articoli, che io chiamero` "post") hanno degli headers, proprio come le
normali email.

Uno degli headers presenti sia nelle email che nelle post e` Message-ID.

Provate ora a visualizzare tali headers: per chi, come me, usa Outlook Mail
and News della Microsoft, la procedura e`: cliccare sul titolo del messaggio
da analizzare, premere il tasto destro del mouse, scegliere Proprieta` e poi
Dettagli.  Con Netscape, invece, scegliete il menu "Options", quindi "Show
Headers" e infine "All".

Come vedrete, tra gli headers figurera` una linea del tipo:

   Message-ID: <[email protected]>

Lo scopo di Message-ID e` identificare ciascun messaggio univocamente, in
modo da facilitarne la gestione.... e da rendere piu` semplice la loro
distruzione :)))

Ma procediamo per gradi.

Per gestire gli articoli e i gruppi che costituiscono le news, esiste un
particolare tipo di messaggi (normali email, niente di trascendentale),
detti messaggi "control" (detti, appunto, messaggi di controllo).

Come sapete, quando scrivete un msg a un newsgroup potete in seguito
eliminarlo, utilizzando una funzione presente in molti nuovi NewsReader
(in Outlook Mail and News la funzione e` "Annulla", visualizzabile tramite
tasto destro sul titolo del messaggio da eliminare).
Ovviamente pero` questo vale solo per i *vostri* messaggi.  Non potete (o
meglio, non POTRESTE) cancellare quelli degli altri.

Vediamo come cancellarli ;)

Un messaggio di controllo, dicevamo, non e` altro che una normale post, ma
con qualche cosa in piu`.
Quello che ci serve sapere per cancellare un messaggio e`:

 1 - il mittente del messaggio (header From)
 2 - l'ID (header Message-ID)

...e nient'altro.

Ora non dobbiamo fare altro che inviare una post di controllo da parte del
mittente originale.  Poiche` avremo bisogno di falsificare il "From", e`
bene cambiare nel NewsReader i vostri dati con quelli che avete appreso
leggendo l'header "From".

Ora che abbiamo falsificato il mittente del messaggio, dobbiamo inserire
dei comandi particolari, che renderanno la nostra email un messaggio di
controllo.  Senza di essi, infatti, resterebbe una semplice email e verrebbe
postata al Newsgroup e letta da tutti... :(

Tutto quello che dobbiamo fare e` digitare i comandi al posto del Soggetto.

Il comando per cancellare un messaggio e` il seguente:

   cmsg cancel 

quindi, per eliminare il messaggio di Lamer che ha l'indirizzo [email protected]
e Message-ID pari a <[email protected]> dal newsgroup alt.lamers dovremo
inviare una normale post a alt.lamers con i seguenti dati:

   From: [email protected] (Lamer)
   Subject: cmsg cancel <[email protected]>

Per assicurarci che il nostro messaggio di controllo funzioni, dovremo
aggiungere un paio di header aggiuntivi: Control e Approved.

Control e` in realta` l'header designato ai comandi di controllo, per cui
possiamo utilizzare solo Subject, solo Control, oppure entrambi.
L'unica differenza e` che con Control non dobbiamo usare "cmsg".

Approved invece serve a dire al server di "fidarsi" di quello che gli stiamo
inviando, in quanto esso e` stato letto e approvato... ;)

Vediamo un esempio completo:

   From: [email protected] (Lamer)
   Subject: cmsg cancel <[email protected]>
   Control: cancel <[email protected]>
   Approved: [email protected]

Ovviamente se in Approved metteremo l'indirizzo di email dell'Amministratore
del server delle News che utilizzeremo per inviare la post al newsgroup,
avremo buone probabilita' che i comandi del messaggio di controllo
verrebbero eseguiti.

NOTA: tenete presente che se avete gia` scaricato i messaggi e utilizzate
il comando "cancel" per eliminarne uno, esso sara` eliminato da tutti gli
host connessi al news server al quale avrete inviato il messaggio di
controllo; ma voi non noterete il cambiamento sul vostro PC, in quanto il
messaggio e` stato scaricato PRIMA della cancellazione.  Dovrete eliminare
la "cartella" del newsgroup dal vostro NewsReader e poi ricaricare tutti i
messaggi, per vedere se quello cancellato e` stato eliminato o meno.

Esiste un newsgroup chiamato control sul quale vengono visualizzati TUTTI i
messaggi di controllo inviati giorno per giorno.  Anche i vostri....

Altri comandi utili sono newgroup (non newsgroup) e rmgroup, che non
richiedono la conoscenza di elementi come From e ID.

Il primo (newgroup) serve a creare un nuovo newsgroup tutto nostro.
Per usarlo basta dare una linea di comando del tipo:

   newgroup alt.gruppomio

(seguito dalla parola moderated se si vuole che solo chi aggiunge l'header
Approved alle proprie post riesca a inviare messaggi).
Come messaggio andra` scritto quanto segue:

For your newsgroups file:
alt.gruppomio                         descrizione di alt.gruppomio

Per rimuovere un newsgroup (per esempio alt.pedophilia) bisogna invece
utilizzare:

   rmgroup alt.nomegruppo

(come sempre, utilizzando Soggetto, Control e Approved).

Questi comandi, pero`, non sono gestiti quasi mai in maniera automatica,
ma passano per... le mani dell'Amministratore, che puo` decidere di non
permetterne l'esecuzione.

NOTA: nel caso di newgroup e rmgroup puo` essere conveniente utilizzare
come From e Approved l'indirizzo email dell'Amministratore :)
(il cui formato, generalmente, e` news@nome_del_news_server.com)
Attenti pero` a non finire su net-abuse.usenet :-/

Ho spiegato il funzionamento dei comandi "newgroup" e "rmgroup" solo per
completezza, ma non usateli, a meno che non abbiate la certezza che un
news server li accetti automaticamente.

Diversamente, dareste solo MOLTO fastidio al news-admin (amministratore
delle news) e non ottereste niente.


 Accedere tramite Telnet
 ~~~~~~~~~~~~~~~~~~~~~~~
  Ovviamente anche le news - come FTP, IRC, il Web, ecc. - hanno un set di
comandi tramite i quali vengono effettati l'invio e la ricezione dei post,
e molto altro ancora.

  Iniziamo subito.  Ci collegheremo tramite Telnet alla porta 119 del news
server, e aspetteremo il messaggio di "benvenuto" ;) che sara` di questo
tipo:

  200 Interbusiness news server ready, posting allowed

NOTA: alla fine di tale messaggio ci sara` una frase.  Se questa e` "posting
allowed" oppure "posting ok", significa che possiamo usare quel server per
inviare e leggere i messaggi; in caso contrario (not allowed) non potremo
inviare ne` i messaggi normali, ne` tantomeno quelli di controllo, ma
potremo comunque leggerli.

Dunque, per selezionare il newsgroup che ci interessa, utilizzeremo il
comando "GROUP".  Supponiamo di voler scegliere alt.hackers...

  GROUP alt.hackers

il server rispondera` con una linea contenente diverse informazioni (che
vedremo tra poco).

Ora potremmo voler leggere un messaggio di cui conosciamo il Message-ID
(ad esempio, se abbiamo inviato un messaggio di controllo per cancellarlo
e vogliamo vedere se esiste ancora); faremo cosi`:

  ARTICLE 

dove "numero del messaggio" e` il Message-ID.

NOTA: per controllare l'esistenza di un messaggio potremmo anche provare
a usare il comando:  IHAVE 
(se il server non ha quel messaggio, rispondera` "news to me!").

IMPORTANTE!  Il numero del Message-ID va sempre racchiuso tra "< >".

Digitando semplicemente NEXT (seguito da invio a capo) selezioneremo il
messaggio successivo a quello attualmente selezionato.  Per leggerne gli
headers digiteremo HEAD mentre per il "corpo" del messaggio vero e proprio
useremo il comando BODY.

Naturalmente e` possibile selezionare un messaggio (articolo) anche senza
conoscerne il Message-ID.

Digitando (ad esempio):

  GROUP alt.music.progressive

selezioneremo tale newsgroup e avremo una risposta di questo tipo:

  211 100 110 123 msgs Your new group is alt.music.progressive

eccone... l'interpretazione:

  211 e` il messaggio di conferma (numerico) del server
  100 e` il numero di articoli presenti su quel newsgroup
  110 e` il numero del primo articolo
  123 e` il numero dell'ultimo articolo

Supponiamo ora di voler leggere i messaggi; faremo cosi`:

  ARTICLE 110
  (il server rispondera` con un messaggio a ogni comando che gli daremo)
  HEAD 110
  (per avere gli headers del messaggio, se ci interessano)
  BODY 110
  (per leggere il messaggio vero e proprio)

ora possiamo usare NEXT invece di scrivere ARTICLE 111, 112, 113, ecc.
(oppure possiamo continuare cosi`).

Per controllare tutti gli ultimi messaggi arrivati, faremo cosi`:

  NEWNEWS alt.hackers 971201 0512

in questo esempio, il server ci rispondera` con i Message-ID di tutti i
nuovi messaggi (news) inviati dal giorno 01-12-97 (971201 al contrario)
alle ore 05:12 (oppure 0100 per dire dalle 01:00 del mattino, ecc).

NOTA: e` possibile usare un asterisco per selezionare tutti i newsgroup,
oppure una parte di essi.  Per esempio, alt.hack* corrisponde a:

  alt.hack
  alt.hacker
  alt.hackers
  alt.hackers.cough.cough.cough
  alt.hackers.malicious
  ...

Il comando NEWGROUPS e` l'equivalente di NEWNEWS, ma orientato ai newsgroups.
Per avere una lista di tutti i nuovi newsgroup creati da una certa data,
bastera` scrivere:

  NEWGROUPS 971120 0100

(elenca tutti i nuovi newsgroups creati dal 20-11-97 alle 01:00 in poi).

Spieghero`, infine, come inviare un messaggio a un newsgroup.

L'utilita` di postare tramite Telnet e`, principalmente, quella di poter
liberamente inserire tutti gli headers che vogliamo nel nostro articolo.

Ad esempio, per postare un articolo su alt.hackers sappiate che non basta
inviarlo da un normale newsreader (tipo Outlook, Forte Agent e Netscape News)
ma, dal momento che e` un newsgroup MODERATO, dovrete inserire un header
addizionale:

  Approved: yes

(invece di "yes" potete scrivere qualsiasi altra cosa).

Senza questo header, i messaggi inviati saranno respinti dai server in USA.

Il comando da usare e` "POST", seguito dal nostro messaggio, completo di
tutti gli headers e del messaggio vero e proprio.

Ecco un esempio completo:
(S: e` il server, N: siamo noi - ovviamente N: e S: non vanni messi ;)

[ INIZIO ESEMPIO --> ]

N:  POST
S:  340 Continue posting, ecc.....
N:  From: "nessuno" 
N:  Newsgroups: alt.irc.corruption
N:  Subject: prova
N:  Message-ID: 
N:  Date: 12 Dec 97 12:05:22 GMT
N:  Approved: [email protected]                           (opzionale)
N:  X-Newsreader: telnet :)                             (opzionale)
N:  Lines: 3                                            (numero di righe)
N:                                                      (linea vuota)
N:  qui scriviamo...
N:  il nostro...
N:  messaggio!
N:                                                      (linea vuota)
N:                                                      (linea vuota)
N:  .                                                   (punto)
N:                                                      (linea vuota)
S:  240 Article posted successfully
N:  QUIT
S:  205 Interbusiness closing connection.  Goodbye.

[ <-- FINE ESEMPIO ]

Notate la linea vuota seguita dal punto e da un'altra linea vuota, alla
fine del messaggio: serve a indicare al server che il nostro messaggio e`
terminato (ricordate? si fa lo stesso anche con le fakemail).

NOTA IMPORTANTE: se nel vostro messaggio sono presenti linee che iniziano
con un punto, dovrete aggiungerne un altro all'inizio della riga, per
evitare che il news server possa confondere quel punto con il punto che si
usa per indicare la fine del messaggio!


 Postilla
 ~~~~~~~~
  Bene... questa era la teoria, ora datevi alla pratica!
Sarebbe pero` buona norma NON iniziare cancellando messaggi degli altri
(e non farlo neanche dopo, a meno che non sia necessario... tipo spamming,
insulti, ecc).

Iniziate a postare, ad esempio, un normale msg di prova su alt.test.test
(e` un newsgroup di prova sul quale potete scrivere quello che vi pare),
e poi inviate un messaggio di controllo (di tipo "cancel") per eliminarlo
in base al suo "Message-ID".  Se viene cancellato, ci siete riusciti.

NOTA: tenete presente che se avete gia` scaricato il msg sul vostro PC
non vi accorgerete dell'avvenuta cancellazione.  Per controllare, utilizzate
Telnet come descritto sopra.

Per ulteriori informazioni vi consiglio di leggervi la RFC 977 e, se volete
approfondire, anche la RFC 850 (sono in inglese).

Potete prelevare queste documentazioni dai seguenti (o altri) siti:

  ftp://ftp.digex.net/.1/rfc/
  ftp://ftp.ridder.no/.02/rfc
  ftp://ftp.hkstar.com/.1/netinfo/rfc/
  ftp://ftp.almac.co.uk/pub/internet/RFC/
  ftp://ftp.cdrom.com/.22/obi/Networking/rfc/
  ftp://ftp.umr.edu/.pub/rfc/
  ftp://ftp.lysator.liu.se/.pub2/doc/rfc/

(i nomi dei file sono rfc850.txt e rfc977.txt).

Ovviamente ci sono molti altri siti... basta cercare con FTPSearch o Filez
la parola RFC977.TXT (ad esempio) e si avra` una lista aggiornata di siti.

In particolare, la RFC 850 descrive lo standard per lo scambio dei messaggi
su Usenet, mentre la RFC 977 descrive il protocollo NNTP, i comandi "interni"
e tutti i messaggi di errore generati dai server.

Buon lavoro.



   "...rain down... come on rain down on me.... from a great height..."

                                                          -- Radiohead


+- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +-

                           Copyright (C) 1997 by

                     Lord Shinva 

+- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +-