[socket TCP/IP - difficile?] accedere ai frame tcp di un socket
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 ]
