Ligne de commande Unix

Ligne de commande Unix #

Ce travail peut être réalisé sur différents matériels :

  • machine virtuelle Unix
  • machine physique Desktop Unix
  • Raspberry Pi

Si vous le réalisez sur une Raspberry Pi, veillez à la fin à ce que tout soit parfaitement en ordre :

  • raspberry protégée par un carton dans la boîte et sans la carte SD enfichée
  • câble d’alimentation, attaché, dans la boîte
  • lecteur de carte SD et carte SD (non enfichée dans le lecteur) dans la boîte
  • boîte refermée, sans que le couvercle ne force
  • clavier USB correctement rebranché au poste fixe
  • Ethernet correctement rebranché au poste fixe
  • Câble vidéo correctement rebranché au poste fixe
  • Câbles d’alimentation correctement rebranchés
  • Poste fixe démarré, avec la mire de login, le clavier et la souris fonctionnels

Prépréliminaires #

Vous avez des cartes RPI avec un système tout neuf. Lors du premier boot, on vous demandera de faire quelques choix :

  • Choix du clavier azerty, french Attention, ça peut mettre un peu de temps
  • Création du compte, mettez : pi pour le username et raspberry pour le password afin de retomber sur une config standard

Préliminaires #

Commencez pas vous loguer sur le système. Les instructions varient selon le support et seront données durant le TP.

Avant toute chose, activez les messages :

Entrez la commande : mesg y

Installez l’éditeur micro : sudo apt-get install micro (patientez pendant l’installation)

À défaut d’interface graphique, bash est le programme qui vous permet de dialoguer avec le système (c’est un shell). Tous les systèmes Unix (dont linux) ont un shell, et c’est très souvent bash.

Lorsque vous lancez une commande, vous pouvez, si elle bloque, la couper avec Ctrl+c. Chaque fois que c’est possible, utilisez la complétion automatique en appuyant sur la touche Tab. Utilisez l’historique des commandes (flèche haut, flèche bas).

Il est très vivement conseillé de lire attentivement le document Shell Unix qui présente rapidement bash et liste un certain nombre de commandes utiles.

Exercices #

Créez l’arborescence suivante dans votre Home :

exo01
|_ repertoire01 
|  |_ fichierA
|  |_ fichierB
|
|_ repertoire02
   |_ fichierC
   |_ repertoire03
   |  |_ fichierD
   |  |_ fichierE
   |_ repertoire04

Donnez un exemple de chaque commande qui vous permet de créer cette arborescence.

Lorsque ce sera fait, placez-vous à la racine de votre Home (cd ~) et entrez la commande suivante :

find exo01 -type d ; find exo01 -type f

Donnez le résultat de l’exécution de cette commande (une photo convient).

Vérifiez qu’un câble ethernet est bien branché sur la raspberry. Normalement, votre raspberry est connue du serveur DHCP (le serveur qui attribue les adresse IP aux machines) et le réseau devrait être activé dès le branchement du câble ethernet.

Exécutez la commande ip addr. Fournissez (photo) le résultat de la commande. Quelle est votre adresse IP ? Quelle est votre adresse MAC ? (Si vous ne trouvez pas, appelez l’encadrant… peut être que le réseau n’est pas activé pour votre raspberry).

Une RPi est branchée dans la salle est disponible à l’adresse 192.168.81.131. Vous pouvez vous y connecter en SSH, avec le logiciel Putty (depuis un PC Windows) en utilisant le login mee2 et le mot de passe XXX (demandez le mot de passe en TP).

Une fois connecté, vous verrez un fichier. Ce fichier contient une formule magique. Faites une copie d’écran de votre connexion et relevez la formule. Vous pouvez maintenant refermer la connexion et continuer sur votre raspberry.

Une archive contenant les fichiers d’exercices est en téléchargement.

Récupérer l’archive avec la commande :

curl https://ensip.gitlab.io/infomee/dist/archive_exercices_rpi.zip -O

À quoi sert l’option -O (consultez la page de manuel de curl) ?

Décompressez maintenant l’archive à la racine de votre répertoire (commande unzip). Un mot de passe vous est demandé. Il sera communiqué durant le TP.

Hidden content

Un fichier extraction_exercices.sh vient d’apparaître dans le répertoire courant. Exécutez-le en faisant ./extraction_exercices.sh (mettez bien le ./). Donnez l’intégralité des commandes que vous entrez pour réaliser ces opérations (téléchargement, décompression…)

Placez-vous à la racine de votre répertoire, faites ls. Vous devez voir le répertoire exo01 que vous avez créé tout à l’heure, ainsi que plusieurs autres répertoires : exo02, exo03… Si ce n’est pas le cas, appelez l’encadrant.

Dans les questions qui suivent, à la mode *CTF*, vous aurez souvent une clé à donner, pour prouver que vous avez fait la question. Si vous n’êtes pas sûr de la procédure. N’hésitez pas à demander à l’encadrant. Dans tous les cas, vous devrez aussi indiquer comment vous avez réussi à obtenir la clé.

Le répertoire exo02 contient un fichier readme. Ce fichier contient une clé. Indiquez les commandes entrées et donnez la clé comme réponse.

Le répertoire exo03 contient un fichier readme. Ce fichier contient une clé, ainsi que de nombreuses lignes blanches. Indiquez les commandes entrées et donnez la clé comme réponse. Proposez 2 manières différentes d’obtenir la clé.

Le répertoire exo04 contient des fichiers et des dossiers, qui contiennent eux-mêmes des fichiers… Finalement combien de fichiers sont placés sous exo4 (éventuellement plusieurs niveaux dessous) ? Parmi tous ces fichiers, certains contiennent la lettre ‘A’ (majuscule) dans leur nom (dans le nom du fichier, pas dans le nom d’un répertoire qui contient ce fichier). Combien exactement ? Indiquez les commandes entrées.

Le répertoire exo05 contient de nombreux fichiers. Un seul contient, entre autres, le mot PASS. Ce mot est suivi d’une clé. Donnez-la comme réponse et indiquez comment vous avez fait.

Le répertoire exo06 contient un fichier caché (voir sur wikipedia) qui contient la clé.

Le répertoire exo07 contient un dossier, qui contient lui même un fichier contenant la clé. Indiquez 2 manières différentes pour obtenir cette clé.

Le répertoire exo08 contient un fichier nommé : cd 8-) . Rendez ce fichier exécutable (car c’est un programme), et exécutez-le pour obtenir la clé, sans le renommer.

Le répertoire exo09 contient un fichier source en C qui affiche la clé. Vous devez le compiler et exécuter le programme pour l’obtenir.

Le répertoire exo10 contient un fichier nommé data.txt. Dans ce fichier, de nombreuses lignes sont identiques. La clé est la seule ligne qui n’apparaît qu’une seule fois.

Le répertoire exo11 contient un fichier nommé data.bin qui contient des données binaires. Vous pouvez le constater en essayant de l’ouvrir avec un éditeur de texte. Que se passe-t-il ? La clé est quelque part dans ce fichier. Elle est un peu plus longue que d’habitude (longueur 16).

Le répertoire exo12 contient 2 fichiers : anciennes_cles et nouvelles_cles Entre ces 2 fichiers, seule une ligne a été modifiée. La clé que vous devrez retrouver et celle qui a été modifiée dans nouvelles_cles.

Un peu plus de bash avec GameShell #

$ # apt-get install git
$ git clone https://github.com/phyver/GameShell.git
$ bash GameShell/start.sh