Newsgroup: it.comp.lang.visual-basic
Titolo: Daemon per porta 21

Salve a tutti, vorrei sapere in linea generale come costruire un daemon per
monitorare la porta ftp di un server ed in particolare se, usando un
controllo winsock, devo porlo come server (in ascolto) o come client ?
Grazie a tutti.
Stefano
--------------------------------
Inviato via 
http://usenet.libero.it

 Stefano
Chiarisci il concetto di monitorare!
Se intendi intercettare per poi passare al server ftp, cioč
c'e' un server ftp e tu vuoi fare una sorta di firewall per intercettare le
connessioni
con winsock non puoi
se invece vuoi mettere un'applicazione in ascolto sulla 21 usi
winsock.listen
Terza ed ultima puoi fare un proxy
cioč metti il tuo proggo in ascolto sulla 21 e metti un server ftp in
ascolto sull 31000 e poi tutte le con nessioni
che arrivano sulla 21 le accetti , apri una connessione sulla 31000 e fai da
ponte .
ciao
Lorenzo

 Lorenzo
Dici che non č possibile farlo con Winsock ? Se puoi indicarmi un'altra
via..?! Grazie !!
Stefano
sme...@tin.it


 FTP, comunque la terza ipotesi che hai descritto sarebbe l'ideale:
I files log servono a questo e ogni server ftp decente implementa un suo
file log! Abilita e/o configura il log del server ftp!

 file log! Abilita e/o configura il log del server ftp!
Pur concordando pienamente con Lord Rayden,
se per un qualsiasi motivo vuoi fare tu il log (3 ipotesi)
puoi usare winsock (non si poteva usare per la 1 ipotesi)
per fare un proxy fai cosi
anzitutto devi gestire connessioni multiple per cui ti servono
un controllo winsock in ascolto sulla porta 21
winsock1.localport=21
winsock1.listen
poi ti servono due array di winsock
uno per accettare le connessioni nell'evento connection request di winsock1
(chiamiamolo redirsock())
e l'altro per connetterti alla 3456 chiamiamolo datasock()
che utilizzi cosi
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
redirsock(count).accept requestid
datasock(count).connect "127.0.0.1","3456"
count =count+1
load (redirsock(count))
load(datasock(count))
End Sub
count è un contatore (Dim count as long dichiarato a livello di form) per
tenere traccia delle socket aperte
poi nell'evento dataarrival di redirsock
Private Sub RedirSock_DataArrival(Index As Integer, ByVal bytesTotal As
Long)
dim buff as string
redirsock(index).getdata buff
datasock(index).senddata buff
End Sub
Premetto che questo codice ti deve dare solo un'idea,
l'ho scritto al volo e lo devi considerare solo come una generica guida per
il tuo
Non fare un copia ed incolla perche :
1) non c'e' gestione errore
2) non c'e la gestione della chiusura dei socket (unload con relativi casini
sull'indice count)
3) Non ho verificato la sintassi
Ma il concetto è questo
byez
Lorenzo

Non tenendo conto di Lord Rayden (a me serve anche qualcosa per bloccare un
eventuale attacco..!) il frammento di codice che mi hai dato è interessante
ma, per evitare quei casini con gli array o limitarli almeno, non sarebbe
meglio usare due controlli sullo stesso form (sempre con array per ogni
singola socket) ?
Stefano
Il 05 Mar 2003, 13:07, "Lorenzo" <lcer...@NoSpam--dnsitalia.com> ha
scritto:

--------------------------------
Inviato via 
http://usenet.libero.it

 singola socket) ?
Non ho capito l'obiezione , potresti essere piu chiaro?
per chiarezza , io ti dicevo di mettere 3 controlli sulla stessa form:
uno singolo  (1)
e due array di winsock  (2) (gli array di controlli si creano impostando la
proprieta index del controllo)
totale 3 controlli sullo stesso form
Se poi intendevi proprio eliminare il primo controllo winsock io credo che
questo non semplifichi anzi
peggiori le condizioni di utilizzo perchè all0interno del connection request
dovresti gestire tutto sullo stesso array
In attesa di risposta , ciao
lorenzo

 bloccare un eventuale attacco..!)
....dagli una aspirina!
ma porca miseria...un firewall alla zone alarm non si fa in vb!
non perchè tecnicamente sia impossibile (cosa tra l'altro vera in parte...ma
insomma le api  e tecniche ci sono)
ma perchè inefficiente!
comunque integrando un po ...leggi qui!
Occhio man...va digerita bene sta roba!...ma se hai voglia...telchì
l'articulett!
http://archive.devx.com/upload/free/features/vbpj/2000/10oct00/ys0010/ys0010
.asp
(cavolo ma tutti a mettere ste cose sui vostri emule-cloni????)
--
Il Wodkino Nazionale è a : 
www.martek.it
Bestiario del ng: 
http://www.martek.it/go.asp?PortamiA=2
Download programmi Quotefix ed altro:
http://www.martek.it/go.asp?PortamiA=4
User: ICLVB  pw:  amici

Premetto che il server ftp in ascolto sulla 3456 deve essere configurato per
ricevere connessioni
solo dall'IP 127.0.0.1
altrimenti fanno un port scan e lo trovano ed il tuo proxy non serve piů ad
una fava
ciao
Lorenzo

 lorenzo
Intevo impostare due controlli winsock separati ognuno con la proprietà
index su 0 impostata quindi per accettare più socket, ma forse è lo stesso
processo che hai descritto tu in maniera differente. Comunque il concetto è
più che chiaro ,grazie mille !!!
Stefano


 comunque integrando un po ...leggi qui!
Ma credo che quello che stefano vuole fare sia in definitiva
qualcosa di proprietario e anche esercizio di programmazione
che fa sempre bene.
So che in vb un firewall (tutto indendo) non si dovrebbe fare ma quello che
lui
cerca č esponenzialmente piů semplice di un firewall.
Ed ad ogni modo se dovesse servire
ho sviluppato una dll in cpp (richiamabile da vb) che ti permette di fare
analisi e sniffing di pacchetti sulla rete
ed analizzarne il contenuto
Sfrutta un driver NDIS (winpcap) che ovviamente gira a ring 0 (KERNEL MODE)
e quindi ciapa tutti i paccozzi della rete.
ciao
Lorenzo

 form (sempre con array per ogni singola socket) ?
Considerea che un server ftp utilizza due connessioni per lavorare: una è
quella di controllo e normalmente lavora su una porta fissa... l'altra è per
i dati e si utilizza durante la trasmissione dei files (questa viene
negoziata di volta in volta con il client).

 ed analizzarne il contenuto
emm emm ... aspetto ancora gli aggiornamenti ^__________^
Per ora il contenuto dei pacchetti non li ciuccio ancora ! :-/
Hai visto alla fine il mio exe ?
Ciao e buon lavoro

 wrote in message
news:b44tcc$1rr3lq$1...@ID-174485.news.dfncis.de...

Come non li ciucci?
non riesci ad accedere all'array di byte con i dati di pacchetto?
Non riesci a fare dump su file con la funzione capturedisk()?
Aggiornamenti in arrivo entro domani ti mando un dll aggiornata.
Credo anche di aver risolto il bug per winxp
ciao
Lorenzo

>
ti posso fare anche io da betatester

 Credo anche di aver risolto il bug per winxp
o porc , la mail logicamente era una MAIL non una NEWS , porca miseria
scusate per l'invio sul NG !
Wodka il tuo bestiario mi aspetta ! :(