Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    5

    [VB6] Intercettare pacchetti da un dato indirizzo IP

    Intanto buongiorno a tutti, questo è il mio primo post.

    Dato che ho letto il regolamento del forum, precisiamo subito una cosa: so che quanto sto per scrivere potrebbe essere utilizzato anche per scopi non proprio leciti. Metto le mani avanti proprio perchè non è il mio caso (non ho intenzione di mettermi a scoprire falle di sicurezza nella Rete, ho una vita ), è solo per pura e semplice curiosità personale.

    Detto ciò, vi spiego il mio problema. In tempi recenti mi sono interessato alla lettura dei pacchetti che il server invia al client. Stavo provando con 209.85.229.104, che poi nient'altro essere se non Gughel . Mi è dunque balzata alla mente l'idea (malsana) di provare a fare un programmino che immagazzinasse automaticamente in una variabile (o in una casella di testo, la sostanza non cambia) i pacchetti, man mano che arrivavano da un dato IP, per poi farne un'elaborazione testuale.

    Ho provato a utilizzare un po' di conoscenze scolastiche che avevo relativamente al protocollo Winsock, ma, impostando i vari parametri, tentando di connettermi e mettendomi in Listen, il DataArrival se ne stava lì, solo soletto. (vado un po' OT: perchè?)

    Mi son messo alla ricerca di qualcosa di già pronto, che esiste: apro il codice e , con quello che so di VB6 potrei anche prenderlo e buttarlo dalla finestra (l'unica cosa che son riuscito a fare è togliere i dati esadecimali e mostrare solo quelli testuali, madò! ). In conclusione, quello che volevo chiedervi è se c'è qualche anima buona che mi possa illuminare su cosa dovrei toccare sul codice che ho postato per:
    • non visualizzare indiscriminatamente tutto quello che arriva, ma solo quello che arriva dall'IP 111.222.333.444
    • fare in modo che non debba essere l'utente a cliccare per vedere il contenuto del pacchetto che arriva, o comunque che, all'arrivo del pacchetto, la funzione f parta automaticamente.

    (ho già provato, senza successo, a contattare l'autore). Tutto sommato, ho capito che bisognerebbe modificare qualcosa nel modulo mdlwinsock, ma cosa proprio no. Ah, se ci fosse qualche altro metodo, leggermente più svelto, in VB6 (o, tuttalpiù, in qualche altro linguaggio, così ho un buon motivo per studiarlo) è ben accetto.

    Grazie a tutti quelli che sono arrivati fin qui a leggere e che avranno la pazienza e la voglia di rispondermi.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ho visto tutto il codice ma mi sembra che nella sub

    display2

    tu possa controllare (con apposite if) il risultato della

    getascip(ip_header.ip_srcaddr)

    prima di eseguire la

    Set lvitem = Form1.listview1.object.ListItems.Add(, , getascip(ip_header.ip_srcaddr))

    in modo da selezionare gli IP "sorgenti" e in modo analogo, per gli IP "destinazione" ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    5
    Perbacco che rapidità! Appena riesco provo (non mi ricordo se l'avevo provato su XP o su Vista, inutile dire che su uno dei due ho qualche problema ) e ti faccio sapere.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    5
    Era Vista, chissà poi perchè . Riprovato su XP con il sistema che mi hai suggerito, funziona (ho risolto con degli appositi if dopo CopyMemory_any (...) inseriti sia in display1 che in display2).

    Ultima domanda: se hai fatto girare il programma, ti sarai accorto che per vedere il contenuto del pacchetto devi necessariamente cliccare su uno degli elementi della ListBox. La funzione che visualizza i pacchetti è:

    codice:
    Sub display_packet(bbytes() As Byte)
    ...
    che, ovviamente, riceve bbytes. L'unico posto in cui viene settato bbytes è:

    codice:
    Public Sub ListView1_ObjectEvent(info As EventInfo)
    ...
    bbytes = listview1.object.selecteditem.Tag
    Il problema, appunto, è proprio il fatto che per far apparire il pacchetto nella casella di testo sottostante, devo selezionarlo col mouse. Qualche idea per automatizzarlo? Ho provato a fare qualcosa modificando il Case "Click" della sub, ma, in soldoni, non so che case mettere.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma come vorresti visualizzare il testo? Ovvero, di quale pacchetto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    5
    Sì, non mi sono spiegato bene bene. Allora, ipotizziamo che la mia elaborazione duri 5 minuti e che, ad ogni minuto, arrivi un pacchetto.

    Al minuto 1 arriva il primo pacchetto da 111.222.333.444: ok, visualizzo il contenuto nella TextBox.
    Al minuto 2 arriva il secondo pacchetto dallo stesso IP: ok, è arrivato un nuovo pacchetto, lo visualizzo nella TextBox, quello vecchio può anche sparire.
    Al minuto 3, terzo pacchetto: visualizzo nella TextBox e il secondo sparisce.

    e così via. Chiaro?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... i pacchetti arrivano un po' piu' velocemente e rischi di non capire nulla ...

    Comunque, nella display2, prima della End Sub, puoi inserire

    codice:
        Dim bbytes() As Byte
        bbytes = lvitem.Tag
        If UBound(bbytes) > 0 Then
            Form1.display_packet bbytes
            DoEvents
        End If
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    5
    Sì, beh, arriverebbero un po' velocemente, ma io ho adottato un particolare accorgimento sul contenuto per far sì che ciò non accada (altrimenti, effettivamente, non era molto utile )

    Comunque funziona benissimo. Ti ringrazio immensamente!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.