Sniffare la rete

di il
19 risposte

Sniffare la rete

Ciao a tutti,
sono un nuovo utente del forum. Sono un utente "abbastanza" esperto (programmo in C da diversi anni ormai per studio/lavoro).

Da qualche settimana sto provando a sviluppare un software per gestire dei database. Evito di entrare nei dettagli perché vi annoierei ma quel che vorrei far io lo fanno diversi programmi già presenti, a me servirebbe per sviluppare un progetto di studio.

Quel che vorrei fare è sniffare la rete: leggere cioè i pacchetti che ricevo da un'applicazione (client) connessa ad un web server e quindi interpretare i dati. Ho trovato su internet poche indicazioni (inglesi) su come poter intercettare i pacchetti passanti nel proprio PC dalla rete ma non riesco a capire come selezionare e, soprattutto, interpretare quelli che interessano a me.

So che è una domanda molto complessa ma se qualcuno saprebbe darmi indicazioni su come iniziare ve ne sarei molto grato!

19 Risposte

  • Re: Sniffare la rete

    Senza ulteriori informazioni, non si puo' dire nulla.

    Hai dato anche informazioni contrastanti:

    1) parli di database: l'applicazione si connette al database mediante una connessione TCP/IP. Il tool per sniffare la connessione e' Wireshark

    2) parli di web server: il client (browser) si connette al web server mediante sempre una connessione TCP/IP (come sopra) ma che segue il protocollo HTTP. Il tool dedicato ad analizzare il traffico HTTP si chiama Fiddler

    Come si usano?
    Non e' possibile spiegarlo in un post: sono tool molto sofisticati e chi li usa conosce tutta la teoria sottostante, la terminologia coinvolta ed ha gia' chiaro che cosa sta cercando. Per come ottenerlo, c'e' la documentazione

    Comunque, sono gratuiti e c'e tutta la documentazione che serve (in inglese!!!!)
  • Re: Sniffare la rete

    Puoi utilizzare la libreria libpcap/WinPcap su linux/windows esattamente come fa wireshark che in fondo è solo un utilizzatore di quelle librerie/driver.
  • Re: Sniffare la rete

    Per niubbi smartsniff di nirsoft
  • Re: Sniffare la rete

    Sempre winpcap usa ...
  • Re: Sniffare la rete

    migliorabile ha scritto:


    Senza ulteriori informazioni, non si puo' dire nulla.

    Hai dato anche informazioni contrastanti:

    1) parli di database: l'applicazione si connette al database mediante una connessione TCP/IP. Il tool per sniffare la connessione e' Wireshark

    2) parli di web server: il client (browser) si connette al web server mediante sempre una connessione TCP/IP (come sopra) ma che segue il protocollo HTTP. Il tool dedicato ad analizzare il traffico HTTP si chiama Fiddler

    Come si usano?
    Non e' possibile spiegarlo in un post: sono tool molto sofisticati e chi li usa conosce tutta la teoria sottostante, la terminologia coinvolta ed ha gia' chiaro che cosa sta cercando. Per come ottenerlo, c'e' la documentazione

    Comunque, sono gratuiti e c'e tutta la documentazione che serve (in inglese!!!!)
    1) la mia applicazione deve gestire dei database nel senso che una volta lette le informazioni che mi servono aggiorno i database. Non ho scritto che mi connetto ad un database

    2) Esatto. Ho un'applicazione che riceve dei dati da un web server. Io devo "intercettare" questi dati per poterli, appunto, inserire in un database che aggiornerà le statistiche, informazioni, ecc...

    Utilizzo Visual Studio (e il linguaggio C). Dovrei quindi importare una delle librerie che mi avete consigliato? Ma la vera domanda è: (perché devo pagare quando prelevo??) come faccio a riconoscere, tra tutti i pacchetti che passano dal mio router, proprio quelli che servono a me?? Come faccio a sapere il "loro nome" ?


    Grazie ancora per l'aiuto, e spero di esser stato chiaro. Se vi servono altre informazioni ditemi pure
  • Re: Sniffare la rete

    Dovresti dare maggiori dettagli su quello che vuoi fare perché sto cominciando a confondermi.

    1) ricevi dati da un web server? E allora a cosa serve sniffare la rete? Non c'entra nulla ... Fai un esempio pratico, con indirizzo web e dati che vuoi ottenere

    2) aggiorni un db? Per aggiornarlo ti ci devi connettere ... altra incongruenza ... anche qui spiega meglio ...
  • Re: Sniffare la rete

    Non so cosa tu debba pagare, ma penso che hai le idee un pò confuse.
    Partiamo dal presupposto che ormai tutte le connessioni sono protette da SSL quindi i messaggi sono criptati.
    Ti devi mettere in mezzo tra il server ed il client, operazione anche semplice da fare, basterebbe scrivere un proxy, ma a questo punto devi far credere al server che tu sia il client e al client che tu sia il server e riuscire a "rubare" le chiavi e decriptare o messaggi.
    Dopo questa fatiscente operazione da Hacker devi conoscere per filo e per segno il protocollo usato perché altrimenti ti ritroveresti ancora con una serie di 1 e 0 che ti scorrono sullo schermo.
    Ne vale la pena?
    prova a spiegare bene cosa devi fare, chi è il server? chi è il client? perché ti servono i dati? cosa conosci del sistema?
    solo con queste risposte possiamo aiutarti.
  • Re: Sniffare la rete

    oregon ha scritto:


    Sempre winpcap usa ...
    Sì, ma (almeno per le mie abitudini) è piccolo, comodo e veloce per questo tipo di lavori (è il reporting a fare la differenza)
  • Re: Sniffare la rete

    vbextreme ha scritto:


    Non so cosa tu debba pagare, ma penso che hai le idee un pò confuse.
    Partiamo dal presupposto che ormai tutte le connessioni sono protette da SSL quindi i messaggi sono criptati.
    Ti devi mettere in mezzo tra il server ed il client, operazione anche semplice da fare, basterebbe scrivere un proxy, ma a questo punto devi far credere al server che tu sia il client e al client che tu sia il server e riuscire a "rubare" le chiavi e decriptare o messaggi.
    Dopo questa fatiscente operazione da Hacker devi conoscere per filo e per segno il protocollo usato perché altrimenti ti ritroveresti ancora con una serie di 1 e 0 che ti scorrono sullo schermo.
    Ne vale la pena?
    prova a spiegare bene cosa devi fare, chi è il server? chi è il client? perché ti servono i dati? cosa conosci del sistema?
    solo con queste risposte possiamo aiutarti.
    Bhè SSL non è affatto così diffuso, ad esempio questo forum non lo usa
    Non è neppure sempre vero di avere pacchetti binari, ad esempio nel caso di HTTP ci sono proprio le GET e le risposte "plaintext"


    Da quanto posso "intuire" quello che si vuol fare è una sorta di spider che catturi il traffico durante la navigazione su in sito Web (questa è una mia supposizione), per poi fare altre cose (normalmente archiviarle per elaborarle successivamente).
    Non mi è invece chiarissimo il db: ad esempio è normale (almeno per quanto mi riguarda) intercettare il traffico tra un client e un server LAN (e sottolineo LAN), per capire ad esempio quale tipo di query e comandi vengono inviati tra l'applicativo X e SQL Server (o mysql), per ricostruire la tipologia delle query, correggere eventuali errori etc.
  • Re: Sniffare la rete

    Scusate se non sono stato molto chiaro ma non volevo andare ot e quindi concentrarmi solamente sull'argomento riguardante la programmazione. Forse sono stato contrastante proprio perché cercando di dire tutto e niente si rischia di esser fraintesi, com'è appunto accaduto.
    Comunque sia quel che voglio fare è la seguente:
    Ho un programma/gioco online (il classico gioco di carte) che ovviamente riceve delle informazioni da un server. Sto cercando di sviluppare un programma che intercetta tutti i dati inviati dal server al programma (o meglio, i dati della partita in corso) per poterli inserire in un database con il quale svilupperò statistiche, percentuali e varie informazioni. Ho scelto questo argomento come progetto da sviluppare perché me la cavo abbastanza bene con la gestione dei database, mi affascina l'idea di poter sviluppare un programma simile e tutto il resto; l'unica cosa che mi manca (e che spero valga la pena di provare a sviluppare) è proprio come prendere i dati che riceve l'applicazione. Ho già scritto gran parte del codice ma mi manca proprio quest'ultima parte; vorrei quindi capire se continuare per questa strada o se, a malincuore, cambiare argomento del progetto.

    Grazie a chiunque mi ha già risposto e chi voglia aiutarmi
  • Re: Sniffare la rete

    Ricapitolando: hai un gioco web, in cui il client e' un browser (IExplorer/Safari/Firefox/Opera/... non e' importante) che comunica in modo BIDIREZIONALE (non solo riceve i dati, ma li deve inviare) con un WEB SERVER sul quale e' installata un'applicazione Web (scritta in PHP/Java/Python/C#/... non e' importante) la quale, a sua volta, parla con un database (Oracle/SQLServer/MySQL/PostgreSQL/... non e' importante).

    Ora, tu vorresti installare un software su una macchina (quella del client? quella del server? su una macchina diversa? se su una macchina diversa, su quale rete? quella del client? quella del server? su un'altra rete? ...), per analizzare il traffico HTTP tra il browser ed il WEB server, estrarre delle informazioni, ed inserirle in un TUO database?

    Avrai alcune leggere difficolta' (complicate da risolvere anche per uno esperto )
    1) se la comunicazione e' su HTTPS, il problema non e' risolvibile
    2) ammettendo una comunicazione HTTP, devi analizzare in continuazione il traffico HTTP (che poi e' di tipo TCP/IP) e fare il reverse engineering di quello che passa per capire che cosa serve e che cosa no
    3) devi capire quale traffico HTTP devi analizzare tra tutte le connessioni HTTP che il browser apre
    4) devi avere accesso alla connessione TCP/IP! Il che non e' scontato. Se sui sulla macchina client o server, e' possibile, ma se sei su una macchina terza, anche ammettendo che sei sulla rete del client o del server, non e' detto che tu possa accedere al traffico TCP/IP tra le altre due altre macchine ...

    Potrei continuare ...

    Ovviamente tutto puo' essere agirato, ma le competenze per farlo, le conoscenze tecniche e i software da utilizzare, non e' patrimonio di un programmatore alle prime armi, e molto spesso nemmeno di uno esperto.

    E per la spiegazione non basta certamente qualche post in un forum, ...

    Esiste un pproccio piu' canonico per questo tipo di applicazioni: l'approccio consiste nell'aggiungere nel database dei trigger/stored procedures le quali, ogni volta che viene fatto una insert/updae/delete sulle tabelle del gioco, vengono corrspondentemente aggiornate delle tabelle di servizio usate specificatamente per le statistiche.

    A questo punto, la tua applicazione accede a queste tabelle di servizio e fa quello che deve fare.

    Se non hai accesso al DB o non lo puoi modificare, allora esistono ulteriori soluzioni alternative (l'uso di proxy ...) ma la cosa diventa, di nuovo, decisamente complicata ...
  • Re: Sniffare la rete

    Parliamo di poker online? E se ho capito non c'è un terzo pc che sniffa, vuoi fare tutto dal tuo pc...
  • Re: Sniffare la rete

    Ripeto, il problema non è "rubare" i pacchetti, con un proxy si fa in 30 minuti, o forse meno.
    Il problema è che è HTTPS, S sta per SSL, Alcuni dicono che sia inviolabile ma in realtà l'utente stesso può violarlo, si può dire al server che il proxy è il client ed scambiarsi le chiavi, l'utente cambia la chiave pubblica del webserver inserendo la chiave pubblica del proxy, a questo punto il proxy può far credere al client di essere il server.
    Ecco ora sai come sniffare in chiaro i dati.
    Ma a questo punto, secondo te il server del poker online usa un protocollo che tutti conoscono? si metterebbe cosi a rischio? o utilizzerà un protocollo proprietario?
    Nel secondo caso, il piu probabile, potrebbero volerci anni per risolvere l'enigma.

    Magari però puoi creare un pagina web che ti salvi cosa premi e dove lo premi e risalire a quello che accade, bisogna vere come è stato implementato.

    Non mi rimane che augurarti "in bocca al lupo"
  • Re: Sniffare la rete

    No l'applicazione che voglio sviluppare girerebbe sullo stesso PC sul quale è installata l'applicazione di gioco e non su un terzo PC. Per questo motivo speravo ci fosse un modo non troppo impossibile per leggere i dati.

    Mi basterebbe leggere "semplici dati" come ad esempio i nick dei giocatori seduti al tavolo e il numero di fiches che ciascuno possiede. Già solo queste informazioni mi permetterebbero di creare un sistema base per gestire le statistiche.
    Non so se qualcuno di voi ha esperienza con questo tipo di programmi ma ce ne sono di diversi (e famosi) in circolazione, ma che fanno ovviamente cose più complicate di quel che vorrei sviluppare io. Quindi sicuramente c'è un metodo per far tutto ciò; la questione è capire il come

    Grazie ancora per l'aiuto
Devi accedere o registrarti per scrivere nel forum
19 risposte