Previous Contents Next

2   Corrigé du DS du 20 mai 2000

Tous documents autorisés (y compris ordinateurs).

2.1   Manipulation de protocoles Internet

Imaginez, vous vous retrouvez en stage dans une entreprise où les dinosaures n'ont pas encore complètement disparus. Vous n'avez accès qu'à un ordinateur de type 8086 sur lequel agonise un vieil OS (Operating System). Internet est disponible au travers d'un modem à 300bits/s et le seul outil réseau dont vous disposez est un émulateur de terminal à la telnet. Bien sûr, ce logiciel antédiluvien n'autorisait qu'une connexion sur le port 23 mais à l'aide d'un éditeur binaire vous avez réussi à obtenir deux exécutables telnet110 et telnet25 qui permettent de se connecter respectivement sur le port 110 et le port 25. Ce n'est pas tout, le logiciel d'émulation de terminal n'est pas interruptible, il ne se termine que lorsque l'on se déconnecte proprement de la station sur laquelle on s'est connecté (e.g. par un exit). Cela signifie que, par exemple, si vous faites un cat d'un fichier énorme vous n'avez plus qu'à attendre la fin de l'affichage avant de pouvoir vous déconnecter. Il est possible de réamorcer la machine mais alors vous en avez pour un quart d'heure, le temps que la bête de course vérifie ses 2 Mo de mémoire bit par bit.

Maintenant que vos conditions de travail sont précisées, venons en à votre mission. Votre entreprise vient d'acheter un logiciel à prix d'or (pour le portable du patron) et la clef de la licence a été envoyée sur la boite aux lettres de l'entreprise (onkool@giveyourmoney.com, identification onkool, mot de passe pazankor). Vous devez trouver le message où se trouve la clef et répondre à l'expéditeur du message (dont vous ignorez l'adresse) pour obtenir un droit d'accès au support technique du logiciel. Malheureusement cette boite aux lettres est la seule de l'entreprise et vous savez que le patron a la fâcheuse habitude de se faire envoyer des messages contenant un exécutable qui affiche une fleur en pot ou un feu d'artifice virtuels. Ces messages frisent allègrement le méga-octet. Enfin vous devez faire cela en temps limité puisque le chef veut pouvoir se servir de son logiciel (un truc permettant de prévoir ses bénéfices sur ses stock-options) pour hier (enfin il vous donne encore un quart d'heure).

Vous vous dites que ce n'est pas une situation réaliste ? Vous avez raison la réalité est souvent bien pire.

Répondez aux question suivantes pour vous aider à remplir votre mission :

  1. Combien de temps devrez vous approximativement attendre si vous récupérez, par mégarde, un message contenant un exécutable ?
    Une dizaine d'heures avec comme hypothèse un message d'un méga-octet et un débit de 30 octets par seconde (300 divisé par 10, certes il n'y a que 8 bits dans un octets mais il faut prendre en compte un éventuel bit de stop et les entêtes dans les protocoles TCP/IP).
  2. Pouvez-vous deviner l'adresse du serveur POP pour la boite aux lettres que vous désirez consulter ?
    Généralement le nom de la machine permettant de consulter sa boite aux lettres via POP possède un alias de nom pop, donc ici le nom complet serait pop.giveyourmoney.com.
  3. Donnez le script de la session permettant de se connecter à la boite aux lettres et de trouver le nombre de messages reçus.
    On peut imaginer une session comme ci-dessous :
    
    > telnet110 pop.giveyourmoney.com
    +OK midas Cyrus POP3 v1.5.14 server ready
    user onkool
    +OK Name is a valid mailbox
    pass pazankor
    +OK Maildrop locked and ready
    list
    +OK scan listing follows
    1 2840
    2 4120
    3 1439
    4 3517
    5 1842             
    .
    
  4. Vous comptez 5 messages, comment procédez-vous pour trouver le bon message en étant sûr de respecter les délais (pas plus d'un quart d'heure pour trouver le message et y répondre) ?
    Il ne faut surtout pas utiliser la commande retr ! Il faut taper la commande top i 0 pour chaque message i et regarder le sujet du message (la commande top i 0 n'affiche que les entêtes du message). Éventuellement on peut remplacer le 0 par, disons, 10 pour regarder le début des messages si le sujet n'est pas explicite. Il est aussi possible de s'aider des tailles des messages (données par la commande list) et de n'afficher que les messages courts.
  5. Donnez le script vous permettant d'implanter le procédé décrit plus haut (en supposant que le message cherché est le troisième). Allez jusqu'à l'affichage du message de la clef et à la déconnexion du serveur de messagerie.
    On peut imaginer une session comme ci-dessous :
    
    top 1 0
    +OK Message follows
    From: maman@alacampagne.fr
    Subject: Bon anniversaire
    etc.
    .
    top 2 0
    +OK Message follows
    From: toutcuir@rdv.minitel.com
    Subject: Rendez-vous au parc, grand fou ...
    etc.
    .
    top 3 0
    +OK Message follows
    From: picsou@parysilesous.com 
    Subject: Clef du logiciel WURZLUG
    etc.
    .
    retr 3
    +OK Message follows
    From: picsou@parysilesous.com
    Subject: Clef du logiciel WURZLUG
    
    La clef est 0123456789
    .
    quit
    +OK
    
    Si on utilise la seconde solution, il faut juste transformer les 3 top en retr et supprimer le quatrième retr.
  6. Dans quelle partie du message trouvez-vous la clef du logiciel ? Même question pour l'adresse de l'expéditeur du message.
    La clef se trouve dans le corps du message et l'adresse dans les entêtes, plus exactement dans l'entête From: ou dans l'entête Reply-to:.
  7. Trouvez l'adresse de la machine serveur de messagerie pour le domaine giveyourmoney.com (il existe une méthode exacte pour trouver cette adresse).
    Soit giveyourmoney.com correspond à une adresse dans le DNS, soit il existe un enregistrement de type MX dans le DNS correspondant à giveyourmoney.com. Il faut donc regarder si la commande host giveyourmoney.com retourne une adresse. Si oui, on utilise cette adresse sinon on utilise celle retournée par host -t MX giveyourmoney.com.
  8. Donnez le script permettant d'envoyer un message concernant le support technique à l'expéditeur de la clef (en supposant que son adresse est picsou@parysilesous.com).
    On peut imaginer une session comme ci-dessous :
    
    > telnet25 mailhost.giveyourmoney.com
    220 midas ESMTP Sendmail 8.9.3 ready 
    helo dino
    250 midas Hello, pleased to meet you
    mail from: onkool@giveyourmoney.com
    250 onkool@giveoyourmoney.com... Sender ok
    rcpt to: picsou@parysilesous.com
    250 picsou@parysilesous.com... Recipient ok
    data
    354 Enter mail, end with "." on a line by itself
    Subject: Support technique
    
    Veuillez valider le support technique. Merci
    
    Le responsable technique d'ONKOOL.
    .
    250 MAA25122 Message accepted for delivery
    quit
    221 midas closing connection
    

2.2   Serveur X11

Dans la série les situations impossibles, voici l'épisode intitulé "retour à la civilisation". Vous vous retrouvez sur une machine Linux de l'EUDIL. Cette machine de nom minimax possède une configuration minimale mais avec, tout de même, un serveur X11. Vous souhaitez avoir sur votre écran l'application xsql présente sur weppes et une fenêtre ouverte sur une session de la machine NT servntapp1 (certes il s'agit d'une situation un peu tirée par les cheveux : qu'iriez vous faire sur servntapp1 ?). Malheureusement l'application Xnest n'est pas disponible sur minimax, aussi vous allez devoir utiliser celle d'une Lyderic :

  1. Donnez la liste des commandes à taper et des éventuelles actions à faire avec la souris pour lancer xsql de weppes sans permettre à quiconque connecté sur weppes d'utiliser votre écran (il est important de savoir que minimax n'utilise aucun montage NFS, i.e. il a son propre espace disque y compris pour les utilisateurs).
    Sur minimax, taper xauth list, récupérer la clef avec un copier souris, taper rlogin weppes pour se connecter sur weppes. Dans la session rlogin sur weppes taper xauth add et coller derrière la clef avec la souris, valider la commande. Taper export DISPLAY=minimax:0, puis envoyer l'application xsql.
  2. Même question mais on suppose que le copier/coller à la souris ne fonctionne plus sur minimax.
    Sur minimax, taper xauth extract xauth.minimax minimax:0. Transférer le fichier xauth.minimax sur weppes en utilisant la commande ftp. Taper rlogin weppes pour se connecter sur weppes. Dans la session rlogin sur weppes taper xauth merge xauth.minimax, puis taper export DISPLAY=minimax:0 et enfin envoyer l'application xsql.
  3. Utilisez le Xnest de Lyderic12 pour obtenir une session de servntapp1 sur votre écran. Donnez la liste des commandes à taper pour arriver à vos fins (cette fois vous vous contenterez de xhost pour l'authentification X11).
    D'abord permettre l'accès de Lyderic12 sur l'écran minimax:0 en tapant xhost +Lyderic12 sur la station minimax. Se connecter sur Lyderic12 par un rlogin, taper export DISPLAY=minimax:0 dans la session rlogin et lancer la commande Xnest :2 -query servntapp1.
  4. Donnez les noms complets des deux écrans X11 affichés sur minimax.
    L'écran X11 principal se nomme minimax:0 et l'écran du Xnest s'appelle Lyderic12:2, pas minimax:2 car il s'exécute sur Lyderic12 et non sur minimax.

2.3   Question de réflexion

Le but est de transférer le fichier
ftp://ftp.eudil.fr/pub/linux/kernel/v2.2/linux-2.2.15.tar.gz
dans un sous-répertoire Kernel du répertoire /tmp utilisant uniquement la commande telnet (j'ai bien dit telnet pas nc). Vous pouvez utiliser deux sessions telnet simultanées et comme je suis pas chien je vous donne les deux commandes à lancer : <machine> est la station lydericXX, gayantYY ou phinaertZZ sur laquelle vous êtes connecté. En comptant l'identification et les quit finaux vous avez une grosse douzaine d'ordres du protocole ftp à taper dans l'ensemble des deux sessions.

Vous n'avez pas le droit à autre chose que ces deux sessions telnet !

L'idée est d'utiliser une session ftp en mode actif et l'autre en mode passif, c'est la session en mode passif qui va remplacer la commande nc utilisée pour implanter un petit serveur TCP. Voici le script de la session en mode passif (les commandes tapée par l'utilisateur commencent par des lettres en majuscules) :
 
lyderic08:~$ telnet lyderic08 ftp
220 lyderic08.priv.eudil.fr FTP server ready.
USER <user>
331 Password required for rex.
PASS <pass>
230 User rex logged in.
MKD /tmp/Kernel
257 "/tmp/Kernel" new directory created.
CWD /tmp/Kernel
250 CWD command successful.
PASV
227 Entering Passive Mode (172,26,17,124,214,37)
STOR kernel.tar.gz
150 Opening ASCII mode data connection for kernel.tar.gz.
QUIT
221 Goodbye.
  
Voici le script de la session en mode actif (les commandes tapée par l'utilisateur commencent par des lettres en majuscules) :
 
lyderic08:~$ telnet ftp.eudil.fr 21
220 pevele.eudil.fr FTP server (Version wu-2.6.0(1) ready.
USER ftp
331 Guest login ok, send your complete e-mail address as password.
PASS rex@
230 Guest login ok, access restrictions apply.
CWD /pub/linux/kernel/v2.2
250 CWD command successful.
PORT 172,26,17,124,214,37
200 PORT command successful.
RETR linux-2.2.15.tar.gz
150 Opening ASCII mode data connection for linux-2.2.15.tar.gz (16371764 bytes).
QUIT
221 Goodbye.
  

Previous Contents Next