Les Forums

Les Forums

Les forums sont fermés. Ils restent présent pour consultation et archivage.
Vous pouvez désormais poser vos questions directement dans les commentaires en bas de chaque page du site.
Alors n'hésitez pas à participer

[C / Linux (Ubuntu)] Dev. projet necessitant votre aide

Bonjour / bonsoir,

Voilà je dois, avec plusieurs amis, developper pour mon école un projet se basant sur le schéma client / serveur sous Linux en C.

Pour l'instant nous avons un client / serveur assez simple permettant de faire du transfert de fichier du client vers le serveur. Mais ce n'est pas le tout en fait ce qui nous est demander c'est de pouvoir etre capable de "gérer nos paquets", je m'explique : on aimerait être capable dans le client et/ou dans le serveur d'afficher chaque étape de la connexion TCP c'est a dire les syn / syn+ack / ack. Ensuite affichier les détails sur le ack attendu et les recu. Il nous est demandé également de maitriser certains paramètre comme la taille de la fenètre etc...

Nous avons recherche tant bien que mal a faire notre propre TCP mais on ne sait pas par ou commencé, on a pensé également aux sockets raw mais on s'est dit que pour faire du client / serveur ce n'est peut être pas l'idéal. Du coup pour l'instant on ne sait pas trop dans quelle direction s'orienté c'est pour quoi j'en viens à faire appelle à vous. Peut être vous pourrez nous orienter et nous aider dans notre projet. Si c'est le cas merci d'avance en tout cas.

Aussi voilà un lien pour voir le code de notre projet à l'heure actuelle : [url=http://www.biagi.fr/inc/download/prog2.c]ICI[/url]
Lu cowboybebop95,

Regarde [url=http://www.frameip.com/c-mode-connecte/]Développement c d'une connexion en mode connecte[/url]

Ou alors [url=http://www.frameip.com/c-mode-non-connecte/]Développement c d'une connexion en mode non connecte[/url]

@+
_SebF - Sébastien FONTAINE
merci pour la réponse,
Comme je l'ai dit la partie socket est déjà programmé il n'y a pas de soucis, en fait ce qu'il nous reste à faire ca serai comme rentré un cran en dessous les sockets pour être capable de dire se qui se passe, par exemple lors du connect, le client affiche le SYN puis le serveur le SYN+ACK et enfin le SYN sur le client. C'est une première partie de ce que l'on aimerai faire mais on ne voit pas du tout comment faire.
Lu cowboybebop95,

Ok, alors abandonne les sockets et passe à la librairie Libpcap. Elle travail au niveau 2 du modèle OSI et ainsi, tu pourra générer entièrement ton datagramme IP.

@+
_SebF - Sébastien FONTAINE
d'accord, il y a t'il un tutoriel sur le site ? J'ai fait quelques petite tentative avec libpcap, mais je ne sais pas si c'est le fait d'être dans une machine virtuelle mais sa semblait peu fonction, mais je vais me replonger dedans alors pour cette partie là.
En revanche notre profésseurs nous demande aussi aussi d'être capable de géré certains parametres comme la taille de la fenètre, mais vraiment je ne vois pas comment fair pour gérer ces paramètre facilement. 😕
Lu cowboybebop95,

Dans une machine virtuelle :), Je ne penses pas que cela fonctionne. mais ca reste à valider.

@+
_SebF - Sébastien FONTAINE
mouah ca confirme mes craintes, j'obitens un "no suitable device" j'ai essayé en installant également winpcap sur mon windows mais ca ne semble pas passer... Ca sens l'impasse a s'arracher les cheveux 😯
Lu cowboybebop95,

Regarde le code source de Synflood.exe, ca va t'aider

@+
_SebF - Sébastien FONTAINE
Lu cowboybebop95,

Je viens de vérifier et le contexte d'une machine virtuelle ne pose aucun soucis. FrameIP.exe fonctionne très bien et c'est idem pour Ethereal.

Après reflexion c'est logique.

Mon context était un XP2 pro -> Virtual PC 2007 -> XP2 pro

@+
_SebF - Sébastien FONTAINE
Je suis de retour 😀

En fait je reviens préciser mes pensés, j'ai parler avec une personne sur un forum et en fait il a traduit de façon correcte les attentes de notre professeur :

Si c'est uniquement de l'analyse de trame, ok pour le programme espion mais lorsque que ton prof parle d'"implementation de tcp", il faudrait confirmer, mais je pense plutot qu'il s'agit de coder une bibliotheque en C recréeant la couche ip standard mais de manière simple/scolaire pour enfin l'utiliser dans un simple client/server tcp.
Il s'agit peut etre de coder des fonctions de manipultation de socket comme connect(), bind(), listen() recv() et send()
Au passage tu aura ainsi access a tout le paramétrage ("taille des fenetres, faire le checksum"...syn, ack, nbre de paquets)

Voilà qui explique mieux ce que l'on nous demande.
Quelqu'un sait il comment s'y prendre pour "refaire" sa propre bibliothèque comme indiqué ?
Merci d'avance, bon si je suis pas très claire et lucide dans mes idées, c'est peut être à cause de l'heure 😆 😆
Lu cowboybebop95,

Si c'est uniquement la manipulation des fonctions de type bind, alors reporte toi à un de mes messages précédent incluant les deux liens d'exemples.

@+
_SebF - Sébastien FONTAINE
Bien utiliser les fonctions ça je sais faire, mais les modifier et le refaire, je ne vois pas comment faire ? j'ai bien vu les prototypes dans sys/socket.h mais de là a comprendre comment les refaire je ne vois pas.