XP Tel 'N Chat

2001-07-24

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