🌙
  • đŸ‡ș🇾 English
  • đŸ‡«đŸ‡· Français
  • đŸ‡Ș🇩 Español

NOTE Post Réécriture : Cet article, et bien d’autres, fait parti de la sĂ©rie “Script kiddie”. Il a Ă©tĂ© Ă©crit il y a plusieurs annĂ©es. Son contenu n’est pas Ă  jour et il contient potentiellement des erreurs. Plus d’information sur la page de prĂ©sentation de la sĂ©rie.

Cette partie cous paraĂźtra totalement inutile pour le moment. Sautez-la et revenez-y quand elle vous semblera indispensable.

Automatisez des tĂąches, c’est le fondement mĂȘme de l’informatique, et cela vous sera d’autant plus utile quand il faudra effectuer de multiples manips avec trĂšs peu d’intervalle entre chacune, que cela soit sur votre machine ou sur celle de votre victime. Bien qu’il existe de nombreux langages de programmation, celui qui restera le plus pratique quand vous travaillez sur Linux, c’est Shell.

Il s’agit de l’ensemble des commandes agrĂ©mentĂ©es de quelques instructions logiques. Ce langage est donc disponible, quelle que soit la machine sur laquelle vous travaillez (sauf celle sur Windows).

Explorons-le !

Les Variables

Pour déclarer une variable, rien de plus simple :

x=3

Pour afficher la valeur de la variable :

echo $x

On en tire deux rÚgles simples :

Vous pouvez Ă©galement mettre le rĂ©sultat d’une commande dans une variable en utilisant ce type de guillemet “ (en dessous du 7 sur un clavier AZERTY), ex :

x=`tail -n 1 fichier.txt`

x aura alors pour valeur une chaĂźne de caractĂšre correspondant Ă  la derniĂšre ligne de fichier.txt.

Les opérations mathématiques de base

Pour réaliser une opération, il faut ajouter le mot-clef let devant :

let x=’3+3’
echo $x
6

On peut également additionner les valeurs des variables :

x=3
y=2
let z="$x+$y"
echo $z
5

WARN : Pour ce genre d’action, vous serez obligĂ© d’utiliser le guillemet anglais (”).

Les autres opérations viennent donc logiquement sous cette forme :

La soustraction

let z="$x-$y"
echo $z
1

La multiplication

let z="$x*$y"
echo $z
6

La division

La division ne prendra que la partie entiĂšre du quotient.

let z="$x/$y"
echo $z
1

Le modulo

Vous n’avez peut-ĂȘtre jamais vu cette opĂ©ration en mathĂ©matiques (c’est que vous avez Ă©chappĂ© au cours d’arithmĂ©tique, la chance), elle correspond au reste d’une division euclidienne.

let z="$x*$y"
echo $z
1

Les conditions

Les conditions vous permettront de commencer Ă  faire des actions logiques.

Elles se présentent sous cette forme :

Bien sĂ»r, la condition de base n’est pas aussi dĂ©veloppĂ©e et complĂšte que ça, on se contenterait alors d’un maigre bloc Si condition vraie → Faire.

La condition s’exprime ainsi en shell :

if [[ condition ]]
then
    faire

fi

Je l’ai exprimĂ© sur plusieurs lignes, mais vous pouvez Ă©galement le faire en une seule instruction comme ceci :

if [[ condition ]]; then faire
; fi

La premiÚre écriture convient mieux au fichier et la deuxiÚme à la ligne de commande.

Notez bien la prĂ©sence d’espace entre les crochets et la condition, ils sont absolument nĂ©cessaires, sans quoi bash vous retournera une erreur.

Voici le tableau regroupant les différentes opérations logiques :

OpérationDescription
a == ba est égale à b
a != ba n’est pas Ă©gale Ă  b
a -lt ba est plus petit que b
a -gt ba est plus grand que b
a && bLes propositions a et b sont vraies
a || bLa condition a ou la condition b est vraie

La reprĂ©sentation d’une condition en bash devient donc, par exemple :

x=3
y=2
if [[ $x -gt $y ]]
then
    echo “x est supĂ©rieur Ă  y”
fi

Elle peut se traduire en français par : « si x est plus grand que y, alors dire “x est supĂ©rieur Ă  y”. »

Pour utiliser les opérateurs autres opérateurs (et / ou), voici un deuxiÚme exemple :

x=3
y=2
if [[ $x -gt $y ]] || [[ $x == $y ]]
then
    echo “x est supĂ©rieur ou Ă©gale Ă  y”
fi

Ce qui peut se traduire par : « si x est plus grand OU Ă©gale Ă  y, alors dire “x est supĂ©rieur ou Ă©gale Ă  y”. »

Pour rappelle, vous pouvez exprimer une condition en une seule ligne, ce qui donnerait pour le deuxiÚme exemple :

x=3;y=2;if [[ $x -gt $y ]] || [[ $x == $y ]];then echo “x est supĂ©rieur ou Ă©gale Ă  y”;fi

Écrire son code dans un fichier

Depuis tout Ă  l’heure, je vous prĂ©sente deux maniĂšres de coder en shell (bash) car vous n’ĂȘtes actuellement pas en mesure de faire un fichier contenant ces bouts de code pouvant s’exĂ©cuter. Laissez-moi donc vous montrer comment faire en reprenant un des morceaux de code Ă©crit plus haut :

#!/bin/bash
x=3
y=2
if [[ $x -gt $y ]] || [[ $x == $y ]]
then
    echo “x est supĂ©rieur ou Ă©gale Ă  y”
fi

Enregistrez ce morceau de code dans un fichier que vous noterez test.sh, puis rendez le exécutable avec chmod. Lancez le en ajoutant ./ devant et le tour est joué. Vous devinerez aisément les deux rÚgles qui découle de cet exemple :

Vous ĂȘtes donc prĂȘt pour Ă©crire de grands codes en shell !

Les boucles

Les boucles sont juste des conditions qui se rĂ©pĂštent tant qu’elles se trouvent ĂȘtre vraies. Une fois fausses, les boucles s’arrĂȘtent. Avec shell, le mot-clef pour faire une boucle est « while », suivi de « do » et elle se finit par « done »

Ce qui donne :

while [[ condition ]]
do
    fait

done

Par exemple, on veut afficher 5 fois le mĂȘme message Ă  l’écran :

x=0
while [[ x -lt 5 ]]
do
    echo “Mon message”
    let x=”$x+1”
done

WARN : N’oubliez pas d’incrĂ©menter vos variables, vous vous retrouveriez dans une boucle infinie si ce n’était pas le cas.

Ceci Ă©tant dit, vous avez dĂšs Ă  prĂ©sent de quoi faire des scripts assez pratique, pour une utilisation personnelle ou pour s’en servir sur la machine d’un autre. Je ne peux qu’ĂȘtre assez exhaustif ici malheureusement, du fait de mes faibles connaissances en la matiĂšre et de par mon incapacitĂ© Ă  rĂ©sumĂ© l’ensemble des notions Ă  voir sur ce sujet.