Re: [Python] salvare file da stream TCP
Il 31 agosto 2010 18:02, Giampaolo Rodolà ha scritto: > In pratica devi fare un server. > Puoi dare un occhio a SocketServer, asyncore, socket e Twisted. > Se sei totalmente a digiuno di questi concetti puoi cominciare con questo: > http://docs.python.org/library/socket.html#example Consiglierei anch'io Twisted. E' un po' "complesso", ma se lo padroneggi può tornarti molto utile in futuro. Saluti, -- Marco Dalla Stella web: http://thediracsea.org twitter: http://twitter.com/kra1iz3c ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] salvare file da stream TCP
Il 01 settembre 2010 09:02, Marco Dalla Stella ha scritto: > Il 31 agosto 2010 18:02, Giampaolo Rodolà ha scritto: >> In pratica devi fare un server. >> Puoi dare un occhio a SocketServer, asyncore, socket e Twisted. >> Se sei totalmente a digiuno di questi concetti puoi cominciare con questo: >> http://docs.python.org/library/socket.html#example > > Consiglierei anch'io Twisted. E' un po' "complesso", ma se lo > padroneggi può tornarti molto utile in futuro. Eh, twited è, purtroppo, troppo per il poco che devo fare e farò. Però sono riuscito a fare qualcosa di usabile con http://docs.python.org/library/socket.html#example, devo solo provare a metterlo sotto stress Grazie a tutti ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] salvare file da stream TCP
Ciao, sto cercando di affronare un problema simile, per cui ho pensato sia inutile aprire un nuovo topic Il problema riguarda la cattura di alcuni messaggi "stringhe xml" che due applicazioni si lanciano attraverso TCP sulla mia rete locale. Ho una prima applicazione (sul portatile host : 192.168.1.2 porta : 7000) che manda un messaggio ad una seconda applicazione che la riceve (sul desktop host : 192.168.1.4 porta : 7000) Vorrei "leggere" (print a schermo) i messaggi che la prima applicazione manda alla seconda Ho controllato che le due applicazioni siano collegate, la comunicazione avviene senza problemi il codice che sto provando ad usare è : from socket import * s = socket.socket() host = '192.168.1.2' port = 7000 addr = host, port s = socket(AF_INET, SOCK_STREAM) s.connect(addr) while 1: data = s.recv(1024) print data ma non mi printa nulla, avete idea di dove sto sbogliando? grazie per qualsiasi aiuto! Massimo. Il giorno 01/set/2010, alle ore 09.02, Marco Dalla Stella ha scritto: > Il 31 agosto 2010 18:02, Giampaolo Rodolà ha scritto: >> In pratica devi fare un server. >> Puoi dare un occhio a SocketServer, asyncore, socket e Twisted. >> Se sei totalmente a digiuno di questi concetti puoi cominciare con questo: >> http://docs.python.org/library/socket.html#example > > Consiglierei anch'io Twisted. E' un po' "complesso", ma se lo > padroneggi può tornarti molto utile in futuro. > > Saluti, > -- > Marco Dalla Stella > web: http://thediracsea.org > twitter: http://twitter.com/kra1iz3c > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] salvare file da stream TCP
Io ho fatto così ... che sia giusto o meno ... funziona (occhio che ci sono le righe per aprire e leggere file) # Echo server program import socket HOST = '' # Symbolic name meaning all available interfaces PORT = 8001 # Arbitrary non-privileged port while 1: # Connessione s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((HOST, PORT)) s.listen(1) conn, addr = s.accept() print 'Connected by', addr # Ricevo i dati data = conn.recv(1024) if data: filename = data f = open(filename,"r") print f.readline() # Chiudo la connessione conn.close() # Sarebbe la risposta #conn.send(data) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] salvare file da stream TCP
Devi usare i raw socket ;) http://behindlinuxpower.blogspot.com/2010/06/linux-sniffer-in-python.html guarda questo se ti può essere utile ;) -- castor91 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] salvare file da stream TCP
In tal caso, essendo il task molto semplice, il mio consiglio è quello di scrivere un semplice server coi cari buon vecchi socket. Col server di esempio mostrato nella documentazione hai praticamente gia fatto tutto. Riguardo il come intercettare "FINE_FILE" è molto semplice. Con socket.recv() leggi i dati dal socket un tot alla volta, li salvi da qualche parte e poi implementi la logica per "dividerli" in base a FINE_FILE. --- Giampaolo http://code.google.com/p/pyftpdlib/ http://code.google.com/p/psutil/ Il 31 agosto 2010 19:18, ugaciaka ha scritto: > Rispondo un po' a tutti e intanto vi ringrazio per le risposte qui datemi. > > Da quanto ne so, scusate ma non posso proprio essere più preciso, c'è > un software (sviluppato tanto tanto tempo fa, installato in una > galassia lontana lontana) che spedisce via TCP/IP dei file xml (più > che altro è un flusso). > > Il server che intercetta il tutto esiste già: è scritto in Delphi 6 e > usa i componenti Indy, per sapere quando finisce un file e ne inizia > un altro (se non ho mail interpretato il codice) controlla man mano se > c'è la stringa FINE_FILE (il client remoto la inserisce apposta questa > stringa). > > Purtroppo dopo anni di onorato servizio, forse per qualche > aggiornamento windows ma nessuno ha capito perché e io ho rinunciato, > tutto questo non funziona più perché vengono sollevate eccezioni di > una dll di windows (ntdll.dll). Ho controllato con Wireshark e il > flusso arriva corretto, quindi è colpa del server. > > Visto che a noi serve anche solo un semplice script che salvi questi > file da qualche parte ho pensato subito a Python, domani leggo meglio > questi esempi http://docs.python.org/library/socket.html#example ma > non vedo come "spezzare" all'arrivo di una stringa ben precisa ... > > Alla luce di queste precisazioni, che non ho potuto dare prima > purtroppo, chiedo ulteriori lumi a riguardo. > > Grazie :-) > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] salvare file da stream TCP
Il tuo problema è diverso in quanto ti vuoi inserire in uno stream tra due socket. Per questo genere di cose, anzichè i socket RAW, ti possono tornare decisamente più utili le libpcap. Per Python ne esistono diversi binding (io ho utilizzato pcapy: http://oss.coresecurity.com/projects/pcapy.html). --- Giampaolo http://code.google.com/p/pyftpdlib/ http://code.google.com/p/psutil/ Il 01 settembre 2010 10:25, Massimo Di Stefano ha scritto: > Ciao, > > sto cercando di affronare un problema simile, > per cui ho pensato sia inutile aprire un nuovo topic > > Il problema riguarda la cattura di alcuni messaggi "stringhe xml" > che due applicazioni si lanciano attraverso TCP sulla mia rete locale. > > Ho una prima applicazione (sul portatile host : 192.168.1.2 porta : 7000) che > manda un messaggio ad una seconda applicazione che la riceve (sul desktop > host : 192.168.1.4 porta : 7000) > > Vorrei "leggere" (print a schermo) i messaggi che la prima applicazione > manda alla seconda > > Ho controllato che le due applicazioni siano collegate, > la comunicazione avviene senza problemi > > > il codice che sto provando ad usare è : > > > from socket import * > s = socket.socket() > host = '192.168.1.2' > port = 7000 > addr = host, port > s = socket(AF_INET, SOCK_STREAM) > s.connect(addr) > while 1: > data = s.recv(1024) > print data > > ma non mi printa nulla, > avete idea di dove sto sbogliando? > > grazie per qualsiasi aiuto! > > Massimo. > > Il giorno 01/set/2010, alle ore 09.02, Marco Dalla Stella ha scritto: > >> Il 31 agosto 2010 18:02, Giampaolo Rodolà ha scritto: >>> In pratica devi fare un server. >>> Puoi dare un occhio a SocketServer, asyncore, socket e Twisted. >>> Se sei totalmente a digiuno di questi concetti puoi cominciare con questo: >>> http://docs.python.org/library/socket.html#example >> >> Consiglierei anch'io Twisted. E' un po' "complesso", ma se lo >> padroneggi può tornarti molto utile in futuro. >> >> Saluti, >> -- >> Marco Dalla Stella >> web: http://thediracsea.org >> twitter: http://twitter.com/kra1iz3c >> ___ >> Python mailing list >> Python@lists.python.it >> http://lists.python.it/mailman/listinfo/python > > > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] salvare file da stream TCP
Si, le libpcap sono molto potenti e facili da usare. I raw socket sono meno potenti ma è veramente bello poter dire di essere riuscito ad usarli perchè di guide non se ne trovano fatte bene... Comunque se quello che devi fare è uno sniffer che intercetti tutto, con le libpcap hai molta più probabilità di successo poichè hanno una percentuale di intercettamento di pacchetti molto superiore ai raw socket. -- castor91 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] salvare file da stream TCP
On Wed, Sep 01, 2010 at 09:46:23PM +0200, Giampaolo Rodolà wrote: > In tal caso, essendo il task molto semplice, il mio consiglio è quello > di scrivere un semplice server coi cari buon vecchi socket. > Col server di esempio mostrato nella documentazione hai praticamente > gia fatto tutto. > Riguardo il come intercettare "FINE_FILE" è molto semplice. > Con socket.recv() leggi i dati dal socket un tot alla volta, li salvi > da qualche parte e poi implementi la logica per "dividerli" in base a > FINE_FILE. Sperando che il file in questione non sia un'email a proposito di come salvare i file da stream TCP, dove FINE_FILE viene citato molto spesso ma non per indicare la fine di un file ma per stabilire il patter di divisione degli stessi. Sarebbe seccante che il file si interrompesse qui. FINE_FILE Oppure qui. FINE_FILE O qui. FINE_FILE FINE_FILE FINE_FILE FINE_FILE FINE_FILE FINE_FILE FINE_FILE FINE_FILE FINE_FILE FINE_FILE m. > --- Giampaolo > http://code.google.com/p/pyftpdlib/ > http://code.google.com/p/psutil/ > > Il 31 agosto 2010 19:18, ugaciaka ha scritto: > > Rispondo un po' a tutti e intanto vi ringrazio per le risposte qui datemi. > > > > Da quanto ne so, scusate ma non posso proprio essere più preciso, c'è > > un software (sviluppato tanto tanto tempo fa, installato in una > > galassia lontana lontana) che spedisce via TCP/IP dei file xml (più > > che altro è un flusso). > > > > Il server che intercetta il tutto esiste già: è scritto in Delphi 6 e > > usa i componenti Indy, per sapere quando finisce un file e ne inizia > > un altro (se non ho mail interpretato il codice) controlla man mano se > > c'è la stringa FINE_FILE (il client remoto la inserisce apposta questa > > stringa). > > > > Purtroppo dopo anni di onorato servizio, forse per qualche > > aggiornamento windows ma nessuno ha capito perché e io ho rinunciato, > > tutto questo non funziona più perché vengono sollevate eccezioni di > > una dll di windows (ntdll.dll). Ho controllato con Wireshark e il > > flusso arriva corretto, quindi è colpa del server. > > > > Visto che a noi serve anche solo un semplice script che salvi questi > > file da qualche parte ho pensato subito a Python, domani leggo meglio > > questi esempi http://docs.python.org/library/socket.html#example ma > > non vedo come "spezzare" all'arrivo di una stringa ben precisa ... > > > > Alla luce di queste precisazioni, che non ho potuto dare prima > > purtroppo, chiedo ulteriori lumi a riguardo. > > > > Grazie :-) -- Lo punite del fatto che la sua infanzia ha strisciato sul suolo senza stelo e senza tutore; gli imputate come un misfatto l'isolamento in cui lo avete lasciato; della sua sventura fate il suo delitto! Nessuno gli ha insegnato a sapere ciò che faceva: quest'uomo ignora. La sua colpa appartiene al suo destino, non a lui. Voi colpite un innocente. -- Victor Hugo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python