Re: [Python] salvare file da stream TCP

2010-09-01 Per discussione Marco Dalla Stella
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

2010-09-01 Per discussione ugaciaka
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

2010-09-01 Per discussione Massimo Di Stefano
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

2010-09-01 Per discussione ugaciaka
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

2010-09-01 Per discussione castor91
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

2010-09-01 Per discussione Giampaolo Rodolà
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

2010-09-01 Per discussione Giampaolo Rodolà
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

2010-09-01 Per discussione castor91
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

2010-09-01 Per discussione Marco Giusti
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