IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Client FTP en mode passif


Sujet :

Réseau C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 20
    Par défaut Client FTP en mode passif
    Bonjour,

    Je tente de créer un client ftp en mode passif sous linux, mais très simpliste pour le moment.
    En clair, je désire juste me familiariser avec la programmation des sockets, donc mon client n'aura que la fonctionnalité de lister ce qui se trouve sur le serveur ftp.

    Pour l'instant j'arrive à me connecter au port 21 du serveur FTP, donc de passer mes commandes et recuperer les réponses, mais je n'arrive pas a récuperer les données.
    Voici mes resultats obtenu :
    Reponse à la demande de connexion via la fonction connect():
    220 TYPSoft FTP Server 1.10 ready...
    Reponse à l'entrée du nom de l'utilisateur avec la commande USER body\r\n
    331 Password required for body.
    Reponse à l'entrée du mot de passe avec la commande PASV\r\n ****
    230 User body logged in.
    Reponse à la commande SYST\r\n
    215 UNIX Type: L8
    Reponse à la commande PASV\r\n
    227 Entering Passive Mode (10,10,1,41,11,241).

    Donc la j'ai surement un problème de compréhension du mode passif.
    J'explique ce que j'ai compris du mode passif.
    Le mode passif permet d'outrepasser le problème que pourrait poser un firewall sur une connexion initialiser de l'exterieur, et donc d'inverser les rôles pour que ce soit le client qui ouvre la connexion pour la data.

    J'ai donc crée une petite fonction qui prend la ligne 227 Entering Passive Mode(10,10,1,41,11,241) et qui recupere le numéro de port 11241.

    Donc si je ne me trompe pas il faut donc que je crée un nouveau socket qui aura pour adresse de destination le serveur et le numéro de port de destination le 11241.

    Autre constat avec wireshark et en me connectant au serveur ftp en mode passif le port que je visualise dans la réponse entering passive est différent de celui utilisé par le client pour récuperer les données.
    Ben j'espere avoir été clair sinon je vous remercie pour toute les réponses d'avance.

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Non, le port n'est pas 11241 mais 3075 !!!

    As tu les RFC du protocole FTP ?

    Extrait :

    DATA PORT (PORT)
    PORT DU CANAL DE DONNEES
    L'argument est une spécification de port hôte indiquant le port de données à utiliser pour l'établissement du canal de données. Il existe des valeurs standard pour les ports USER et SERVER, et, dans une situation normale, cette commande et ses réponses associées ne sont pas exploitées. Si cette commande est utilisée, l'argument doit être noté comme la concaténation d'une adresse TCP/IP complètement qualifiée, soit une adresse Internet en 32-bits et une adresse de port TCP en 16-bits . Cette adresse est découpée en champs de 8-bits dont la valeur est transmise comme un nombre décimal (dans une représentation sous forme chaîne de caractères). Les champs sont séparés par des virgules . Une commande PORT aurait l'allure suivante :
    PORT h1,h2,h3,h4,p1,p2
    dans laquelle h1 contient les 8 bits de poids fort de l'adresse Internet de l'hôte spécifié.
    PASSIVE (PASV)
    MODE PASSIF
    Cette commande demande au SERVER-DTP de se mettre "à l'écoute" d'un port de données (différent du port par défaut) et d'attendre une demande de connexion plutôt que de prendre l'initiative d'en établir une sur réception d'une commande de transfert. La réponse à cette commande précise l'adresse et le port sur lesquels le serveur s'est mis en écoute.
    Donc, pour déterminer le port il recontruire la valeur 16bits à partir des 2 valeurs 8bits :

    port = p1*256 + p2
    Bonne continuation
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

Discussions similaires

  1. FTP en mode passif
    Par TOTOTAR dans le forum Général Java
    Réponses: 1
    Dernier message: 15/03/2012, 06h24
  2. FTP en mode passif
    Par moumoune65 dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 22/09/2011, 10h53
  3. [Débutant] Accès FTP en mode passif
    Par valarko dans le forum MATLAB
    Réponses: 2
    Dernier message: 19/08/2009, 14h59
  4. serveur ftp en mode passif derrière un firewall
    Par troumad dans le forum Réseau
    Réponses: 2
    Dernier message: 16/08/2009, 21h34
  5. ftp IIS5 forcer mode passif du client
    Par totoche dans le forum IIS
    Réponses: 7
    Dernier message: 19/03/2007, 17h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo