
     -= Master *** =-
Master-Hacker@spippolatori.com
        SPP MEMBER
   www.spippolatori.com


La programmazione del winsock 2.

 Cosa sarete in grado di fare con poche righe di codice e il vostro immancabile VB:

    Un completo portscan e scansite per recuperare tutti i servizi aperti da un range
    prestabilito di ip ..ricavando anche il nome dei server remoti utilizzati.

    Uno usenet-robot per cancellare su uno o su un insieme di news group articoli provenienti
    da spammatori (o altro) seguendo determinati criteri di ricerca.
    (ad esempio parlole chiave presenti o non-presenti nel subject, determinati nntpp-posting,
    ecc...)

    Una chat ad ingresso multiplo. (Convertibile in xxx - server)

    Tutta una serie di server personali: ftp server, telnet shell, sendmail, popserver, ecc..
 
    Un programma per dialogare con i vostri amici in completa segretezza annullando anche
    la possibilita' che il vostro provider possa leggere i messaggi inviati.
 
 .. dati gli argomenti mi scuserete se invece delle solite 10/15 righe di codice sorgente
 per gli esempi mi terro' un po' piu' alto. :)   
 
 Del resto e' opinione comune che, ad esempio, farsi un server personale sia una cosa
 complicatissima e per la quale sono necessarie migliaia di righe di codice, una preparazione
 tecnica con i fiocchi e chissa' quali ocx e librerie dll introvabili.
 Vi mostrero' invece che e' semplicissimo e bastano si e no 10 minuti di lavoro. 


                                        - . -
 
 Come prima cosa una Errata Corrige (o quasi) all'articolo precedente.

ERRATA CORRIGE: <La programmazione del Winsock 1>
======================================================================================
 C'e' un errore (involontario) relativamente al codice usato per generare le risposte dal 
 programma di esempio Simil-bopsy per il protocollo UDP.
 Cioe'.. il programma funziona ma spedisce al client un codice con un errato 
 header e quindi la risposta non viene visualizzata ..se non nei termini di BAD HEADER
 da parte del client di backorifice.
 Cio' e' dovuto al fatto che per generare il cifrato ho usato un mio codificatore in C che  
 non sempre funziona.  .. nessuno e' perfetto. ;-P 

 basta sostituire alla linea  UDP1.SendData "+c1/4uK(tm)_+ +t?3[SU|S"`-_"

 quella corretta              UDP1.SendData "+cuK+ +t?3[SU|S`__Y"

 ..sempre per la risposta "ma la vogliamo finire!?" .. per altre risposte bisogna 
 trovarsi i codici col sistema che avevo spiegato.

 .. poi c'e' anche una precisazione da fare:

 A qualcuno non funziona il programma 'veloce' per spedire le mail a causa del delay.
 Questo e' dovuto solamente al fatto che l'smtp usato e di tipo vecchio e non replica con il
 carriage return all'invio delle singole righe inviate dopo il campo data
 (Il mio lo fa.. quindi a me funziona)
  ...il delay allora non riceve i riempitivi per la variabile -ricevi- e si pianta alla 
ricerca di una risposta che (almeno da QUEL particolare server) non verra' mai.
I sendmail recenti inviano ad ogni ricezione dati almeno un CR di conferma
  Cambiare smtp?? ..:) ..beh ..vediamo di modificare il programma d'esempio.
 
 mi ripromettevo appunto di pubblicare una procedura piu' generica.. e lo faccio ora. ;-)
  
              Voglio ricordare pero' che tutti gli esempi citati sono solo 
              esempi. Ovviamente ognuno deve poi essere in grado di modificarli 
              per ottenere i PROPRI risultati specifici! Questi articoli non 
              vogliono essere le -info- di un insieme di programmi da usare 
              cosi'-come-sono ma solo un tutorial)


 per la modifica quindi sarebbe sufficiente sostituire il vecchio delay con questo
------------------------------------------------------------
Private Sub delay()
 pausa = 6
 inizia = Timer
 Do While Timer<inizia+pausa
   DoEvents
   If ricevi<>"" Then GoTo fuori
 Loop
 fuori:
End Sub
------------------------------------------------------------

  ovvero .. se riceve una risposta dal server passa subito all'invio successivo
 del comando. In caso contrario ( con diversi smtp appunto non si ricevono risposte 
 di conferma all'invio delle singole linee dopo il campo DATA ) da per buono che il comando 
 sia stato inviato comunque e dopo <pausa> secondi (6 in questo caso) passa al comando 
 successivo.
 
 (Si poteva usare un Exit al posto del GoTo ma ho notato che dava problemi collaterali
  con le risposte del dataarival..non so perche'.)

 per una ulteriore velocizzazione e generalizzazione di tutta la procedura consiglio anche
 di inviare tutto il Body della mail compreso il punto finale in un unico SendData.

 Quindi la procedura da sostituire al posto della precedente :

--------------------------------PRECEDENTE
Dim ricevi as String
Private Sub  spedisci()
   TCP1.Connect "mail.server.it",25
   ricevi = "": delay
   TCP1.SendData "HELO ciao" & VbCrLf 
   ricevi = "": delay
   TCP1.SendData "MAIL FROM: pippo@de.pippi" & VbCrLf 
   ricevi = "": delay
   TCP1.SendData "RCPT TO: mio@amico.it" & VbCrLf 
   ricevi = "": delay
   TCP1.SendData "DATA" & VbCrLf 
   ricevi = "": delay
   TCP1.SendData "Subject: PROVA" & VbCrLf  
*   ricevi = "": delay
   TCP1.SendData "TE LO MANDO IO" & VbCrLf  
*   ricevi = "": delay
   TCP1.SendData "." & VbCrLf  
   ricevi = "": delay
   TCP1.close
End Sub
--------------------------------


 potrebbe essere questa:

-------------------------------- NUOVA
 Private Sub Command1_Click()
 TCP1.Connect "mail.server.it", 25
   ricevi = "": delay
   TCP1.SendData "HELO ciao" & vbCrLf
   ricevi = "": delay
   TCP1.SendData "MAIL FROM: pippo@de.pippi" & vbCrLf
   ricevi = "": delay
   TCP1.SendData "RCPT TO: mio@amico.it" & vbCrLf
   ricevi = "": delay
   TCP1.SendData "DATA" & vbCrLf
   ricevi = "": delay
   TCP1.SendData _
    "Subject: PROVA " + vbCrLf + vbCrLf + "TE LO MANDO IO " + vbCrLf + "." & vbCrLf
   ricevi = "": delay
   TCP1.Close
End Sub
--------------------------------

 (Basterebbe anche cancellare le linee che ho segnato con asterisco in quella vecchia)

  .. si puo' usare con questa procedura che non ricerca conferme per-linea sia il vecchio
 delay che il nuovo.

======================================================================================

  .. un ultima cosa prima di entrare nuovamente nel meraviglioso mondo del winsock.
 I programmi di esempio sono tutti acclusi in formato uuecnode in fondo al testo dell'articolo
 mi e' stato chiesto come fare per estrarli. hi hi hi.
 ...basta il programma uudecode.exe che trovate tramite l'ftp search... o ancora meglio 
 tra le migliaia di tools che estraggono i prog codificati uuencode vi consiglio di usare
 Windows Commander 3.53 (oltretutto e' migliore 1000 volte di gestione risorse.) 
 selezionando il testo dell'articolo con i programmi acclusi e dando file/decodifica UUE
 fa tutto automaticamente.

 Eventualmente se vi scoccia usare Wincom salvate tutto il testo contenente le codiiche
 UUENCODE (anche tutto l'articolo volendo) con un nome tipo ARTICOLO.UUE 
 (importante l'estensione UUE) .. e poi apritelo con WINZIP.
 Anche winzip appunto fa le decodifiche. Ci troverete dentro i programmi allegati.

 Oppure lo chiamate ARTICOLO.EML e lo aprite con Outlook .. fa lo stesso!
 Le procedure sono molteplici e tutte funzionanti. ;-)



                                           - . -


 Per finire la parte precedente relativa al mono winsock :) .. ovvero a quei programmi che
 non necessitano di piu' socket attivi come una chat o un server al quale devono collegarsi
 piu' utenti contemporaneamente vi mostro come fare due cose discretamente utili sia per
 quello che riguarda il mondo dell'hacking sia in generale.


*******************************************************************************************      
************** WINSOCK CHAT CON INVIO DEI PACCHETTI SU TCP CODIFICATI DES. ****************
*******************************************************************************************      


 Mandare messaggi via TCP e' sempre una procedura particolarmente poco sicura nel senso che
 anche se si ha la matematica certezza che nessuno sia al lavoro, da qualche parte nel mondo,
 per 'sniffarci' i nostri bei pacchettini di bytes a nostra insaputa sappiamo sempre pero' 
 che almeno per il nostro rispettivo provider 'sbirciare' quello di inviamo o 'memorizzare' 
 la nostra posta o visualizzare quello che scriviamo su icq o su una chat e' veramente
 molto semplice.
 Nessun dubbio che nel 99% dei casi il provider sospettato sia un gentiluomo d'altri tempi
 e un furbo amministratore della sua azienda che sa molto bene quello che rischierebbe con
 determinati atteggiamenti.. per quell'altro 1% di casi ... ;-)

 E' ovvio che e' possibile spedire mail cifrate col PGP e altri ammennicoli vari... ma 
 quando si va a -dialogare- tramite irc, icq, o le chat e' sempre un problema mantenere
 un minimo di segretezza.

 Una delle cose migliori da fare un questo caso e' usare un proprio programma di comunicazione
 (chat) che abbia l'opzione di cifrare i dati prima di spedirli via TCP e decifrarli appena
 dopo l'avvenuta ricezione.

 Come supporto base possiamo usare il programma per la Chat che avevo pubblicato su
 "la programmazione del winsock 1".

 L'unica cosa da fare allora e' aggiungere al form una checkbox per spuntare l'opzione
 di cifratura. (quindi sara' possibile inviare e ricevere dati cifrati o in chiaro .. a
 scelta).. 

 e strutturare due funzioni  codifica(string) e decodifica(string) capaci di codificare
 e docodificare una stringa resituendone il suo inverso.

 come avevo gia' detto sara' a questo punto sufficiente codificare tutte le stringhe 
 di dati prima dell'invio tramite winsock col senddata:

  ...
   text="testo da inviare"
   If Check1.Value = 1 Then text = codifica(text)
   TCP1.SendData text
  ...

 e decodificarle appena dopo l'arrivo:

  ...
   Private Sub TCP1_DataArrival(ByVal bytesTotal As Long)
   ...
    TCP1.GetData Data
    If Check1.Value = 1 Then Data = Decodifica(Data)
   ...
  ...


 Un esempio delle funzioni codifica e decodifica e' questo:
  E' una cosa molto semplice ma per correttezza devo dire che l'ho trovata free in rete 
  da qualche parte, non e' di mia stesura.. ho solo trovato comodo implementarla qui..
  e citerei anche la fonte se solo sapessi quale. ;-)


 Function codifica(testa As String) As String
   Dim aggiunta As Byte
   Dim chiave As Byte
   Dim L1, L2 As Integer
   Randomize
   aggiunta = Int((255 * Rnd) + 1)
   chiave = Int((255 * Rnd) + 1)
   L1 = chiave
   L2 = 1
   While L2 < Len(testa)
      Mid(testa, L2, 1) = Chr((Asc(Mid(testa, L2, 1)) + L1) And 255)
      L1 = (L1 + aggiunta) Mod 256
      L2 = L2 + 1
   Wend
   testa = Chr(chiave) & testa & Chr(aggiunta)
   codifica = testa
End Function


 E' un simil-DES come cifrato. 
 
 Viene creata per la codifica un valore chiave e una aggiunta. Il valore chiave viene
 sommato al codice di ogni carattere complementandolo in and logico a 255.
 Successivamente la chiave cambia ( per evitare che lettere simili in sequenza siano 
 cifrate allo stesso modo) secondo il modulo a 256 della chiave stessa piu' l'aggiunta.

 Questo sistema e' relativamente sicuro per quello che potrebbero essere i nostri 
 scopi .. ma come ho sempre detto.. non ci spedirei i piani di invasione di un paese
 straniero. :))

 C'e' pero' il vantaggio che il cifrato di un messaggio e' sempre diverso e contiene gia'
 per l'algoritmo del ricevente tutto quello che serve alla decofica quindi non e' 
 necessario mettersi d'accordo preventivamente sulle frasi 'chiave'. 


  La decodifica e' questa invece

Function Decodifica(testa As String) As String
   Dim aggiunta As Byte
   Dim chiave As Byte
   Dim L1, L2 As Integer
   aggiunta = Asc(Right(testa, 1))
   chiave = Asc(Left(testa, 1))
   testa = Mid(testa, 2, Len(testa) - 2)
   L1 = chiave
   L2 = 1
   While L2 < Len(testa)
      Mid(testa, L2, 1) = Chr((Asc(Mid(testa, L2, 1)) - L1) And 255)
      L1 = (L1 + aggiunta) Mod 256
      L2 = L2 + 1
   Wend
   Decodifica = testa
End Function

 
 Studiandovi un po' le due procedure vedrete che sono praticamente uguali..
 solo che la prima (codifica) fa la -somma- della chiave .. la seconda (decofica) fa
 solamente la sottrazione.
 Del resto ogni cifratore/decifratore fa esattamente la stessa cosa indipendentemente
 dall'algoritmo scelto... per decifrare si inverte il processo di cifratura.


 .. il programma di esempio lo trovate in fondo uuencode.   


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                          chat cifrata.zip 4131 bytes
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

  
  
 
                                         . - .



  Ultimo esempio mono-sock.

****************************************************************************************
  Come farsi un robot per usenet (un bot per intendersi) 
****************************************************************************************

  Mettiamo per prima cosa di voler controllare su un particolare ng la presenza di articoli
  provenienti da un determinato autore.. o la presenza di una parola chiave negli header 
  o nel body di un articolo.

  Tramite telnet o netcat agiremmo cosi:

  telnet news.server 119  (119 e' la porta del servizio NNTP relativo e usenet)

   GROUP <nome del newsgroup>

   - Con GROUP si seleziona il news group da controllare.
   
   ARTICLE n (per leggere l'articolo numero N) 

   .. meglio di article, per i nostri scopi, e' inceve il comando XHDR

  XHDR <nome del campo header> <numero articolo o range di articoli>
    (serve leggere solamente il campo di quel particolare header)

  se ad esempio avessimo trovato una lista di articoli da 1 a 100

  XHDR from 1-100  

  ritornerebbe sulla nostra finestra di dialogo una lista di artcoli numerati progressivamente
  da 1 a 100 con il contenuto del campo From: .. ovvero il nick e l'indirizzo mail dell'autore.


  XHDR Message-ID  1-100 ritornerebbe invece tutti i message ID dei messaggi indicati.


  La lista di ritorno viene terminata dal server news con un terminatore punto "." un un
  Carriage return + Line feed ( caratteri ascii 13+10)

  Quest'ultima considerazione e' molto importante.. vedremo poi perche'!  
      
   trovato l'articolo che ci interessa cancellare bisognerebbe trovare il
   suo message-ID  (il referenziatore dell'articolo stesso su quel news server)

   faccamo un esempio pratico:

   Stiamo cercando sul news.tin.it -> alt.spippolatori ( he he ) un messaggio contenente la
   frase "SIETE TUTTI DEI BRADIPI!!!" ne subject per cancellarlo in quanto l'autore ha eseguito 
   uno spamming indesiderato con una fastidiosa lista sequenziale.
   
   Telnet news.tin.it 119
   GROUP alt.spippolatori
   LISTGROUP alt.spippolatori

    (mettiamo esca una lista di articoli numerati da 234 a 381)

   XHDR Subject 234-381

    .. controlliamo e memorizziamo il numero di quelli con "VUOI DIVENTARE RICCO?"
     
    (mettiamo di aver trovato -validi- i messaggi da 118 a 222)

   troviamo i rispettivi message ID con

   XHDR Message-ID 118-222

   si memorizzano e si passa alla cancellazione postando un nuovo articolo con queste caratteristiche
   e secondo questa procedura (per ogni articolo da cancellare):

   POST  
  
   quindi di seguito vanno inviati gli header mimini della cancellazione:

   From: "nick" + <indirizzo del cancellatore> (diversi dai vostri originali possibilmente)
   Newsgroups: <il nome del ng dove e' presente l'articolo> 
    Subject: cmsg cancel <Message ID trovato>
    Control: cancel <Message ID trovato>
   Approved: ok.

  (Nota .. sarebbe meglio anche se non indispensabile  inserire nell'approved un indirizzo 
   email con il dominio della mail relativa all'autore dell'articolo che stiamo cancellando.
   Se per esempio si cancella un articolo di Samba@rumba.com l'approved dovrebbe almeno 
   essere <qualcosa>@rumba.com .. se non lo stesso Samba@rumba.com!)
 

  E' necessario pero' leggere ogni singolo articolo e ritrovare quelle parole chiave
  che si sono imposte prima di passare alla cancellazione. 
  Robot (bot) significa infatti costruire una procedura automatica che faccia il tutto 
  automaticamente, e vb e winsock ci vengono in aiuto:

  
  Vi accludo un programma di esempio 



@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                     CANCELLINO.zip 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@



 (UUENCODE attaccato all'articolo)per  farvi vedere come dovrebbe essere impostato 
 il lavoro per la costruzione del robot.

  Due considerazioni importanti:

  1. IL PROGRAMMA E' A SCOPO ESCLUSIVAMENTE DIDATTICO.. e oltretutto e' solo la base del
  prodotto finito. Non pretendete oltretutto che funzioni da tool testato e sicuro cosi' 
  com'e'. (Anzi sinceramente non l'ho nemmeno provato.. lascio a voi le modifiche e gli
  esperimenti per farlo funzionare)
  Sono solo poche righe di sorgente che ho scritto in 5/10 minuti di tempo libero e sono
  solo parte di cio che serve (anche se le funzioni essenziali e necessarie ci sono tutte)
  ne chiedetemi di farne uno piu' efficace o che lavori meglio.. lo ripeto..lo scopo e' 
  esclusivamente didattico e se volete un programma a vostra immagine e somiglianza ve lo
  dovete fare da soli. 
  
  2.Uno dei motivi per i quali mi sono messo in testa di scrivere questi articoli ( che spero
  utili a qualcuno) e' proprio per dare a tutti i newbies lo 'spunto' necessario per imparare 
  qualcosa di nuovo e non certo per proporre modelli o pubblicare programmi che eseguano
  operazioni illecite.

     ps.. il programma e' la base per poter selezionare degli articoli sul ng seguendo 
  i criteri della presenza o della non-presenza di parole chiave in diversi campi
  degli header (a scelta) .. con una sezione per inviare tramite una fake i comandi 
  di cancellazione.
  C'e' anche un paio di api e una piccola libreria dll acclusa che gestisce l' I/O delle
  porte su windows per far visualizzare lo stato del led del modem.
  (Ma sono solo per bellezza.. in effetti non servono a niente ai fini pratici) ;-)


                                  . - .

   
  *****************************************************************************************

 Fino a questo punto abbiamo trattato il winsock come uno strumento lineare. Abbiamo cioe'
 considerato sempre una sola ed unica linea di collegamento tramite la quale spedire e 
 ricevere i nostri dati.

 In molti casi ed in molte altre applicazioni piu' serie questo non e' possibile.

 Pensiamo al caso di una chat effettiva. Si lecito pensare che gli utenti che si
 collegheranno a noi potrebbero essere piu' di uno.

 In questo caso non e' possibile usare un solo sock (o socket) come linea di connessione,
 ma il winsock e' un semplice controllo percui nessuno vieta di caricarne sul nostro form
 2,5,10 o anche 100 o piu'.
 
 Ad ognuno verra' attribuita una connessione con un eventuale nuovo utente.

 Questo e' utile ad esempio nei portscan dove molti servizi chiudono bruscamente il 
 collegamento con con gli avventori cuasando un errore -di linea- e la caduta del
 socket... e' utile allora reagire prontamente con un secondo socket da alternare al
 primo.

 E' utile nei server dove, a parte la possibilita' ovvia di permettere l'accesso al 
 servizio a N utenti, la disponibilita' di molti socket a ricerca ,in caso d'errore,
 garantisce la stabilita' del server stesso e la sua permanenza attiva.
 
Ogni sock puo' essere chiamato con nomi di fantasia TCP1, TCP2, SOCK, WSCK, WINSOC, PIPPO,
ecc.. ma questo creerebbe una moltitudine di procedure dedicate alla loro gestione:

 Servirebbe infatti il controllo dell'evento dataArrival su ogni sock, 
 un controllo d'errore per gli stessi e cosi' via.

 Il vb permette invece di creare una matrice di socket molto semplicemente.

 E' sufficiente trascinare sul form un solo controllo winsock, chiamarlo ad esempio TCP
 e mettere la proprieta' index a 0
 
  implementando a questo punto una procedura del tipo

  For n=1 to 100
    Load TCP(n)
  Next n

 verranno caricati 101 Socket diversi (c'e' anche lo 0!) su ognuno dei quali sara' possibile
 effettuare un nuovo collegamento.

 Le procedure per il controllo degli eventi oltretutto saranno sempre minimizzate in quanto
 nei parametri delle stesse sara' ora presente anche la variabile INDEX che specifichera'
 appunto il socket sul quale si stanno ricevendo, spendendo i dati.

  
 es:

 Private Sub TCP_DataArrival(Index As Integer, ByVal bytesTotal As Long)
 GetData ricevi
 ..   Print "Ho ricevuto il dato " + Ricevi
 ..   Print "Dal socket n." + index
  end sub 

 Quando la variabile ricevi si modifica in concomitanza dell'arrivio di nuovi dati 
 noi sapremo sempre da che socket arrivano tramite INDEX.

 Allo stesso modo sara' possibile spedire dati ad un particolare socket (o a piu' di uno
 di essi) verificandone prima l'avvenuta connessione.

 
 Potremo ad esempio spedire dati sul socket numero 13 se questo e' in collegamento con
 qualcosa.

 Come fare per verificare il collegamento?

 La proprieta' Tcp(n).State ci da di ritorno un valore numerico

  0,2 chiuso, errore, in attesa
  7.. connesso 

 bastera' quandi controllare questa proprieta' per essere sicuri di spedire qualcosa su
 un socket attivo.

 es. Spedire a tutti i sock connessi la parola "ciao"

  for n=0 to 100
    if TCP(n).State= 7 then TCP(n).SendData "Ciao"
  Next n


 es.  Aprire il primo sock disponibile (chiuso o in errore) tra tutti quelli caricati
      collegandsi ad un servizio HOST:porta

  For n=0 to 100
    If TCP(n).State=0 or TCP(n).State=2 then
       TCP(n).Close
       TCP(n).Connect HOST, porta
       Sock_Attivo=n
       Exit For
   Next n

ecc..

 Lo stesso discorso nel caso della progettazione di un server dovra' essere utilizzato 
 per le richieste di identificativo e la successiva messa in Listen. (Ne parleremo piu' 
 avanti)



   Proviamo a vedere come dovrebbe essere fatta allora una Chat per permettere a piu' 
 utenti di collegarsi con noi.

 La stessa dovrebbe permetterci di poter spedire un messaggio a tutti gli utenti, a un solo
 utente selezionato alla volta o ad un gruppo di utenti prescelti.

 ## Importante: questo sistema sara' la base per la fabbricazione di un server personale
  (FTP, SMTP, POP o altro.. non ha importanza la tecnica e' sempre la stessa l'unica cosa
   che cambia e' la modalita' di interpretazione dei comandi come specificato negli RFC)

 
 Facciamo il caso di un server CHAT allora che sia disponibile all'ingresso di 30 utenti
 come limite massimo.

 Ho messo come porta per il servizio la N.666 .. a voi potrete mettere quella che preferite
 ovviamente.

 La prima cosa da operare sara' l'attivazione come avevamo detto di 30 sock diversi.

 Caricato il winsock control sul nostro form, lasceremo TCP1 come nome e inizializzaremo 
 la proprieta' index a 0.

  con 

Private Sub Form_Load()
On Local Error Resume Next
    TCP1Close socket
    TCP1(socket).LocalPort = 666
    TCP1(socket).RemotePort = 0
    TCP1(socket).Listen
End Sub

 Ci colleghiamo al primo sock (socket e' una variabile globale che si incrementa ad
 ogni nuova connessione)

ci premuniremo anche di una procedura

 Private Sub Form_Unload(Cancel As Integer)
    Dim n As Integer
    For n = 0 To socket
    TCP1Close n
    Next
End Sub

per chiudere tutti i sock attivi a fine lavoro per liberare piu' risorse possibile.
(Il winsock ne mangia dverse infatti quando si comincia a caricarne molti
 contemporaneamente)


 Ad ogni nuova richiesta di connessione la nostra chat dovra' attivare un nuovo socket

 Private Sub TCP1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    socket = socket + 1
    Load TCP1(socket)
    TCP1(socket).Accept requestID
End Sub


  Ad ogni arrivo dati la chat dovra' visualizzare il dato stesso con prima il socker
 di provenienza

 Private Sub TCP1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
   On Local Error Resume Next
  If viene <> Index Then
     visualizza vbCrLf + "S(" + CStr(Index) + ")" + " > "
       viene = Index
    End If
    Dim text As String
    TCP1(Index).GetData text
    If (Right$(text, 1) = Chr$(10) Or Right$(text, 1) = Chr$(13)) And Right$(text, 2) <> vbCrLf Then
      text = Left$(text, Len(text) - 1) + vbCrLf
    End If
    visualizza text
End Sub


 merita un attenzione particolare la linea

If (Right$(text, 1) = Chr$(10) Or Right$(text, 1) = Chr$(13)) And Right$(text, 2) <> vbCrLf Then

serve perche' se ci si collega alla chat con telnet o con netcat si avrebbero risultati 
diversi.

Telnet infatti termina l'invio di dati con un CR+LF  mentre Netcat si limita all'invio di 
un LF (o CR?)  .. e questo darebbe caratteri indesiderati sulla nostra casella di dialogo.


.. la base del programma e' tutta qui.

 Scaricatevi il sorgente 


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
             SOCK MULTIPLO.ZIP 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


 allegato in UUENCODE e dateci un'occhiata dopo averlo compilato e fatto girare.

                  

 Potrete collegarvi alla chat attiva alla porta 666 sia con telnet che con netcat
 anche senza essere in rete mettendo ovviamente il vostro localhost al posto dell'ip
 
 .. qundi ricapitolando..

  caricate la chat (sock multiplo) .. poi avviate N telnet con

  Telnet 127.0.0.1 666

  e N Netcat con

  Netcat 127.0.0.1 666

     (netcat forse vi fara'partire il dialer per connettervi al localhost.. date annulla
      non serve essere connessi per collegarsi a se stessi. ;-) )

  Ogni sock sara' monitorizzato in una finestrella apposita in basso.

  A sinistra appare una lista dei sock attivi.. e' possibile fare una selezione multipla
  quindi spedire a tutti quelli selezionati con INVIA il contenuto della textbox a sinistra
  di invia appunto. (come fa netcat)

  Nella textbox appena sopra bastera' scrivere qualcosa per inviare immediatamente (on air)
  i dati a TUTTI i sock attivi. (Come fa telnet)

  Scrivendo qualcosa su i vari telnet e netcat aperti i dati arriveranno alla vostra chat
  con in testa il numero identificativo del sock di provenienza.


   ... il programma.. continuo a ripeterlo.. e' solo un ESEMPIO.. non e' un tool finito.
  Si potevano implementare migliaia di altre finezze, controlli sugli errori e altro.
  Ma questo ovviamente esulava completamente dagli obiettivi di questo manuale.
  
  


   Da spulciare senza troppe altre spiegazioni vi accludo (sempre ne magico UUENCODE) 
 altri due programmi di ESEMPIO da guardare che potrete usare e modificare come vi pare.
 Potete dire anche che li avete fatti voi.. avete il mio permesso ;-)

  
  E sono un porscan - scansite .. il cui funzionamento voglio sperare capirete da soli.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                         CERCA.ZIP
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


  E un SERVER BASE ..

  Provate a caricarlo compilandolo. La porta del servizio la scegliete voi.
 
  Di base c'e' la 666 (come sempre! ;-) ) .. una volta attivo vi collegate con
  telnet o con netcat.

  Se non siete collegati   telnet 127.0.0.1 666

  .. dopo di che scrivete su telnet HELP per avere le istruzioni e i comandi disponibili.

  Ps.. ci sono solo quattro comandi stupidi.. se volete fare un server FTP o un SMTP e' 
  necessario leggersi MOLTO bene gli RFC per sapere cosa rispondere ai comandi inviati
  da telnet e in che termini. Cmq non e' affatto difficile.

  ah .. il server base e' il programma  


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                        SERVER.ZIP
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


  e gestisce solo una connessione alla volta.. ma modificarlo pe accettare connessioni
  multiple e' molto semplice..

  La procedura request-id ad esempio potrebbe essere modificata cosi':

Private Sub TCP1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
  For sock = 1 To 30
  If (TCP1(sock).State = sckClosed Or TCP1(sock).State = sckError) Then
   TCP1(sock).Close
   DoEvents
    TCP1(sock).LocalPort = 0
    TCP1(sock).Accept requestID
    Label1.Caption = "Collegamento effettuato e ATTIVO"
    Host = TCP1(sock).RemoteHostIP
    Exit For
  End If
  DoEvents
 Next
End Sub

 






begin 644 chat cifrata.zip
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
M%``4``(`"`!9AW$F8BFY)`,!```*`P``"````````````"````!$"0``9F]R
;;2YF<GA02P4&``````0`!`#8````;0H`````
`
end
sum -r/size 24785/2907

begin 644 cancellino.zip
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
M````$```"P```````````"`````P%0``5VEN.35I;RYD;&Q02P4&``````0`
,!`#F````C1@`````
`
end
sum -r/size 4021/6537




begin 644 sock multiplo.zip
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
99G)X4$L%!@`````$``0`Y````.8*````````
`
end
sum -r/size 12988/3040

 
begin 644 CERCA.zip
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
M````````(````%H+``!C97)C82YF<GA02P4&``````0`!`#<````EPP`````
`
end
sum -r/size 38820/3465


begin 644 SERVER.zip
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
1````!``$`-P```#C#0``````
`
end
sum -r/size 44055/3797
