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 :

Comment s'initie une session telnet ?


Sujet :

Réseau C

  1. #1
    Membre habitué
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Points : 180
    Points
    180
    Par défaut Comment s'initie une session telnet ?
    Bonjour,
    j'ai une application en C dont je voudrais qu'elle initie une connexion à un serveur et qu'elle me rende la main ensuite; j'ai créé convenablement le socket et la connection à la machine se fait, mais j'ai du mal au moment de l'envoi du username et password avant lesquels je ne sais pas s'il faut lire quelques lignes de bienvenue et combien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
            sin.sin_addr = *(IN_ADDR *) hostinfo->h_addr;
            sin.sin_port = htons(PORT); // PORT=23 pour telnet.
            sin.sin_family = AF_INET;  // pour l'instant, AF_INET qui est le type vaut 2
            sin.sin_addr.s_addr=addrl; // sin est une struct sockaddr_in,
     
            hh=gethostbyaddr(&addrl, sizeof(addrl), 2);
            if(hh==NULL) {
            // struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);
                perror("un: gethostbyaddr()");
            }
            else{ // on ne passe pas ici, donc hh==NULL, donc gethostbyaddr n'a pas bien marché
                // gethostbyaddr a créé une struct hostent qui s'appelle hh et qui provoque une
                host = hh->h_name;                            // segmentation fault ci après...
                printf("host scruté=%s (hh->h_name)\n", host);
                printf("gethostbyaddr() Ok\n\n");
            }
     
            if (hostinfo == NULL){ // ça ne passe pas ici, donc hostinfo est Ok. (le gethostbyname)
                fprintf (stderr, " Unknown host %s.\n", buffer);
                exit(EXIT_FAILURE);
            }
     
     
            if(connect(sock,(SOCKADDR *) &sin, sizeof(SOCKADDR)) == SOCKET_ERROR)
            {
                perror("un: connect()");
                exit(errno);
            }
            else printf("un: connect() Ok\n\n");
            printf("un: try to log in, now :\n");
            //
            printf("envoi de ->%s%s", "guest", CRLF);
            sprintf(command, "%s%s", "guest", CRLF);
            write_server(sock, command);
            read_server(sock, line);
            puts(line);
            //
            printf("envoi de ->%s%s", "guest", CRLF);
            sprintf(command, "%s%s", "guest", CRLF);
            write_server(sock, command);
            read_server(sock, line);
            puts(line);
    Comment faire par la suite pour détecter que le login et passwd ont été acceptés, puis pour qu'il me rende la main ?
    Si quelqu'un a déjà fait des choses comme ça ou peut me donner des pistes, ça m'intéresse, merci,
    David
    P.S. Dis Toto, pourquoi l'univers existe-t'il ?
    Je vais y réfléchir avec Morphée et lui dès avant 22h55, donc ici, il faut se causer avant.

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par dva2tlse Voir le message
    Bonjour,
    j'ai une application en C dont je voudrais qu'elle initie une connexion à un serveur et qu'elle me rende la main ensuite; j'ai créé concenablement le socket et la connection à la machine se fait, mais j'ai du mal au moment de l'envoi du username et password avant lesquels je ne sais pas s'il faut lire quelques lignes de bienvenue et combien.
    As-tu compris qu'on ne pouvait pas réaliser un client Telnet en C standard ? En effet, c'est un terminal, c'est à dire que les caractères sont transmis en temps réel au serveur

    C'est le serveur qui envoie les écrans, demandes de mot de passe etc. C'est aussi lui qui gère l'echo des caractères tapés, la correction...

    Un terminal Telnet, c'est très bête...

    Maintenant, si tu veux réaliser un programme qui se comporte comme le couple 'humain + terminal Telnet', Ca ne va pas être vraiment simple, par ce que ce n'est pas du tout fait pour ça. En effet, chaque application a sa façon de présenter les données...

    Je te conseille de tester ton application serveur avec un terminal telnet comme ceux de Windows ou de Linux.

    Par exemple, quand je me connecte à mon routeur avec mon client Telnet, le serveur Telnet du routeur répond :
    Ensuite, je tape le mode de passe et le serveur répond :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Password: ********
     
    emdel> _
    Mais ça peut être complètement différend sur une autre application.
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 139
    Points
    139
    Par défaut
    Il n'y a pas de méthode pour vérifier si tu es connecté ou pas.

    Dans le protocole telnet si ta tentative de login echoue on te redemande ton log/pwd.

    Après quelques tentative déconnexion.

    La seule méthode pour vérifier si tu es connecté c'est une expression régulière comprenant ce que tu attends de l'hôte distant ( un ^user\$$ par exemple )

    si c'est pour batcher sur un hôte connu et sur lequel tu as la main, le mieux est d'aller lui mettre une balise dans le bashrc ou equivalent ...

    [EDIT :] OUP'S Messages croisés

    @Emmanuel c'est batchable du telnet mais en raw mode. enfin galère un peut. il vaut mieux ecrire son propre daemon sur son propre port.

  4. #4
    Membre habitué
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Points : 180
    Points
    180
    Par défaut
    Ok merci les gars; je vois que j'ai un bon morceau de pain sur la planche; mais en particulier je ne vois pas pouquoi le C ne saurait pas s'occuper de ça; on pourrait le laisser boucler bêtement en attendant les décisions que le protocole impose au serveur ? Trop simple ???
    Merci encore,
    David
    P.S. Dis Toto, pourquoi l'univers existe-t'il ?
    Je vais y réfléchir avec Morphée et lui dès avant 22h55, donc ici, il faut se causer avant.

  5. #5
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 139
    Points
    139
    Par défaut
    En fait je vais utiliser une voie plus simple : que veux tu faire et quelles sont tes contraintes ?

  6. #6
    Membre habitué
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Points : 180
    Points
    180
    Par défaut
    Super ta question ! [lundi quatre heures et demie, je rentre du boulot où j'ai fait de l'unix toute la journée, mais pas pour moi !] D'ailleurs j'ai une ch'tite question rapide relative à une des machines sur lesquelles je bosse; le serveur de fichiers; c'est un ultra sparc chaipakombien, et son compilateur cc admet une option -xpentium; alors comme je crois que certaines machines SUN tournent avec des pentium ou des alpha (dont je ne sais pas très bien ce que c'est) je me suis dit que peut-être elle pourrait me compiler un "Hello world !" dont je pourrais trasferer l'exécutable sur un PC-pentium par ftp et j'aurais un "Hello world !" sur mon PC du boulot; ménon ça marche pas; par contre l'exécutable, même compilé en -xpentium, tourne sur la machine SUN; et son "uname -p" me répond "sparc", alors à quoi sert donc le -xpentium du compilo ? [fin de la ch'tite question]

    Alors pour la tienne, de question, ce que je veux c'est faire de mes mains un client telnet qui me permettrait de bosser depuis chez moi si jamais en pleine nuit j'avais une idée de génie qui rendrait ma boite ultra-dominante sur son marché, et donc j'en aurais des retombées financières considérables puique j'ai le même prénom que le fils du patron !

    Voila; et mes contraintes, c'est que je n'ai pas de serveur telnet sous la main; juste celui du boulot dont l'admin' va peut-être s'énerver un jour à force le trouver en rade tous les matins où je l'aurais fait planter la veille avec mon client pourri; alors pour éviter ça, est il possible d'en faire un avec ubuntu ? J'ai déjà essayé un sudo apt-get install inetd, (de mémoire, mais je crois bien que c'est ça) et ça se passe bien, par contre quand je fais un restart de ce démon pour démarrer le serveur, le PC me dit qu'il n'en trouve pas l'exécutable, non installé.

    Bon, c'est un peu du vrac cette réponse, mais ça fait plus d'une demi-heure que j'écris alors j'ai la flemme de reprendre et ordonner le tout, mais j'attends avec grande joie le plus de pistes possible.
    David

    [edit une demi-heure plus tard]
    pardon d'avoir redoublé le post, mais y'a eu une internal server error, que j'ai peut-être causée chaipakomment mais que je n'ai pas du tout maitrisée.
    Alors les pistes que j'attends avec joie, c'est :
    -le compilo; à quoi sert -xpentium sur une sparc ?
    -le serveur telnet; comment en installer un chez moi ?
    -et le client telnet, d'après les réponses que j'ai eues hier, mon code ne doit rien renvoyer au serveur puisque c'est lui qui fait l'echo; donc ça veut dire que je ne lui envoie que login et password, mais toujours pareil : comment sais-je que je suis loggé, et comment est-ce que ça peut se terminer en me laissant la main ?
    D.
    P.S. Dis Toto, pourquoi l'univers existe-t'il ?
    Je vais y réfléchir avec Morphée et lui dès avant 22h55, donc ici, il faut se causer avant.

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par dva2tlse Voir le message
    Super ta question ! [lundi quatre heures et demie, je rentre du boulot où j'ai fait de l'unix toute la journée, mais pas pour moi !] D'ailleurs j'ai une ch'tite question rapide relative à une des machines sur lesquelles je bosse; le serveur de fichiers; c'est un ultra sparc chaipakombien, et son compilateur cc admet une option -xpentium; alors comme je crois que certaines machines SUN tournent avec des pentium ou des alpha (dont je ne sais pas très bien ce que c'est) je me suis dit que peut-être elle pourrait me compiler un "Hello world !" dont je pourrais trasferer l'exécutable sur un PC-pentium par ftp et j'aurais un "Hello world !" sur mon PC du boulot; ménon ça marche pas; par contre l'exécutable, même compilé en -xpentium, tourne sur la machine SUN; et son "uname -p" me répond "sparc", alors à quoi sert donc le -xpentium du compilo ? [fin de la ch'tite question]
    Un exécutable est compilé pour une plateforme donnée (machine + système). Elle ne peut pas s'exécuter sur une autre plateforme, même si c'est le même processeur.

    - Le format de l'exécutable est différent
    - Les appels systèmes sont différents
    - Les bibliothèques partagées sont différentes.
    Alors pour la tienne, de question, ce que je veux c'est faire de mes mains un client telnet qui me permettrait de bosser depuis chez moi si jamais en pleine nuit j'avais une idée de génie qui rendrait ma boite ultra-dominante sur son marché, et donc j'en aurais des retombées financières considérables puique j'ai le même prénom que le fils du patron !
    Tu as un client Telnet sur ton PC / Windows :

    Démarrer > Exécuter > cmd

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:> telnet <adresse du serveur>
    Et voilà.

    Idem sur une machine Linux.

    Ouvrir une console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * telnet <adresse du serveur>
    -le compilo; à quoi sert -xpentium sur une sparc ?
    A générer du code pour pentium. Il y a des stations Sun qui tournent sur PC avec un Solaris spécial.

    -le serveur telnet; comment en installer un chez moi ?
    C'est assez dangereux. Tu y tiens ? En plus, j'ai pas compris à quoi ça te servirait... Tu as compris le fonctionnement d'une architecture client/serveur ?

    -et le client telnet, d'après les réponses que j'ai eues hier, mon code ne doit rien renvoyer au serveur puisque c'est lui qui fait l'echo; donc ça veut dire que je ne lui envoie que login et password, mais toujours pareil : comment sais-je que je suis loggé,
    Il t'envoie probablement une invite de commande. Tu n'as pas lu mon post ?
    et comment est-ce que ça peut se terminer en me laissant la main ?
    L'invite de commande, c'est ça "te donner la main". Tu n'as plus qu'à taper une commande et elle sera interprétée par le serveur.
    Pas de Wi-Fi à la maison : CPL

  8. #8
    Membre habitué
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Points : 180
    Points
    180
    Par défaut
    Salut Emmanuel, salut delete, [mardi cinq heures et demie, je rentre du boulot où j'ai fait du fortran aujourd'hui, et non pas du C !] (je m'adresse à vous deux à la fois, puisque quand j'écris à l'un c'est l'autre qui me répond et vice versa)(mais p'têt qu'un troisième larron interviendra maintenant pour me mettre à nouveau en défaut...)

    j'ai un peu de nouveau pour ma ch'tite question d'hier; en effet j'ai été à l'école avec l'admin' des machines sur lesquelles je bosse (l'école c'est celle d'ingénieurs, à Besançon, dans le Doubs, pas une maternelle parce qu'on ne se connaissait pas encore) et il m'a dit que le serveur de fichiers dont je parlais hier est une machine sunfire 68000; et pour m'expliquer que le code du "Hello world !" que j'avais compilé sur cette machine ne marchait pas sur un PC-pentium, je m'étais dit que les adresses-mémoire utilisées n'étaient probablement pas les mêmes entre la SUN et un P.C., ce qui est assez proche de l'incompatibilité de plateforme que vous avez mentionnée; et lui m'a aussi dit qu'il était au minimum nécessaire pour que la "cross-compilation" donne de bons résultats, que l'OS sur lequel on compile connaisse l'OS destination ainsi que plusieurs paramétres d'installation de celui ci.

    Le client telnet, je sais qu'il en existe aussi bien sous dos que sous linux, et j'ai déjà utilisé les deux. (ce qui a parfois déclenché l'hilarité et les moqueries de mes jeunes collègues qui ne jurent que par des interfaces graphiques hyper-sophistiquées où il faut utiliser la souris tout le temps, ce que je déteste, et qui n'imaginent pas que le DOS existe ni que l'on puisse parfois avoir besoin de taper une ligne de commande entière)(kysonkons)
    Ceci dit, je veux faire mon mien à moi de client, de mes propres mains comme je l'ai dit hier en l'ayant déjà grassifié; et j'ai essayé de voir aujourd'hui au boulot s'il y avait moyen de truander celui d'unix en essayant de lui fourguer le mot de passe, mais j'ai pas réussi :

    # ça, ça ne marche pas puisqu'il ne m'affiche le toto qu'après s'etre déloggé !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo password | telnet -l username machine; echo toto
    Trying aaa.b.ccc.ddd...
    Connected to machine.
    Escape character is '^]'.
    Connection closed by foreign host.
    toto

    # et là pareil aussi, ZUT !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    head -1 fichierQuiContientPassword | telnet -l username machine; echo toto
    Trying aaa.b.ccc.ddd...
    Connected to machine.
    Escape character is '^]'.
    Connection closed by foreign host.
    toto

    # nouvel essai mais je ne suis pas sûr de la syntaxe;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    telnet machine -l username << !
    password

    et encore non !
    enfin si, ça à l'air bon puisque si je mets ces trois lignes dans un fichier...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    telnet -l username machine << !
    password
    echo toto
    ...et que je rends le fichier exécutable, et que je le fais tourner, je ne vois pas l'echo du toto avant que ça se délogge, donc je peux suppposer qu'il se fait "dans le noir" sur la machine distante (qui est en fait la mienne ici au boulot, et ça montre pourquoi je voudrais avoir un serveur telnet chez moi pour faire des essais); et je vais maintenant essayer de lui faire créer un fichier "dans le noir" comme ça j'aurai la preuve qu'il y est allé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    telnet -l username machine << !
    password
    echo toto > abc
    Et ZUT, ça n'y est toujours pas !
    Il n'y a pas de fichier abc là où ça devrait se logger; et le last login que j'obtiens en me reloggant est celui de ce matin donc il ne s'est pas loggé pendant cette tentative.


    -L'invite de commande, c'est ça "te donner la main". Tu n'as plus qu'à taper une commande et elle sera interprétée par le serveur.
    -Oui c'est bien ça que je voudrais, mais ce que j'ai fait aujourd'hui au boulot ne me convient pas sur ce point.
    C'est bien ça que je veux, une invite de commande puisque tout ce que je peux avoir à faire au boulot se fait à la ligne de commande; et c'est pour ça que j'ai essayé de me relogger dans ma fenêtre unix ici; je fais du calcul de structures, et je n'ai que du texte à traiter avec des commandes, ou éventuellement du vi.


    Le serveur telnet; comment en installer un chez moi ?
    Je sais que c'est dangereux mais je ferai gaffe à ne pas le laisser tourner en attente (j'éteinds la nuit dès que ma Valérie d'amour que chuis dingue d'elle arrive pour manger, et le jour ça reste éteint jusqu'au forum), et je peux le mettre sur un port perdu au fin-fond des numéros que personnes n'ira jamais regarder. (heu...espère...) (Je connais vaguement l'existence d'un certain nmap...) Mais j'y tiens pour pouvoir faire des essais avec le client que je veux créer.


    bon, merci d'essayer de me donner encore des pistes. (j'y arriverai comme on dit dans la pub de chez MMA, gnnnak, niiak...)
    David


    PS pour Emmanuel, j'ai vu en faisant des recherches sur le forum, que tu avais discuté en décembre 2007 (de mémoire je crois parce que je suis au boulot)(vers une heure)(mais je mettrai le lien depuis chez moi après être rentré)(parce que ici au boulot je suis considèré comme une sous-merde et je n'ai pas le net)(ce qui est en fait assez prudent, puisque même sans le net j'arrive à passer du temps avec les forum's) et il essayait aussi de faire un client telnet, ton correspondant de l'époque; le voici : http://www.developpez.net/forums/d34...rrerid=208640; alors est-ce que je peux réutiliser des bouts de son code pour le client que je veux faire ? (Il y avait plein de phases de négociation entre client et serveur dont je ne vois pas l'utilité pour ce que je veux)
    D.

    encore PS: j'ai entendu parler ou plutôt lu à propos de scripts en perl qui m'a semblé à ce j'ai compris être un langage assez propice à initier un connexion par le net (je ne suis pas sûr que telnet marche avec); est-ce que ça pourrait me servir ? D'un autre côté je patine déjà pas mal avec le C alors mes neurones risquent de ne pas voir arriver un nouveau langage d'un très bon oeil ! Un avis me suffira donc, et qu'il soit négatif me comblerait en me retirant tout risque de remords.
    D.
    P.S. Dis Toto, pourquoi l'univers existe-t'il ?
    Je vais y réfléchir avec Morphée et lui dès avant 22h55, donc ici, il faut se causer avant.

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par dva2tlse Voir le message
    <le Pavé>
    Mal à la tête...
    Pas de Wi-Fi à la maison : CPL

  10. #10
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 139
    Points
    139
    Par défaut
    +1 pour le mal de tête.

    Un password de toute façon avec telnet ca s'envoie en 'raw mode'

  11. #11
    Membre habitué
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Points : 180
    Points
    180
    Par défaut
    Ah merci, voilà quelque chose de constructif; et je peux directement changer mon satané client... à + peut être, si vous voulez bien essayer de digérer mon pavé un jour)
    P.S. Dis Toto, pourquoi l'univers existe-t'il ?
    Je vais y réfléchir avec Morphée et lui dès avant 22h55, donc ici, il faut se causer avant.

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par dva2tlse Voir le message
    Ah merci, voilà quelque chose de constructif; et je peux directement changer mon satané client... à + peut être, si vous voulez bien essayer de digérer mon pavé un jour)
    Pour info, voilà ce que m'envoie un serveur Telnet que je connais (mon routeur) au moment de la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    0022FD50 FF FB 03 FF FB 01 0D 0A 50 61 73 73 77 6F 72 64  '........Password'
    0022FD60 3A 20                                            ': '
    Les premiers caractères sont un peu étranges. Il faut lire la spécification de Telnet pour en connaitre le sens...

    Je ne connais pas le protocole Telnet, mais j'imagine qu'il y a un mode binaire (par défaut) et un mode texte, si le terminal envoi la séquence qui va bien au début pour passer en mode texte.
    Pas de Wi-Fi à la maison : CPL

  13. #13
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Les premiers caractères sont un peu étranges. Il faut lire la spécification de Telnet pour en connaitre le sens...
    Bon courage

    http://www.telnet.org/htm/dev.htm

    Mais tout est faisable. Sachant que telnet n'est pas un simple protocole un mode texte.

    Il vaut mieux utiliser les fonctionnalités rlogin/rcp/rsh pour des applications distantes.

  14. #14
    Membre habitué
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Points : 180
    Points
    180
    Par défaut
    oui delete, je suis d'accord qu'il est probablement mieux d'utiliser rlogin ou autre, mais mon serveur est en telnet et les hosts.equiv des machines du boulot ne connaissent pas la mienne, et il est même bien possible que le firewall verouille tout; enfin est-ce qu'il ne verrouillerait pas forcément par la même l'arrivée par telnet ? Probablement. Mais le rlogin doit être une sorte de "service" que l'admin' peut très bien vouloir ne pas démarrer, ce qui me restreint à telnet. (Mais ça ne me gêne pas) Bon allez j'arrete, je ne vous fait pas à nouveau un pavé comme l'autre fois, mais sachez que j'ai mis un telnet chez moi, et que je pourrai donc assez prochainement tenter de me connecter sur moi même, et donc j'aurai probablement à nouveau besoin de vos conseils.
    David
    P.S. Dis Toto, pourquoi l'univers existe-t'il ?
    Je vais y réfléchir avec Morphée et lui dès avant 22h55, donc ici, il faut se causer avant.

  15. #15
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Généralement, s'il y a UN service qui est ouvert de l'extérieur, ce ne sera certainement pas Telnet : Ce sera SSH.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #16
    Membre habitué
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Points : 180
    Points
    180
    Par défaut
    je ne sais pas bien quel service me répond, mais quand j'active un service pour avoir telnet, c'est en effet le "serveur de commandes distant" appelé ausi (sous ubuntu 8.04) "serveur de commandes sécurisé". Pourtant c'est lui qui me répond à telnet, alors que je lis partout que telnet n'est pas sûr à cause des mots de passe en clair.
    Ceci dit, dans mes essais précédents pour piger ce qui se passe avec le net, j'ai fait un programme qui envoie un PING à mon ISP et je peux lire ma propre adresse IP dans l'en-tête de la réponse qu'il me renvoit. La connection étant faite en SOCK_RAW, et delete m'ayant soufflé que c'est ce qu'il faut utiliser pour s'adresser à un serveur telnet, je compte réutiliser ce programme, surtout qu'il connait ma propre IP avec laquelle je pourrai m'adresser au telnet.
    Est-ce que ça parait viable ?
    merci de me remettre sur la bonne route si besoin,
    David
    P.S. Dis Toto, pourquoi l'univers existe-t'il ?
    Je vais y réfléchir avec Morphée et lui dès avant 22h55, donc ici, il faut se causer avant.

  17. #17
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par dva2tlse Voir le message
    je ne sais pas bien quel service me répond, mais quand j'active un service pour avoir telnet, c'est en effet le "serveur de commandes distant" appelé ausi (sous ubuntu 8.04) "serveur de commandes sécurisé". Pourtant c'est lui qui me répond à telnet, alors que je lis partout que telnet n'est pas sûr à cause des mots de passe en clair.
    http://www.iana.org/assignments/port-numbers

    Si c'est le port 23, c'est, en principe, Telnet. SSH, c'est le port 22.

    Ceci dit, dans mes essais précédents pour piger ce qui se passe avec le net, j'ai fait un programme qui envoie un PING à mon ISP et je peux lire ma propre adresse IP dans l'en-tête de la réponse qu'il me renvoit.
    Oui, c'est la norme. Tu t'attendais à quoi ?
    La connection étant faite en SOCK_RAW, et delete m'ayant soufflé que c'est ce qu'il faut utiliser pour s'adresser à un serveur telnet,
    Drôle d'idée. Telnet est un protocole qui s'appuie sur TCP ou UDP. Aucune raison de tout refaire à la main...
    je compte réutiliser ce programme, surtout qu'il connait ma propre IP avec laquelle je pourrai m'adresser au telnet.
    je ne vois pas ce que tes considérations étranges sur l'adresse IP ont à voir...

    En fait, j'ai toujours pas compris exactement ce que tu voulais de plus qu'un client Telnet classique ne fait déjà...

    Je ne suis pas bien sûr que tu maitrises ton sujet ni que tu saches vraiment ce que tu veux.
    Pas de Wi-Fi à la maison : CPL

  18. #18
    Membre habitué
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Points : 180
    Points
    180
    Par défaut
    Ok super d'avoir des tuyaux; on peut dire que c'est toi le troisième larron dont je parlais hier !
    Pour les numéros de port, c'est Ok, c'est bien le 23 que j'essaye d'utiliser.
    Tu t'attendais à quoi ?
    À d'autre que ce qui se passe, mais je suis très fier d'avoir réussi à utiliser le 0-8 (si je me souviens bien) de l'en-tête icmp pour un ping et un pong.
    Drôle d'idée
    Alors là, a quel saint faut il que je me voue ? J'ai compris ça au post du 26/08/2008 à 17h58 :
    Un password de toute façon avec telnet ca s'envoie en 'raw mode'
    Alors faut il que je ferme le socket que je ferais en UDP suivant ton conseil pour en rouvrir un en RAW pour le mot de passe ?
    Et puis une autre question à propos de fermeture et de réouverture de socket; comme j'ai dit tout à l'heure, j'utilise mon programme qui fait un ping et j'ai ma propre adresse ip dans l'en-tête de ce qui me revient; maintenant, pour faire un telnet vers cette adresse-là qui est la mienne, je crois devoir fermer le socket qui m'a connecté à mon isp et en rouvrir un vers mon propre serveur telnet qui attend à mon adresse sur le port 23, est-ce bien ça ?
    La seule chose que je veuille "de plus" qu'un client telnet classique est que ce soit moi même qui l'ait fait et qu'il fasse partie d'un programme en C qui pourra avoir ma propre adresse ou celle du boulot..
    Je ne suis pas bien sûr que tu maitrises ton sujet ni que tu saches vraiment ce que tu veux.
    Je ne maitrise absolument pas mon sujet mais je veux apprendre sur le tas parce que je n'ai plus l'âge d'aller à l'école, ni la possibilité de le faire; par contre pour ce qui est de savoir ce que je veux, c'est limpide : je veux un programme en C qui reçoive une adresse ip, soit en argument soit dans un fichier mais ça n'a pas d'importance, et qu'il initie la connexion avec le serveur (dans un premier temps le mien, puis celui du boulot) et qu'il me laisse la main sur l'invite de commandes de la bécane où je passe déjà toute la journée.
    Et un grand merci de m'y aider.
    David
    P.S. Dis Toto, pourquoi l'univers existe-t'il ?
    Je vais y réfléchir avec Morphée et lui dès avant 22h55, donc ici, il faut se causer avant.

  19. #19
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 139
    Points
    139
    Par défaut
    Excuse moi mais c'est un peu être borné que de vouloir coder un truc en C surtout ayant pour objet "un bidouillage" que personne n'a compris

    Car je ne voie ce que le C puisse te faire gagner, en performances, pour du telnet j'en doutes... Peut être en satisfaction personnelle ... ?

    Oriente toi plutôt vers un script PHP avec lib:curl

    Premier exemple choppé sur GG : http://px.sklar.com/code.html?id=634

  20. #20
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par dva2tlse Voir le message
    Alors là, a quel saint faut il que je me voue ? J'ai compris ça au post du 26/08/2008 à 17h58 :
    Alors faut il que je ferme le socket que je ferais en UDP suivant ton conseil pour en rouvrir un en RAW pour le mot de passe ?
    Le terme 'raw' (cru, brut, non traité) peut s'appliquer à un tas de choses en informatique... Je ne pense pas qu'il s'agissait ici de raw sockets. Mais le mieux serait d'avoir la confirmation de la personne qui a répondu.

    Et puis une autre question à propos de fermeture et de réouverture de socket; comme j'ai dit tout à l'heure, j'utilise mon programme qui fait un ping et j'ai ma propre adresse ip dans l'en-tête de ce qui me revient;
    C'est normal, c'est le principe de l'IP, mais on s'en tape un peu...

    maintenant, pour faire un telnet vers cette adresse-là qui est la mienne
    Huh ! Ca veut dire quoi "faire un telnet" ? Ou est le serveur ou est le client ?

    La seule chose que l'on sache faire c'est une connexion client/serveur à l'initiative du client.

    je crois devoir fermer le socket qui m'a connecté à mon isp et en rouvrir un vers mon propre serveur telnet qui attend à mon adresse sur le port 23, est-ce bien ça ?
    Tu installes un serveur sur ta machine, c'est ça ?

    La gestion des sockets est propre à la programmation d'une application réseau. Un système sait gérer un tas de sockets en même temps.

    Si tu veux faire un serveur,

    1 - tu ouvres un socket serveur avec socket()
    2 - tu lies ce socket à une adresse IP générique (INADDR_ANY) sur le port 23
    3 - tu te mets en mode serveur avec listen()
    4 - tu te mets en attente de connexion d'un client avec accept().

    Ensuite, pour chaque client, (accept() retourne un socket client), tu gère les transferts de données avec send() et recv().

    La seule chose que je veuille "de plus" qu'un client telnet classique est que ce soit moi même qui l'ait fait et qu'il fasse partie d'un programme en C qui pourra avoir ma propre adresse ou celle du boulot..
    Je ne vois pas trop le rapport avec l'adresse. Tu veux dire qu'elle n'est pas modifiable ? c'est ça ? Et au fait, tu parles de client, maintenant ? Tu as commencé en parlant de serveur. Ça n'a pas l'air très clair dans ta tête tout ça...
    pour ce qui est de savoir ce que je veux, c'est limpide : je veux un programme en C qui reçoive une adresse ip, soit en argument soit dans un fichier mais ça n'a pas d'importance, et qu'il initie la connexion avec le serveur (dans un premier temps le mien, puis celui du boulot) et qu'il me laisse la main sur l'invite de commandes de la bécane où je passe déjà toute la journée.
    Alors c'est bien un client que tu veux faire...

    Sinon, un simple script

    ça ne te suffit pas ? Tu tiens à le faire en C.

    OK;

    1 - ouvrir un socket avec socket()
    2 - configurer structure de connexion (ip, port)
    3 - faire une demande de connexion avec connect()
    4 - gérer les transferts de données avec send() et recv()

    Il faut séparer la réception/affichage de la saisie/émission dans 2 threads séparés.

    Pas mal d'indications ici :

    http://emmanuel-delahaye.developpez.com/reseaux.htm

    Attention, un serveur Telnet fait de l'écho par défaut (chaque caractère reçu est ré-émis), car il est prévu pour fonctionner avec un terminal. Le client doit donc implémenter un fonctionnement de terminal, c'est à dire une gestion des saisies caractères par caractères, sans écho local et avec possibilité d'envoyer un BS pour faire les corrections de saisie.

    On ne sait pas faire ça en C standard. Il faut une solution non standard genre conio ou [n]curses. (PDCurses est un sous-ensemble portable).

    Bref, c'est pas complètement trivial...

    - sockets
    - threads
    - gestion directe du clavier
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. Ouvrir une session telnet
    Par numostro dans le forum Administration
    Réponses: 2
    Dernier message: 29/12/2006, 10h12
  2. Initier une session telnet dans une session telnet
    Par benbs dans le forum Modules
    Réponses: 3
    Dernier message: 18/11/2006, 13h05
  3. Comment détecter si une session Windows est ouverte?
    Par yosthegost dans le forum Delphi
    Réponses: 3
    Dernier message: 23/05/2006, 17h42
  4. Lancer une session telnet automatiquement
    Par Pragmateek dans le forum Windows
    Réponses: 2
    Dernier message: 23/05/2006, 16h37
  5. Réponses: 1
    Dernier message: 06/04/2006, 15h35

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