nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

[socket TCP/IP - difficile?] accedere ai frame tcp di un socket

X-FaceVon: warp (vac@picard.starfleet.ufp) [Profil]
Datum: 21.05.2008 00:09
Message-ID: <H_HYj.148$qW3.66@nntpserver.swip.net>
Newsgroup: it.comp.os.linux.development
Ciao a tutti.
Ho un problema con un reverse engineering di un protocollo di
comunicazione proprietario basato su scambio di messaggi su ethernet tcp/
ip.

Ho fatto una sessione di wireshark ed ho trovato come costruire un
pacchetto che emula un client windows. Ho perciò fatto un programmino
che in sostanza esegue i seguenti passi:

1. creazione del socket
2. bind su una porta locale sorgente
3. connect sul sistema remoto su una porta particolare
4. invio del messaggio.
5. resta in attesa della risposta

Co wireshark ho visto che il flusso dati combacia fino ai primi 4 passi,
ma il quinto inesorabilmente fallisce co timeout.
Il problema che ho è che il messaggio viene ignorato, nonostante che il

payload sia corretto. Se invece provo a mandare un messaggio malformato,
o con errori, ottengo immediatamente un reset della comunicazione da
parte del sistema remoto.

Ho notato però che il frame tcp del client win e del mio programmino no
n
sono uguali, sotto linux il frame contiene il campo options che riempie
di zeri e con il timestamp (opzionale nel TCP) di 12 byte e suppongo che
il server controlli la dimensione dell'header. Nel sistema windows
invece, l'header manca del tutto della parte opzionale. Oltre a ciò, il

campo window su win è fisso (65535), mentre in linux è decisamente +
basso.

Ho cercato inutilmente di accedere ai parametri di comunicazione con
setsockopt(), con risultato negativo.
Suppongo che son qualche ioctl() o syscall() si possa fare, ma non sono
riuscito a trovare come

Qualcuno saprebbe dirmi come fare a modificare i parametri di un socket?

Grazie in anticipo.

Saluti

[ Auf dieses Posting antworten ]