Fonctionnement global de l'ordinateur

On l'utilise tous les jours, que ce soit pour le travail, pour les études, pour jouer, en tant que smartphone ou PC portable, l'ordinateur est devenu omniprésent dans notre vie.

La compréhension de son fonctionnement est nécessaire pour tout hackeur. Comprendre comment sont exécutés les programmes, comment les processus se partagent la lecture/écriture d'un fichier, comment la mémoire est gérée, comment les données sont envoyées et reçues sur Internet.

Mais ne vous inquiétez pas nous allons pouvoir aborder ces notions une par une en détail. Nous allons d'abord voir comment fonctionne l'ordinateur globalement avant de rentrer dans les détails pour éviter de vous perdre.

Les différentes parties d'un ordinateur

L'unité centrale et les principaux périphériques

Les principales parties visibles d'un ordinateur de bureau que vous avez sûrement rencontrés sont :

L'unité centrale L'écran Le clavier
unite_centrale ecran clavier


L'unité centrale Les hauts parleurs Et bien d'autres encore !
souris HP autres périphériques

L'écran, la souris, le clavier, les hauts parleurs, les clés USB etc, ils représentent les périphériques de l'ordinateur et sont fabriqués pour remplir une fonction en particulier. Par exemple, les haut parleurs permettent d'avoir une sortie sonore, la souris et le clavier une entrée utilisateur. Bien que l'on ne va pas s'y attarder, il ne faut pas les sous estimer quand on s'intéresse au hacking.

Remarque 💬

Tous les périphériques liés à un ordinateur peuvent représenter une vulnérabilité.

Il faut tout de suite se mettre dans la tête d'un hackeur : l'unité centrale est en générale très difficile d'accès, on ne peut pas, par exemple, lire des données qui y sont stockées ni les modifier physiquement. Par contre, les autres périphériques sont en générale moins sécurisés et plus accessibles. Par exemple, il est possible d'intercepter les données qu'envoient un clavier ou souris sans fil si la communication n'est pas chifrée.

Intéressons nous donc à cet élement qui va contenir les principaux composants / périphériques d'un ordinateur : l'unité centrale.

Définition 📝

Les composants sont à l'intérieur de l'unité centrale tandis que les périphériques vont être à l'extérieur.

On peut faire l'analogie suivante : l'unité centrale c'est l'équivalent du corps de l'ordinateur. Il en a besoin pour fonctionner. Il a également besoin d'un cerveau (processeur), d'une mémoire (RAM / ROM) etc. On peut ajouter à cela les autres périphériques, non primoridaux, comme les clés USB, les hauts parleurs, l'imprimante ni même une souris ou un clavier ! Ce serait l'équivalent des accessoires que l'on porte en plus et qui ne sont pas vitaux : bracelet, collier, bague ...

Question ❓

Mais je ne vois pas comment on peut utiliser un ordinateur sans écran, ni souris ? C'est trop nul on peut rien faire avec !

Eh bien détrompez-vous ! Ce n'est pas parce que l'on a pas un écran, une souris ni un clavier directement connectés que l'on ne peut pas communiquer avec un ordinateur. Je vais d'ailleurs vous annoncer quelque chose qui va peut être vous surprendre :

Remarque 💬

Un serveur n'est rien d'autre qu'une unité centrale qui exécute des calculs et traite les demandes que l'on lui donne.
On peut le considérer comme un super ordinateur dont le principal objectif est de traiter les demandes des clients.

Vous pouvez alors vous demander comment on communique avec un serveur pour récupérer un dossier, vérifier l'état de son fonctionnement etc..

C'est possible de le faire à distance grâce à un outil comme ssh qui est grosso modo un "teamviewer en mode console". Nous aurons l'occasion de nous focaliser davantage sur le fonctionnement d'un serveur. C'est normal si vous ne comprenez pas trop comment cela fonctionne tout de suite.

L'unité centrale en détails

Revenons à nos moutons 🐑.

Comme je l'ai dit précédemment l'unité centrale est le corps de l'ordinateur. Il lui faut donc un cerveau pour pouvoir calculer, stocker les résultats des calculs dans la mémoire; il s'agit du processeur.

Le processeur

processeur


Le processeur d'un ordinateur est la partie la plus importante. Mais que fait-il concrètement ?

Il fait principalement des additions, soustractions, multiplications et divisions de bits qui ne sont, à ses yeux, qu'un courant allumé (1) ou éteint (0). Ni plus, ni moins.

Attention 📌

Si vous n'êtes pas à l'aise avec la notion de binaire et bits. Je vous invite à aller suivre au préalable le cours qui traite de ce sujet avant d'aller plus loin.

Vous l'aurez compris, étant donné que c'est l'entité chargée de calculer, elle doit être très performante Plus un processeur est rapide dans l'exécution et l'enchaînement des opérations, plus il est performant.

De nos jours les processeurs ont une fréquence de l'ordre de 3.0 / 4.0 GHz (Giga Hertz). Ce qui représente grosso modo 3 ou 4 milliards d'opérations par seconde. Rapide hein 🤯?

Remarque 💬

En réalité, il est faux de dire que la fréquence d'un processeur est exactement égale au nombre d'instructions executées par seconde. De nombreuses optimisations ont vu le jour. Nous aurons l'occasion de nous attarder plus en détail sur les caractéristiques du processeur : les coeurs, les threads, l'architecture et les optimisation effectuées dans un chapitre dédié.


Question ❓

Mais s'il ne sait faire que des additions, soustractions, divisons et multiplications, comment fait-il pour lancer des jeux, surfer sur internet ou tout simplement ouvrir un fichier texte ?

Très bonne question. Vous avez sûrement entendu quelqu'un dire qu'un ordinateur, c'est bête. Alors effectivement c'est le cas pour deux raisons :

  • Ce sont des humains qui ont fabriqué l'ordinateur et ses différents composants 😅
  • Le processeur ne sait faire que des opérations sur des bits, ni plus, ni moins Donc pour répondre à cette question : il faut savoir que lorsque l'on développe un programme ( comme un jeu, un navigateur etc), le code de ce programme va être converti en langage machine compréhensible par le processeur et qui n'est constitué que d'opérations basiques telles que celles vues précédemment.

Mais cela ne veut pas dire que l'on doit se casser la tête à lui faire comprendre étape par étape ce que l'on veut faire. Dans un programme si on lui dit : "affiche 'Hello world !' " c'est le compilateur qui va se charger de décomposer cette demande en opérations élémentaires pour le processeur.

Ce qu'il faut retenir du processeur :

  • C'est le cerveau de l'ordinateur
  • Il ne sait faire que des opérations très basiques

La mémoire vive (ou RAM)

RAM

Autre composant primordial de l'ordinateur : la mémoire vive ou RAM (Random Access Memory).

Elle porte bien son nom et en particulier les qualificatifs "vive" et "random" ( fr : aléatoire). Elle est qualifiée de vive car lorsque vous éteignez votre ordinateur, elle se vide de toutes les données qu'elle a pu contenir (on parle aussi de volatilité). Elle est qualifiée d'aléatoire car ... hmmm ça je vais vous l'expliquer après, d'abord comprenons à quoi elle sert.

Dans la vie de tous les jours on a souvent besoin de stocker des données de manière temporaire. Par exemple si je vous dit : "Quelle est la somme du nombre de lettres de 'Bonjour le monde' et 'Hello world' ?"

De tête c'est un peu laborieux ( si on vous pose la question à l'oral bien sûr 😅). Alors qu'en écrivant ces deux phrases sur une feuille de brouillon, on peut très rapidement compter le nombre de lettres au total. Puis jeter le brouillon ou l'utiliser pour un autre calcul.

Si vous n'avez pas la mémoire courte (😛) vous savez que la principale fonction d'un processeur est d'effectuer des opérations basiques. La RAM est donc l'équivalent de son petit cahier de brouillon lorsqu'il a besoin de stocker des données temporaires pour ses calculs. D'ailleurs les programmes que vous lancez, par exemple le navigateur, sont chargés en mémoire, on les appelle alors processus. Comment tout cela fonctionne ? On le verra dans un autre cours 😉.

Question ❓

Ok mais tu nous as pas dit pourquoi elle est aléatoire ...

Je n'ai pas oublié ! La mémoire est dite aléatoire pour une raison très simple : lorsque l'ordinateur a besoin de stocker des données temporaires, il va chercher la zone mémoire la plus facilement accessible (même si ce n'est pas aussi simple que ça).

Exemples 📄

Si vous lancez votre navigateur immédiatement lorsque l'ordinateur démarre, il ne sera sûrement pas stocké dans la mémoire à la même adresse que s'il avait été lancé en fin de journée lorsque vous avez plusieurs autres applications en cours d'exécution.
Cela est d'autant plus vrai de nos jours avec l'usage du système ASLR qui permet au sein d'un même programme d'éviter que les adresses soient les mêmes à chaque exécution. Vous pouvez y jeter un oeil par curiosité mais, pour l'instant, on en aura pas besoin pour la suite.

Si vous n'avez pas beacoup d'espace de RAM et que vous lancez une application gourmande en mémoire (ex : un jeu dernier cri) il est possible que votre PC ... RAMe 😅. En effet, lorsque la mémoire est pleine et qu'il a besoin de stocker des données rapidement, vu qu'il n'y a plus de place, il doit attendre que de la place se libère avant de poursuivre, et parfois, ça peut être long ⌛ ...