From ba1e2e70c9e429afbf2ceabed4d3732da97839d9 Mon Sep 17 00:00:00 2001
From: Anthony Borghi <anthony.borghi@veremes.com>
Date: Thu, 20 Apr 2023 11:44:16 +0200
Subject: [PATCH] orthographe et syntaxe

---
 source/concept/system/general.md  | 35 +++++++++--------
 source/concept/system/use_case.md | 62 ++++++++++++++++---------------
 2 files changed, 50 insertions(+), 47 deletions(-)

diff --git a/source/concept/system/general.md b/source/concept/system/general.md
index 743e2ac..3b98f40 100644
--- a/source/concept/system/general.md
+++ b/source/concept/system/general.md
@@ -1,6 +1,6 @@
 # Conceptes de base
 
-## Machines de Turing
+## Machine de Turing
 
 Une machine de Turing est un **modèle mathématique théorique** inventé par Alan Turing en 1936. Elle est considérée comme l'un des premiers modèles de calcul, et est souvent utilisée pour illustrer les concepts de la théorie de la calculabilité.
 
@@ -19,18 +19,17 @@ Enfin, la machine de Turing a également des implications en théorie de la comp
 en résumé, Alan Turing au delà d'avoir cassé l'un des sytèmes de cryptographie les plus performant de l'histoire et permis par ses actions la victoire des alliés pendant la seconde guerre mondiale, a inventé les concepts qui régissent encore aujourd'hui toutes les machines modernes.
 
 ```{Note}
-  Un film biopic 'Imitation Game' retrace l'histoire d'Alan turing, de son importance pendant la guerre à la fin de sa vie.
-  Si ça peut vous interresser de voir de manière un peu romancer l'histoire de ce génie, je ne peux que vous encourager à aller le voir.
+  Un film biopic 'Imitation Game' retrace l'histoire d'Alan Turing, de ses actions pendant la guerre à la fin tragique de sa vie.
+  Si ça peut vous interresser de voir de manière un peu romancer l'histoire de ce génie, je ne peux que vous encourager à le voir.
 ```
 
 ## Fonctionnement et application
 
-Quelques décénnies aprés la création de la machine de turing, un ordinateur, ça reste un ensemble de machine qui communique entre elles et occupe une place assez conséquente, pour une utilitée discutable vu la compléxité de fonctionnement.
+Quelques décénnies aprés la création de la machine de turing, un ordinateur, ça reste un ensemble de machine qui communiquent entre elles et occupent une place assez conséquente, pour une utilité discutable vu la compléxité de fonctionnement.
 
 ![old computers](./images/old_computers.png)
 
-On part du principe que saisir des calculs mathématiques en binaire sans forcément être capable de lire/comprendre le résultat c'est pénible, d'où la création des applications et du métier de développeur.
-Mais les bienfait de l'industrie moderne ayant réussie à bien améliorer tout ça, on va essayer de voir comment ça fonctionne.
+L'humanité part du principe que saisir des calculs mathématiques en binaire sans forcément être capable de lire/comprendre le résultat c'est pénible, d'où la création des applications et du métier de développeur.
 
 Un ordinateur moderne doit être visualiser comme un empilement de couche : 
 
@@ -39,12 +38,12 @@ Un ordinateur moderne doit être visualiser comme un empilement de couche :
 
 ### Premier niveau : Hardware
 
-Je ne vais pas faire une liste exhaustive des différents composants moderner constituant un PC.
+Je ne vais pas faire une liste exhaustive des différents composants modernes constituant un PC.
 
 En ce qui concerne le développement il y en a que trois qui nous interresse :
-- le CPU : on va parler de coeurs physique et virtuel (un coeurs physique peut représenter pluseirus coeurs virtuels, on peut aussi parler de thread), grossiérement un thread, c'est une tête de lecture de la machine de Turing, donc c'est la capacité à réaliser une opération mathématique. Si j'ai 8 thread, je peux réaliser 8 opérations mathématiques en parallèle.
-- la RAM : On parle aussi de mémoire vive, c'est une partie du ruban infini de la machine de turing. Le proncipe c'est que l'état de ce ruban n'est conservé que tant que la machine est allumée, par contre les temps d'accés et de manipulation sur cette partie du ruban est beaucoup plus rapide.
-- Le disque dur : l'autre partie du ruban de la machine de turing, celle-ci quant à elle reste dans le même état même en cas d'arret de la machine. On va retourver deux familles les HDD (Hard Disk Drive) et les SSD (Solid State Drive), l'un est bien plus rapide que l'autre et se rapproche de plus en plus des perfromances que 'lon connait avec la mémoire vive.
+- le CPU : on va parler de coeurs physiques et virtuels (un coeur physique peut représenter plusieurs coeurs virtuels, on peut aussi parler de thread), grossiérement un thread, c'est une tête de lecture de la machine de Turing, donc c'est la capacité à réaliser une opération mathématique. Si j'ai 8 thread, je peux réaliser 8 opérations mathématiques en parallèle.
+- la RAM : On parle aussi de mémoire vive, c'est une partie du ruban infini de la machine de turing. Le principe c'est que l'état de ce ruban n'est conservé que tant que la machine est allumée, par contre les temps d'accés et de manipulation sur cette partie du ruban est beaucoup plus rapide.
+- Le disque dur : l'autre partie du ruban de la machine de turing, celle-ci quant à elle conserve son état même en cas d'arret de la machine. On va retrouver deux familles de disque les HDD (Hard Disk Drive) et les SSD (Solid State Drive), le SSD est bien plus rapide que le HDD et se rapproche de plus en plus des perfromances que l'on connait avec la RAM.
 
 ### Deuxième niveau : OS
 
@@ -53,7 +52,7 @@ l'OS (Operating System) c'est ce qui va rendre utilisable une machine de turing
 Il va agir comme un traducteur entre vos application et les composant de l'ordinateur.
 Il va prendre sur lui la gestion de la mémoire, le stockage de fichiers, ...
 
-Historiquement on part d'un noyau commun UNIX qui à ensuite dévie sur les divers OS que l'on connait : Windows (même ne vient pas directement d'UNIX), Linux, Mac OS.
+Historiquement on part d'un noyau commun UNIX qui a ensuite dévié sur les divers OS que l'on connait : Windows (ne vient pas directement d'UNIX), Linux, Mac OS.
 
 En ce qui nous concerne on va se cantonner au Linux moderne. Un linux c'est avant tout un noyau, c'est un ensemble de fonctionnalité communes à tous les linux, puis chaque distribution va embarquer différents paquets additionnels.
 
@@ -65,20 +64,20 @@ Grossièrement toutes les autres distributions vont être des dérivés avec plu
 
 Exemple : 
 - Ubuntu : Debian avec un certain nombre de paquet de base installé comme par exemple nano.
-- Kali : Debian qui utilise KDE à la place de gnome ou unity et qui embarque tout un tas d'application d'attaque de logiciel.
+- Kali : Debian qui utilise KDE à la place de gnome ou unity et qui embarque tout un tas d'application de pentest.
 
 Il faut voir une distribution linux comme un ensemble de LEGO, on va retrouver certains LEGO chez tout le monde puis chacun va embarquer un peu ce qu'il veut.
 
-Veremes utilise essentiellement Ubuntu qui dérive de Debian (que l'on peut utiliser aussi), cechoix est fait en fonction des préférence d'AWS qui préconise Ubuntu et est donc plus rapide sur les sortie de correctif et le suivi des nouvelles versions.
+Veremes utilise essentiellement Ubuntu qui dérive de Debian (que l'on peut utiliser aussi), ce choix est induit par les préférence d'AWS qui préconise Ubuntu et est donc plus performant sur les sortie de correctifs et le suivi des nouvelles versions.
 
-Lors des installations il faut favoriser les version LTS (Long term support) et si possible la dernière.
+Lors des installations il faut favoriser les versions LTS (Long term support) et si possible la dernière.
 
-### Dernier niveau : Librairies, API et applications
+### Derniers niveaux : Librairies, API et applications
 
-Pour développer on va se retoruver à utiliser certains composant développer par des tiers.
+Pour développer on va se retrouver à utiliser certains composants développés par des tiers.
 
-Par exemple en C/C++ on va régulièrement utiliser des librairies dynamique pour s'économiser de la production de code et profiter d'un fils ocnducteur unique, massivement utilisé et donc plus robuste.
+Par exemple en C/C++ on va régulièrement utiliser des librairies dynamiques (DLL) pour s'économiser de la production de code et qui sera massivement utilisé et donc plus robuste.
 
 On peut aussi utiliser des API, SDK, ou même des exécutables.
 
-Par exemple si je reste dans le cas de nos application, on va configurer un WebServer HTTP Apache, qui va lancer l'exécutable de PHP pour aller lancer le code API, ce qui va provoquer des actions de la machine pour produire un résultat.
\ No newline at end of file
+Par exemple si je reste dans le cas de nos applications, on va configurer un WebServer Apache, qui va lancer l'exécutable de PHP pour aller interpréter le code de API, ce qui va provoquer des actions de la machine pour produire un résultat.
\ No newline at end of file
diff --git a/source/concept/system/use_case.md b/source/concept/system/use_case.md
index 9f82b34..cb11e4a 100644
--- a/source/concept/system/use_case.md
+++ b/source/concept/system/use_case.md
@@ -1,20 +1,20 @@
 # Utilisation d'un système Linux
 
-Dans cette partie on va voir les pièges à éviter et on va essayer de faire un petit tour de paquet trés pratiques dans le cadre du support ou du développement.
+Dans cette partie on va voir les pièges à éviter et on va essayer de faire un petit tour des paquets trés pratiques dans le cadre du support ou du développement.
 
-Je considère que vous connaissez les commandes de bases et les notion de redirection tel que le pipe ou les redirection de flux.
+Je considère que vous connaissez les commandes de bases (ls, cd, apt, sudo, ...) et les notions de redirection de flux (cmd1 | cmd2, cmd 1&>2, cmd1 && cmd2, ...).
 
 ## Shell : Un pour tous et tous pour un
 
 Le shell est un programme informatique qui fournit une interface en ligne de commande (CLI) entre l'utilisateur et le système d'exploitation. Le shell est un interpréteur de commandes qui permet à l'utilisateur de saisir des commandes en texte brut pour effectuer des opérations sur le système d'exploitation.
 
-Par abus de langage, on parle de shell ou de bash mais en réalité on ne sait pas toujours ce qu'on manipule et certains de ces interpréteur ne s'utilisent pas du toute de la même façon et ne prenne pas l'information de la même source.
+Par abus de langage, on parle de shell ou de bash mais en réalité on ne sait pas toujours ce qu'on manipule et certains de ces interpréteurs ne s'utilisent pas du tout de la même façon et/ou ne prennent pas l'informations de la même source.
 
-Windows va utiliser un Shell spécifique dans ses invites de commande et va inventer sa propre version du shell avec le PowerShell.
+Windows va utiliser un Shell spécifique dans ses invites de commande et a sa propre version du shell avec le PowerShell. \
 Ubuntu ou Debian vont utiliser un shell amélioré que l'on appelle Bash, mais si je reprend Kali dont j'ai parlé avant qui est une distribution type Debian
-par défaut elle utilise Zsh.
+par défaut elle utilise zsh à la place de bash.
 
-Sur le système Linux au lancement du shell, les scripts .bashrc seront jouer, il y a un script principla commun a tous les utilsateur de la machine que je déconseille fortement de modifier, et un script spécifique à cotre utilisateur qui se trouve dans `$HOME/.bashrc`, mais si je reprend Zsh, le script s'appelera .zshrc et pourra avoir une syntaxe différente.
+Sur le système Linux au lancement du shell, les scripts .bashrc seront jouer, il y a un script principal commun a tous les utilisateurs de la machine qu'il est fortement déconseillé de modifier, et un script spécifique à votre utilisateur qui se trouve dans `$HOME/.bashrc`, mais si je reprend zsh, le script s'appelera .zshrc et pourra avoir une syntaxe différente (chose à savoir si vous voulez modifier votre environnement ou créer des alias). 
 
 C'est pour ça qu'au début de beaucoup de script shell on retrouve ce qu'on appelle un shebang qui ressemble à ça : 
 
@@ -26,14 +26,16 @@ cd ..
 ls -al
 ```
 
-La première ligne commenté permet de définir l'interpréteur shell à utiliser pour le script.
+La première ligne commenté permet de définir l'interpréteur à utiliser pour le script, qui peut même être python ou php si on ne veut pas faire de shell.
 
-Pour la suite des exemple nous allons otujours parler de bash linux classique.
+Pour la suite des exemples nous allons toujours parler de bash linux classique.
 
 ## Interagir avec les fichiers
 
-Par défaut il y aura toujours le paquet `vi` voir `vim` qui sont deux éditeurs de texte, trés pratique quand on les connait, mais qui est fortement déconseillé pour des débutants.
-Sur un Ubuntu, il y aura généralement `nano` qui est présent sur la machine et qui est plus simple d'utilisation mais moins puissant.
+Par défaut il y aura toujours le paquet `vi` voir `vim` qui sont deux éditeurs de texte, trés pratiques quand on les connait, mais qui est fortement déconseillé pour des débutants.
+Sur un Ubuntu, il y aura généralement `nano` qui est présent de base sur la machine et qui est plus simple d'utilisation mais moins puissant.
+
+Dans tous les cas on aura le plus souvent les commande `cat` et `tail` pour lire des fichiers, ainsi que `awk` et `sed` pour les modifier même si c'est vite laborieux.
 
 ## Interroger une base de donnée Postgres
 
@@ -41,7 +43,7 @@ Dans notre cas on va parler de postgres.
 En installant le paquet **postgresql**, la machine peut lancer les commandes suivantes (entre autre): 
 - `psql` : qui permet de se connecter à une base de donnée et d'exécuter des requêtes SQL
 - `pg_dump`: qui permet de faire une sauvegarde de la structure de donnée et des données partiellement ou entiérement
-- `pg_dump_all` : qui permet de sauvegarder toutes la base y compris les rôles mais qui est moins configurable
+- `pg_dump_all` : qui permet de sauvegarder toutes les bases y compris les rôles mais qui est moins configurable que la précédente
 - `pg_restore` : qui permet de jouer un dump pour restaurer une base
 
 ## Localiser un fichier 
@@ -60,37 +62,37 @@ sudo locate mon_fichier | grep /var/www/gtf/vas
 
 Pour avoir un descriptif complet d'une commande et de son utilisation il faut utiliser la commande `man` : `man ls` pour la documentaion de ls
 
-Pour avoir une aide simple et souvent un exemple d'utilisation il suffit le plus souvent d'ajouter l'option à la commande souhaité `--help`
+Pour avoir une aide simple et ainsi qu'un exemple d'utilisation il suffit le plus souvent d'ajouter l'option `--help` à la commande souhaité
 
 ## Analyser le réseau
 
-Chez les clients le plus souvent la Base de données se trouvent sur un autre serveur que celui utilisé pour l'applicatif.
-Il arrive que pour diverses raisons le réseau bloque la communication entre les deux serveur, ou un SMTP externe ou un autre serveur.
+Chez les clients le plus souvent la base de données se trouvent sur un autre serveur que celui utilisé pour l'applicatif.
+Il arrive que pour diverses raisons le réseau bloque la communication entre les deux serveurs, ou un SMTP externe ou un autre serveur.
 
-Dans ce cas là plusieurs outils peuvent vous aider à vérifier si le sevreur est accessible et joignable.
+Dans ce cas là plusieurs outils peuvent vous aider à vérifier si le serveur est accessible et joignable.
 
 ### Ping
 
-Le ping est une commande qui permet d'envoyer des paquets d'octet à une machine.
-En utilisant une url vous pourrez voir si le DNS resout bien l'adresse IP et si le serveur est joignable.
+Le ping est une commande qui permet d'envoyer des paquets d'octets à une machine.
+En utilisant une url vous pourrez voir si le DNS résout bien l'adresse IP et si le serveur est joignable.
 
 ```{Warning}
-  Le ping peut être bloqué par les protections contre le DDOS, donc un retour négatif de la commande ne veut pas dire que le serveur joignable. A l'inverse un retour positif assure que le serveur est visible pour la machine qui lance la commande, en revanche ça ne garantie pas que le port de communication soit ouvert.
+  Le ping peut être bloqué par les protections contre le DDOS, donc un retour négatif de la commande ne veut pas dire que le serveur est injoignable. A l'inverse un retour positif assure que le serveur est visible pour la machine qui lance la commande, en revanche ça ne garantie pas que le port de communication soit ouvert.
 
   C'est pourquoi le ping est rarement suffisant pour s'assurer d'un problème réseau, mais il donne déjà des pistes
 ```
 
 ### Traceroute
 
-Traceroute à l'instar du ping va prendre un paramètre une IP ou un domaine. 
-Il va premièrement résoudre le domaine en IP dans tous les cas ce qui peremttra de tester la résolution DNS, il va ensuite vous afficher un maximum de rebonds par lesquelles passent vos informations.
+Traceroute comme ping va prendre en paramètre une IP ou un domaine. 
+Il va premièrement résoudre le domaine en IP dans tous les cas ce qui permettra de tester la résolution DNS, il va ensuite vous afficher un maximum de rebonds par lesquelles passent vos informations.
 
 ![traceroute](./images/traceroute.png)
 
-On voit sur cette exemple que je suis bien arrivé dans l'infra d'AWS c'est le dernier rebond que je vois, par contre ensuite je ne sais pas ce qui est arrivé à ma requête.
+On voit sur cette exemple que je suis bien arrivé dans l'infra d'AWS c'est le dernier rebond, ensuite la commande n'a plus de retour donc on en saura pas plus.
 
 ```{Warning}
-  Comme pour le ping cette commande est souvent limitée pour des raisons de sécurité. Elle va vous permettre de vérifier la communication jusqu'à un certains point, là en l'occurence je suis sûr que j'arrive jusqu'à AWS, donc si ma machine ne reçoit pas ma requête soit j'ai mal configuré mon groupe de sécurité, ou alors AWS rencontre un problème et je peux m'appuyer sur le modèle de responsabilité partagé pour que le support agisse sur l'infrastructure.
+  Comme pour le ping cette commande est souvent limitée pour des raisons de sécurité. Elle va vous permettre de vérifier la communication jusqu'à un point. Dans l'exemple je suis sûr que j'arrive jusqu'à AWS, donc si ma machine ne reçoit pas ma requête soit j'ai mal configuré mon groupe de sécurité, soit AWS rencontre un problème et je peux m'appuyer sur le modèle de responsabilité partagé pour que le support agisse sur l'infrastructure.
 ```
 
 ### Nmap
@@ -102,32 +104,34 @@ nmap bien utilisé peut vous permettre de reproduire toute une architecture rés
 Sur l'exemple on voit une liste de port ouvert et fermé.
 Le port 22 pour SSH, 80/443 pour le HTTP, ...
 
-A ce moment là vous avez une idée clair de l'accéssibilité de la machine distante et en cas d'erreur vous pouvez écarter ou incriminer le réseau de l'équation.
+A ce moment là vous avez une idée clair de l'accéssibilité de la machine distante et en cas d'erreur vous pouvez écarter ou incriminer le réseau.
 
 ```{Warning}
-  nmap ne sera jamais installé sur les machines par défaut, il faut toujours demander au client avant d'installer une commande de ce type et demander l'autorisation de scanner la machine distante.
+  nmap ne sera jamais installé sur les machines par défaut, il faut toujours demander au client avant d'installer une commande de ce type et demander l'autorisation de scanner la machine cible.
 
-  Nmap est une commande connu et est souvent détecter comme une tentative d'intrucion vu qu'un attaqunant va réguliérmeent l'utiliser comme première commande avant d'attaquer réellement la machine.
+  Nmap est une commande connue et est souvent détecté comme une tentative d'intrusion vu qu'un attaquant va réguliérmeent l'utiliser comme première commande avant d'attaquer réellement la machine.
 ```
 
 ### Telnet
 
 Quand on en arrive là, généralement c'est que ça devient compliqué.
 
-Telnet vous permet de contacter un serveur sur un port et de lui envoyer des trame de données.
+Telnet vous permet de contacter un serveur sur un port et de lui envoyer des trames de données.
 
 Une utilisation que j'ai assez souvent faite c'est pour débugguer les SMTP. Avec telnet on peut contacter le serveur sur le port, puis vérfiier sa réponse et enfin tester l'authentification, voir même l'envoi de mail complet.
 
-C'est une commande assez complexe dont l'utilisation dépend de ce que 'lon veut tester, je vous conseille de chercher l'utilisation du protocole à tester avec telnet directement sur le net.
+On peut aussi l'utiliser pour tester de l'IMAP ou tout autre protocole.
+
+C'est une commande assez complexe dont l'utilisation dépend de ce que l'on veut tester, je vous conseille de chercher l'utilisation du protocole à tester avec telnet directement pour votre cas spécifiquement.
 
 ## Récupération des statistiques de la machine
 
 Par défaut les commandes `top` et `ps -ax` devraient toujours être présente et fonctionner.
-Une autre commande à installer qui est souvent pratique est `htop`, qui est plus simple à analyser, dynamique et présentent d'autre fonctionnalités comme le `kill` via la sélection de processus ou la recherche de processus.
+Une autre commande à installer qui est souvent pratique est `htop`, qui est plus simple à analyser, dynamique et présente d'autre fonctionnalités comme le `kill` via la sélection de processus ou la recherche de processus.
 
 ![htop](./images/htop.png)
 
-deux autres commande qui seront trés pratique pour récupérer l'état des disques sont `df` et `du`.
+Deux autres commande qui seront trés pratique pour récupérer l'état des disques sont `df` et `du`.
 
 `df` donnera une vue globale de l'état de la machine, alors que `du` permettra de voir létat d'un dossier sur le disque
 
-- 
GitLab