XP Tel ‘N Chat

When I was 16, I used to write articles under the nicknames Esorcista and XpTerminator.

The following is a tutorial on how to write a “telnet” client in Visual Basic and how to extend it to send e-mails with a spoofed sender.

This tutorial got published on the 4th issue of OndaQuadra, an Italian e-zine.

 

+-------------------------------------------------------------------------------+
| ONDAQUADRA MAGAZINE ~ [L'APPRENDiSTA STREG0NE]               #03 - 17/09/2001 |
| XP TEL 'N CHAT                                      [Xp Terminator] 0x22/0x29 |
+-------------------------------------------------------------------------------+


oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO
Ne io ne lo staff di oq si assume responsabilità su ciò che farete con il
programma allegato
oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO



SALUTI: saluto tutti i miei amici di #hack , free.it.hacker.virus e soprattutto BigAlex!!
THX: ringrazio me stesso per aver creato il programma e visual basic per non essersi crashato mai durante lo sviluppo (che mazzo! :) (cmq, caso rarissimo, non tentate di imitarlo... ;)
FUCK: un grande vaffxxxulo a tutti i lamerz!
DEDICATED TO: dedico questa guida a tutti quelli che mi conoscono!
WHERE : potete trovarmi su #chihackerare o #hack di irc.azzurranet.org o sul ng free.it.hacker.virus
SITE : due giorni fa ho pubblicato il mio sito, visitatelo! http://xpterminator.cjb.net
Time: 22:58:52
Date: 24/07/01



Tramite questo tutorial cercherò nel modo più semplice possibile di spiegare come sia possibile
tramite visual basic, realizzare un proprio telnet, oppure un proprio client irc, ecc,ecc,
utilizzando come esempio il programma da me realizzato Xp Tel 'n chat. Questo è in allegato
con onda quadra, e funge da telnet, chat, inviatore di mail anonime, e prende pagina http o ftp
tramite proxy....



oOoOoOoOoOoOoOoOo REALIZZIAMO IL NOSTRO TELNET PERSONALE!!! oOoOoOoOoOoOoOoOoOoOoO

[premetto che utilizzeremo il protocollo tcp...]

In visual basic, l'invio e la ricezione dei dati in rete, è gestito da un controllo ocx, 
chiamato Microsoft Winsock Control. Esso non è inserito come controllo standard, quindi
non lo troveremo nella barra standard. Per aggiungerlo seguiamo questi passi:
click col tasto destro sulla barra dei controlli (dove si trovano picture, label, textbox, ecc...)
e scegliamo dal menu "Components..." (la mia versione di vb è inglese, ma credo che voi riusciate a capire i relativi corrispondenti in italiano...)
Si aprirà una finestra; scendiamo fino ad arrivare al controllo Microsoft Winsock Controll [ver] (ver è il numero di versione),
spuntiamo la casella corrispondente e clicckiamo sul tasto ok. Ora noteremo che sarà stato
aggiunto il nuovo controllo winsock.
Siamo pronti!
Facciamo doppio click sul nuovo controllo per inserirlo nel form.
Ora tramite esso possiamo effettuare qualsiasi operazione in internet...
decidete, cosa volete fare?
mmmmm, la mia prima idea è stata quella di realizzare un semplice programma telnet,
poichè non è detto che ognuno debba per forza usare il telnet di winzoz, che per altro non è
neanche ben fatto... (cmq, vi dico subito che il telnet che realizzeremo non permetterà di connettersi,
per esempio, al server www.server.com sulla porta telnet, poichè non è compatibile con il tipo di terminale...,
cmq non rattristitevi! tutte le altre operazioni le potremo fare! come inviare mail più o meno anonime, ecc....)
Allora, pronti per la vostra versione personalizzata di telnet?
Per prima cosa dovremo creare due textbox che chiameremo textbox1 e textbox2.
In queste l'utente inserirà rispettivamente server e porta per la connessione.
Quindi, creiamo un pulsante e cambiamo la caption in "Connetti! / Disconnetti!"
Nell'evento click del pulsante inseriamo il codice:

0101010100011010101010101010010101011010101010101010110

    If Winsock1.State <> sckClosed 'controlla se il winsock e' gia' connesso
    	Winsock1.Close		   'quindi chiude la connessione
    	Exit Sub 		   'ed esce dalla routine
    End If
  
    Winsock1.RemoteHost = Text1.Text        'imposta il contenuto di text1 come host remoto a cui connettersi
    Winsock1.RemotePort = Text2.Text        'imposta il contenuto di text2 come porta dell'host a cui connettersi
    Winsock1.Connect			    'si connette

0101010100011010101010101010010101011010101010101010110

In questo momento, il winsock tenta di connettersi alla porta tot del server tot, quindi avviene il three-way-handshake.
Quando questo sarà terminato cosa succede? Se la connessione e' andata a buon fine
il server ci inviera' una stringa che varia da porta a porta, ovvero da demone a demone.
Come possiamo ricevere questo messaggio e visualizzarlo?
Per prima cosa creiamo un'altra textbox, textbox3.
Impostiamo le proprietà del textbox : multiline deve essere true, e scrollbars sul valore 3 (both).
Ma ora come facciamo a capire quando riceviamo i dati?
Nel momento in cui il server ci risponde, il winsock genera un evento chiamato dataarrival, quindi inseriamo nel codice:

0101010100011010101010101010010101011010101010101010110

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
   Dim dati As String                   'dichiariamo la viariabile
   Winsock1.GetData dati, vbString      'inseriamo i dati inviati dal server nella variabile
   Text3.Text = text3.text & dati       'inseriamo i dati nel textbox, in modo che siano leggibili dall'utente
End Sub

0101010100011010101010101010010101011010101010101010110

Quindi, da come si vede, inseriamo ciò che ci invia il server nella nuova textbox.
Ora però che programma sarebbe se non possiamo rispondere al server?
Creiamo una nuova textbox, text4, ed un nuovo bottone.
Nel textbox saranno inseriti i dati da inviare, mentre col nuovo tasto li invieremo..
Quindi nella routine dell'evento click del nuovo tasto inseriamo:

0101010100011010101010101010010101011010101010101010110

    Winsock1.SendData text4.text & vbCrLf            'inviamo al server il testo contenuto nel text4, seguito da un carattere che fa capire al server che la stringa da inviare è finita, e che quindi può rispondere...
    text3.text = text3.text & text4.text & vbCrLf    'inseriamo i dati anche nella textbox precedente

0101010100011010101010101010010101011010101010101010110

Come vedete ora inviamo i dati al server, ed inseriamo gli stessi anche nella stessa
textbox nella quale inseriamo le risposte del server, in modo tale da avere sotto
controllo tutta la sessione telnet...
Ed ora cos'altro dobbiamo aggiungere per poter correre a dire agli amici di aver creato un telnet?
Niente! :)
Hiihihih

Certo non permette operazioni troppo complesse, ma rimane sempre un telnet più che buono! sopratutto paragonato ai programmi della microzoz...



Con ciò abbiamo realizzato un buon telnet, usando la stessa procedura che ho usato per realizzare il mio.
Ma come si può chattare? 
Facilissimo direte voi! Basta connettersi ad una porta prescelta del computer di un amico e comunicare!
Sii! Pero' per connetterci alla porta del nostro amico, c'e' bisogno che lui sia in ascolto!
Ok, allora, togliamoci questo atroce problema, ed aggiungiamo i componenti che possano
permettere alla nostra applicazione di fungere da server...
Aggiungiamo quindi, una textbox, text5, ed un bottone.
Nella text5 dovrà essere inserita la porta sulla quale mettersi in ascolto;
cambiate la caption in "Mettiti in ascolto!" e, all'evento click del nuovo bottone inseriamo:

0101010100011010101010101010010101011010101010101010110

    Winsock1.LocalPort = text5.text    'Impostiamo il valore contenuto in text5 come porta locale d'ascolto
    Winsock1.Listen		       'Mettiamo in ascolto il winsock

0101010100011010101010101010010101011010101010101010110

Ok! Ora e' tutto fatto vero? No!
Come possiamo sapere quando qualcuno sta tentando di connettersi sulla nostra porta in ascolto?
Semplice, esiste come prima un altro evento che avviene in tal caso: connectionrequest.
Quindi inseriamo questa routine nel codice:

0101010100011010101010101010010101011010101010101010110

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
   If Winsock1.State <> sckClosed Then Winsock1.Close     'Se la connessione è aperta la chiude
   Winsock1.Accept requestID 				  'Accetta la richiesta di connessione  
End Sub

0101010100011010101010101010010101011010101010101010110

Ora basta che o noi o il nostro amico si metta in attesa su una determinata porta, 
e l'altro ci si connetta e si puo' chattare! :)
L'unica pecca e' che colui che si connette ha bisogno di sapere l'ip del computer al quale connettersi!

Ora il gioco è veramente fatto!
Abbiamo tra le nostre mani un ottimo programma!
Ma non sarebbe meglio aggiungere qualche optional?
Ok, potremmo aggiungere un form per inviare le mail anonime.

Creiamo un nuovo form, form2, ed inseriamo all'interno tre textbox normali, ed una
quarta nella quale settiamo le proprieta' : multiline = true, e scrollbars = 3 (both)
Ora aggiungiamo un pulsante, un timer, ed un controllo winsock.
Nei rispettivi textbox inseriremo: mittente, destinatario, oggetto e messaggio da inviare...
Impostiamo la proprieta' delay del timer1 su 1000 ed enabled su false.
Ora nell'evento click del bottone inseriamo:

0101010100011010101010101010010101011010101010101010110

    Winsock1.RemoteHost = "193.70.192.50"    'imposta mail.libero.it come host remoto
    Winsock1.RemotePort = "25"               'imposta 25 come porta remota (smtp)
    Winsock1.Connect                         'avvia la connessione al server
    Timer1.Enabled = True                    'attiva il timer1 (cioè avvia il conto alla rovescia del valore impostato precedentemente ovvero 1000 ms, alla fine dei quali viene eseguita la ruotine timer relativa al timer)

0101010100011010101010101010010101011010101010101010110

ora facciamo doppio click sul timer ed inseriamo nell'evento timer:

0101010100011010101010101010010101011010101010101010110

If Winsock1.State = 7 Then                                  'se e' avvenuta la connessione
   
    Winsock1.SendData "helo xp_trmntr.net" & vbCrLf                  'saluta il server
    Winsock1.SendData "mail from: <" & Text1.Text & ">" & vbCrLf     'indica al server il mittente (falso!)
    Winsock1.SendData "rcpt to: <" & Text2.Text & ">" & vbCrLf       'indica al server il destinatario
    Winsock1.SendData "data" & vbCrLf                                'indica al server che inizia il messaggio da inviare
    Winsock1.SendData "From: <" & Text1.Text & ">" & vbCrLf          'inserisce nelle intestazioni della mail il mittente
    Winsock1.SendData "To: <" & Text2.Text & ">" & vbCrLf            'inserisce nelle intestazioni della mail il destinatario  
    Winsock1.SendData "Subject: " & Text3.Text & vbCrLf              'inserisce nelle intestazioni della mail l'oggetto
    Winsock1.SendData vbCrLf                                         'invia una riga vuota      
    Winsock1.SendData Text4.Text & vbCrLf                            'invia il messaggio
    Winsock1.SendData vbCrLf                                         'invia una riga vuota         
    Winsock1.SendData "." & vbCrLf                                   'indica al server che la mail e' finita
    Winsock1.SendData "quit" & vbCrLf                                'chiude la comunicazione con il server  
    MsgBox "Invio completato!"					     'avverte l'utente che l'invio e' stato completato   
    
Else                                                         'se invece non ci si e' connessi al server
    
    MsgBox "Impossibile connettersi al server per l'invio dell'e-mail!"  'avverte l'utente dell'errore
    
End If

0101010100011010101010101010010101011010101010101010110

Ora torniamo al form1, e creiamo un pulsante, inserendo come caption "Invia email anonima!"
ed inserendo come codice della routine click:

0101010100011010101010101010010101011010101010101010110

form2.show

0101010100011010101010101010010101011010101010101010110

in modo tale da visualizzare il form per inviare l'email anonima.


Bhe' cos'altro c'e' da dire!
Spero che da oggi in avanti vi creerete le cose da soli! poiche' come avete
visto non e' affatto difficile! e' spero che quindi non andiate piu' ingiro a chiedere
tutto gia' pronto...cio' che non avete realizzatevelo! :)

Per critiche, per domande, per mandarmi affCENSUREDulo o per presentarmi vostra sorella :))
scrivetemi all'email xp_terminator@katamail.com

Ciauz :)
Xp Terminator