{"0": {
    "doc": "C887VAW Déployer un réseau Wifi (avec interface pont)",
    "title": "Objectif: Créer un réseau Wifi avec un routeur Cisco C887VAW",
    "content": " ",
    "url": "/DOCS/Reseau/Cisco/C887VAW.html#objectif-cr%C3%A9er-un-r%C3%A9seau-wifi-avec-un-routeur-cisco-c887vaw",
    
    "relUrl": "/DOCS/Reseau/Cisco/C887VAW.html#objectif-créer-un-réseau-wifi-avec-un-routeur-cisco-c887vaw"
  },"1": {
    "doc": "C887VAW Déployer un réseau Wifi (avec interface pont)",
    "title": "Introduction: Comment fonctionne le routeur et l’AP ?",
    "content": "Ce routeur est particulier, ce n’est pas qu’une seule machine complète, c’est un routeur/switchL3 Cisco sur lequel est greffé un module Access Point Wifi relié par un bridge interne configurable. D’où le schéma fourni dans le TP: . Pas de panique j’expliquerai tout en détail dans la partie “configuration de base”. Ce n’est qu’une introduction. Ce schéma représente l’entièreté de l’équipement Cisco C887VAW, il y a la partie routeur et la partie AP (remarque: sur le schéma, on voit du dualband, 2.4GHz et 5GHz, or, il n’y a qu’une bande 2.4GHz.). Ce qu’il faut retenir de ce schéma ET ce qu’il faut faire: . | Reset le routeur et l’AP | Configurer le Vlan1 sur la partie routeur du Cisco pour le brancher ensuite sur le vlan 800 de l’IUT. | Activer l’interface Web (http server) du routeur pour configurer la partie AP (ne le faites pas en ligne de commandes, c’est chiant… et il faut être sûr des commandes et de l’ordre dans lequel les entrer…) | Configurer le bridge interne pour faire communiquer la partie AP (Wifi) et la partie Réseau (Routeur). | Configurer un SSID ainsi que la clef WPA pour pouvoir émettre un réseau Wifi fonctionnel (le bridge interne, une fois configuré, va router tous les paquets du réseau wifi vers le vlan associé au SSID que vous avez créé, pas de panique j’explique après.) | Cabler le Vlan 800 sur un port du switch. Juste en cablant, le DHCP du réseau Wifi (qu’on aurait dû faire en temps normal) sera assuré par le Vlan 800 du réseau de l’IUT. Idem pour les machines connectées sur un port du routeur. | . ",
    "url": "/DOCS/Reseau/Cisco/C887VAW.html#introduction-comment-fonctionne-le-routeur-et-lap-",
    
    "relUrl": "/DOCS/Reseau/Cisco/C887VAW.html#introduction-comment-fonctionne-le-routeur-et-lap-"
  },"2": {
    "doc": "C887VAW Déployer un réseau Wifi (avec interface pont)",
    "title": "Etape 1: Reset le router ET l’AP.",
    "content": "Reset du routeur: . Branchez le port console, configurez Minicom, puis allumez le routeur. Au même moment où vous l’allumez, spammez cette combinaison de touche: CTRL + A ; relacher ; F &lt;= afin d’envoyer un “BREAK” au routeur. Jusqu’à voir le terminal: rom1&gt; . tappez les commandes: rom1&gt; confreg 0x2142 rom2&gt; reset . Le routeur va redémarrer. Reset de l’AP: . Une fois connecté en console sur le routeur (après le reset et redémarrage), tappez cette commande pour reset l’AP: router&gt; en router# service-module wlan-ap 0 reset . ",
    "url": "/DOCS/Reseau/Cisco/C887VAW.html#etape-1-reset-le-router-et-lap",
    
    "relUrl": "/DOCS/Reseau/Cisco/C887VAW.html#etape-1-reset-le-router-et-lap"
  },"3": {
    "doc": "C887VAW Déployer un réseau Wifi (avec interface pont)",
    "title": "Etape 2: Configuration de base",
    "content": "Tout d’abord, il faut rendre le bridge interne fonctionnel (celui entre la partie routeur du cisco et la partie AP du cisco) . Pour commencer faites: . router&gt; en router# show ip int br . Il y a 2 interfaces à configurer: . | si vous regardez le schéma (et le résultat de la commande), il y a l’interface wlan-ap0. Cette interface sert de “port consol” pour configurer en ligne de commande l’AP, il est crucial de commencer par le configurer pour pouvoir poursuivre la suite du TP. | sur le schéma, il y a la deuxième interface à configurer qui ne figure pas de manière explicite: grosso modo, le lien “L2” sur le schéma est appelé BVI sur la partie AP, elle n’apparait pas dans le résultat de la commande mais, pas de panique, une fois que vous serez connecté à la partie AP elle figurera. | . Que faire ? . Perso quand j’ai fait le TP j’ai pris la plage IP privée suivante: 192.168.0.0/24 -&gt; réseau interne perso 192.168.255.1/24 -&gt; interface wlan-ap0 (“port consol” de l’AP) . 192.168.0.1/24 -&gt; interface vlan 1 192.168.0.2/24 -&gt; interface de la BVI de l’AP (doit être sur le même réseau que le vlan 1, c’est sur cette adresse que réside le serveur http de la partie AP du Cisco) . Aide commandes à réaliser: . router&gt; en router# conf t router# interface wlan-ap 0 router# ip addr &lt;IP-PORT-CONSOLE&gt; &lt;MASQUE-SOUS-RESEAU&gt; router# no shutdown . Maintenant il faut basculer sur l’AP pour attribuer une IP à la BVI (le bridge interne) . Que faire ? + Aide: . router# service-module wlan-ap 0 session Le mdp par défaut est Cisco. ap&gt; en ap# show ip int br Là vous allez voir l’interface BVI. ap# conf t ap# int BVI1 ap# ip addr &lt;IP-DE-L’AP&gt; &lt;MASQUE-SOUS-RESEAU&gt; ap# no sh Maintenant le bridge est configuré. Il faut activer l’interface WEB. Config de l’interface Web de l’AP: . Créez un user qui aura les droits d’accéder à l’interface Web: . ap# conf t ap# username cisco_ap privilege 15 secret Progtr00 Ne perdez pas l’identifiant et le mdp car il est crucial pour la suite. Activez l’interface Web: ap# conf t ap# ip http server ap# ip http secure-server ap# ip http authentication local . Config de l’interface vlan 1 sur le routeur: . Rebasculez sur la console du routeur avec cette combinaison de touche: CTRL + SHIFT + 6 ; relâcher puis ; X &lt;= faut le savoir hein ! ;) . Pour rebasculer dans l’AP il suffit d’appuyer sur ENTER dans la console du routeur sans aucune commande tapée. Aide config interface vlan 1: . router&gt; en router# conf t router# int vlan 1 router# ip addr &lt;IP-DE-VOTRE-VLAN-1&gt; &lt;MASQUE-SOUS-RESEAU&gt; router# no sh . router# conf t router# int range f0 - 3 router# switchport mode access router# switchport access vlan 1 router# no sh . ",
    "url": "/DOCS/Reseau/Cisco/C887VAW.html#etape-2-configuration-de-base",
    
    "relUrl": "/DOCS/Reseau/Cisco/C887VAW.html#etape-2-configuration-de-base"
  },"4": {
    "doc": "C887VAW Déployer un réseau Wifi (avec interface pont)",
    "title": "Etape 3: Configuration du réseau Wifi (SSID, WPA, BEACON FRAMES):",
    "content": "Créez une VM en bridge sur la 2ème carte réseau puis débranchez le câble du port sur le mur de votre poste XX.02 et branchez-le sur un des ports de votre routeur. Connectez vous avec un navigateur (Firefox en désactivant le Proxy) sur l’adresse de l’AP, vous devriez avoir ceci: . Le bridge vers le vlan 1 du routeur: . Allez dans: NETWORK INTERFACES -&gt; Service Set Identifiers (SSIDs) -&gt; Define VLANs et créez le Vlan 1 et cochez bien Native VLAN et clickez sur APPLY . Le système de chiffrement: . Allez dans: SECURITY -&gt; et malheureusement je n’ai plus le cheminement exact mais il faut activer le système de chiffrement WPA et AES… . Cela dit j’ai l’image de ce qu’il faut faire: . Configuration de votre SSID (votre réseau Wifi: nom, bridge vers un vlan, etc…): . Retournez dans: NETWORK INTERFACES -&gt; Service Set Identifiers (SSIDs) et mettez ces paramètres: . Mettez un SSID personnalisé, un peu la flemme de voir mon nom circuler… ;) (et cochez bien l’interface Radio) . Le chiffrement WPA et la configuration du mot de passe lors de la connexion: . Dans PRE-SHARED-KEY entrez un mot de passe perso pour quand les gens vont se connecter à votre réseau Wifi. Le BEACON (pour que votre réseau Wifi soit visible): . Et voilà, vous avez votre réseau Wifi fonctionnel, normalement … :) Il est fonctionnel mais vous n’avez pas encore de réseau, donc pas de panique, c’est normal que votre téléphone / PC ne peut pas se connecter, le réseau doit être juste visible et accessible en Wifi, c’est le VLAN 800 du réseau de l’IUT qui va gérer le DHCP. ",
    "url": "/DOCS/Reseau/Cisco/C887VAW.html#etape-3-configuration-du-r%C3%A9seau-wifi-ssid-wpa-beacon-frames",
    
    "relUrl": "/DOCS/Reseau/Cisco/C887VAW.html#etape-3-configuration-du-réseau-wifi-ssid-wpa-beacon-frames"
  },"5": {
    "doc": "C887VAW Déployer un réseau Wifi (avec interface pont)",
    "title": "Etape 4: Relier le réseau Local au VLAN 800 (ou sur tout autre réseau)",
    "content": "Cette étape est la plus simple, il suffit de tirer un cable depuis le switch dans la baie de brassage vers un port XX.03 (XX = votre numéro de poste) et tirer un autre cable depuis le port XX.03 du mur à côté de votre PC pour le brancher sur un des ports FastEthernet de votre switch. Et voilà, fini le TP. Bon courage pour la capture de trame ;) . Mon compte-rendu en PDF . Tout est fait main, pas d’IA. Grâce à Just-The-Docs, un thème Jekyll. ",
    "url": "/DOCS/Reseau/Cisco/C887VAW.html#etape-4-relier-le-r%C3%A9seau-local-au-vlan-800-ou-sur-tout-autre-r%C3%A9seau",
    
    "relUrl": "/DOCS/Reseau/Cisco/C887VAW.html#etape-4-relier-le-réseau-local-au-vlan-800-ou-sur-tout-autre-réseau"
  },"6": {
    "doc": "C887VAW Déployer un réseau Wifi (avec interface pont)",
    "title": "C887VAW Déployer un réseau Wifi (avec interface pont)",
    "content": "R301 TP3 . ",
    "url": "/DOCS/Reseau/Cisco/C887VAW.html",
    
    "relUrl": "/DOCS/Reseau/Cisco/C887VAW.html"
  },"7": {
    "doc": "Syscall table linux",
    "title": "Syscall Table",
    "content": "source: Searchable Linux Syscall Table for x86 and x86_64 . Instruction: syscall . Return value found in: %rax . Syscalls are implemented in functions named as in the Entry point column, or with the DEFINE_SYSCALLx(%name% macro. Relevant man pages: syscall(2), syscalls(2) . x86 64bit: . | NR | syscall name | references | %rax | arg0 (%rdi) | arg1 (%rsi) | arg2 (%rdx) | arg3 (%r10) | arg4 (%r8) | arg5 (%r9) | . | 0 | read | man/ cs/ | 0x00 | unsigned int fd | char *buf | size_t count | - | - | - | . | 1 | write | man/ cs/ | 0x01 | unsigned int fd | const char *buf | size_t count | - | - | - | . | 2 | open | man/ cs/ | 0x02 | const char *filename | int flags | umode_t mode | - | - | - | . | 3 | close | man/ cs/ | 0x03 | unsigned int fd | - | - | - | - | - | . |   | … |   |   |   |   |   |   |   |   | . | 59 | execve | man/ cs/ | 0x3b | const char *filename | const char *const *argv | const char *const *envp | - | - | - | . | 60 | exit | man/ cs/ | 0x3c | int error_code | - | - | - | - | - | . |   | … |   |   |   |   |   |   |   |   | . https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md . https://github.com/torvalds/linux/blob/v3.13/arch/x86/syscalls/syscall_64.tbl . # # 64-bit system call numbers and entry vectors # # The format is: # &lt;number&gt; &lt;abi&gt; &lt;name&gt; &lt;entry point&gt; # # The abi is \"common\", \"64\" or \"x32\" for this file. # 0 common read sys_read 1 common write sys_write 2 common open sys_open 3 common close sys_close . x86 32bit: . https://github.com/torvalds/linux/blob/v3.13/arch/x86/syscalls/syscall_32.tbl . # # 32-bit system call numbers and entry vectors # # The format is: # &lt;number&gt; &lt;abi&gt; &lt;name&gt; &lt;entry point&gt; &lt;compat entry point&gt; # # The abi is always \"i386\" for this file. # 0 i386 restart_syscall sys_restart_syscall 1 i386 exit sys_exit 2 i386 fork sys_fork stub32_fork 3 i386 read sys_read 4 i386 write sys_write 5 i386 open sys_open compat_sys_open 6 i386 close sys_close . ",
    "url": "/DOCS/Linux/Low-Level-dev/Syscall_table_Linux.html#syscall-table",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/Syscall_table_Linux.html#syscall-table"
  },"8": {
    "doc": "Syscall table linux",
    "title": "Syscall table linux",
    "content": " ",
    "url": "/DOCS/Linux/Low-Level-dev/Syscall_table_Linux.html",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/Syscall_table_Linux.html"
  },"9": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "Cheat Sheet Assembleur x86_64 (Syntaxe Intel, sans libc) CHATGPT",
    "content": "Compilation recommandée : . gcc -nostdlib -nostartfiles -fno-pic -no-pie file.s -o prog . Activer la syntaxe Intel dans GAS : .intel_syntax noprefix . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#cheat-sheet-assembleur-x86_64-syntaxe-intel-sans-libc-chatgpt",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#cheat-sheet-assembleur-x86_64-syntaxe-intel-sans-libc-chatgpt"
  },"10": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "1. Sauts conditionnels et flags",
    "content": " ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#1-sauts-conditionnels-et-flags",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#1-sauts-conditionnels-et-flags"
  },"11": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "Comparaison",
    "content": "cmp rax, rbx ; calcule rax - rbx et met à jour les flags . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#comparaison",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#comparaison"
  },"12": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "Flags principaux",
    "content": ". | ZF (Zero Flag) : 1 si résultat = 0 | SF (Sign Flag) : 1 si résultat négatif | CF (Carry Flag) : retenue (arithmétique non signée) | OF (Overflow Flag) : overflow signé | . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#flags-principaux",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#flags-principaux"
  },"13": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "Sauts conditionnels",
    "content": "Égalité . je label ; ZF=1 jne label ; ZF=0 jz label ; alias de je jnz label ; alias de jne . Comparaison signée . jl label ; &lt; jle label ; &lt;= jg label ; &gt; jge label ; &gt;= . Comparaison non signée . jb label ; &lt; (below) jbe label ; &lt;= ja label ; &gt; (above) jae label ; &gt;= . Autres . jmp label ; saut inconditionnel call label ; appel (push RIP puis jump) ret ; retour (pop RIP) . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#sauts-conditionnels",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#sauts-conditionnels"
  },"14": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "2. Variables globales (.data)",
    "content": "Section : .section .data . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#2-variables-globales-data",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#2-variables-globales-data"
  },"15": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "Déclarations (GAS)",
    "content": "Entiers . var8: .byte 0x41 var16: .word 0x1234 var32: .long 0x12345678 var64: .quad 0x1122334455667788 . Tableaux . array: .byte 1,2,3,4 . Accès (Intel syntax) . mov al, [var8] mov rax, [var64] lea rdi, [var8] . Avec -no-pie (adresses absolues autorisées) : . mov rdi, var8 ; adresse directe . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#d%C3%A9clarations-gas",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#déclarations-gas"
  },"16": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "3. Chaînes de caractères globales",
    "content": " ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#3-cha%C3%AEnes-de-caract%C3%A8res-globales",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#3-chaînes-de-caractères-globales"
  },"17": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "Chaîne simple (terminée par 0)",
    "content": ".section .data msg: .asciz \"hello\" . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#cha%C3%AEne-simple-termin%C3%A9e-par-0",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#chaîne-simple-terminée-par-0"
  },"18": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "Sans terminateur",
    "content": "msg: .ascii \"hello\" msg_len = . - msg . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#sans-terminateur",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#sans-terminateur"
  },"19": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "Avec saut de ligne",
    "content": "msg: .asciz \"hello\\n\" msg_len = . - msg ; inclut le \\0 . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#avec-saut-de-ligne",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#avec-saut-de-ligne"
  },"20": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "Longueur (inclut le \\0 avec .asciz)",
    "content": "msg_len = . - msg . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#longueur-inclut-le-0-avec-asciz",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#longueur-inclut-le-0-avec-asciz"
  },"21": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "Longueur sans le \\0",
    "content": "msg_len = . - msg - 1 . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#longueur-sans-le-0",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#longueur-sans-le-0"
  },"22": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "4. Exemple complet (write syscall, sans libc)",
    "content": ".intel_syntax noprefix .section .data msg: .ascii \"Hello\\n\" msg_len = . - msg .section .text .global _start _start: mov rax, 1 ; syscall write mov rdi, 1 ; stdout mov rsi, msg ; adresse (OK avec -no-pie) mov rdx, msg_len syscall mov rax, 60 ; exit xor rdi, rdi syscall . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#4-exemple-complet-write-syscall-sans-libc",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#4-exemple-complet-write-syscall-sans-libc"
  },"23": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "5. Rappels utiles",
    "content": " ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#5-rappels-utiles",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#5-rappels-utiles"
  },"24": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "Registres arguments (Linux x86_64)",
    "content": ". | rdi, rsi, rdx, rcx, r8, r9 | . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#registres-arguments-linux-x86_64",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#registres-arguments-linux-x86_64"
  },"25": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "Instructions utiles",
    "content": "cmp a, b jmp label call label ret lea rax, [var] mov rax, var ; adresse absolue (nécessite -no-pie) . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#instructions-utiles",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#instructions-utiles"
  },"26": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "6. Sections mémoire",
    "content": ". | .text : code | .data : données initialisées | .bss : données non initialisées | . Exemple : .section .bss buffer: .skip 64 . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#6-sections-m%C3%A9moire",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html#6-sections-mémoire"
  },"27": {
    "doc": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "title": "cheat sheet assembleur x_86_64_intel_nolibc CHATGPT",
    "content": " ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembleur_x_86_64_intel_sans_libc_CHATGPT.html"
  },"28": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "content": ". ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#x86_64-cheat-sheet-linux-64-bit-intel-syntax-lazy-chatgpt-generated",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#x86_64-cheat-sheet-linux-64-bit-intel-syntax-lazy-chatgpt-generated"
  },"29": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "1. Registres x86_64",
    "content": "Registres généraux (64 bits) . | Registre | Description | . | rax | Accumulateur, valeur de retour, syscall number | . | rbx | Général (callee-saved) | . | rcx | Compteur | . | rdx | 3e argument | . | rsi | 2e argument | . | rdi | 1er argument | . | rbp | Base pointer (frame stack) | . | rsp | Stack pointer | . | r8-r15 | Registres supplémentaires | . Sous-registres . | 64 bits | 32 bits | 16 bits | 8 bits | . | rax | eax | ax | al / ah | . | rbx | ebx | bx | bl / bh | . | rcx | ecx | cx | cl / ch | . | rdx | edx | dx | dl / dh | . Pour r8-r15 : . | r8 → r8d → r8w → r8b | . Registres spéciaux . | rip : instruction pointer | rflags : flags CPU | . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#1-registres-x86_64",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#1-registres-x86_64"
  },"30": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "2. Convention d’appel Linux (syscalls)",
    "content": "Registres utilisés . | Argument | Registre | . | syscall number | rax | . | arg1 | rdi | . | arg2 | rsi | . | arg3 | rdx | . | arg4 | r10 | . | arg5 | r8 | . | arg6 | r9 | . Exemple : write . mov rax, 1 ; syscall write mov rdi, 1 ; stdout mov rsi, buffer mov rdx, length syscall . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#2-convention-dappel-linux-syscalls",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#2-convention-dappel-linux-syscalls"
  },"31": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "3. Gestion de la pile (stack)",
    "content": "Registres importants . | rsp : sommet de la pile | rbp : base de la frame | . Prologue standard . push rbp mov rbp, rsp sub rsp, 32 ; allocation locale . Epilogue . mov rsp, rbp pop rbp ret . Variable locale . mov rax, 42 mov [rbp - 8], rax . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#3-gestion-de-la-pile-stack",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#3-gestion-de-la-pile-stack"
  },"32": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "4. Allocation et instruction mov",
    "content": "Important : mov n’alloue pas de mémoire. Exemple incorrect si pas de place sur la stack : . mov [rbp - 8], rax . Allocation correcte : . sub rsp, 32 mov [rbp - 8], rax . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#4-allocation-et-instruction-mov",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#4-allocation-et-instruction-mov"
  },"33": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "5. Segments mémoire",
    "content": ".data (initialisé) .section .data msg: .asciz \"Hello\" msg_len = . - msg .bss (non initialisé) .section .bss buffer: .skip 64 . Stack (dynamique) . sub rsp, 32 . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#5-segments-m%C3%A9moire",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#5-segments-mémoire"
  },"34": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "6. Buffers",
    "content": "Buffer sur la stack . lea rsi, [rbp - 32] . Buffer dans .bss . mov rsi, buffer . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#6-buffers",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#6-buffers"
  },"35": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "7. Types de pointeurs",
    "content": "| Type | Taille | . | byte ptr | 1 byte | . | word ptr | 2 bytes | . | dword ptr | 4 bytes | . | qword ptr | 8 bytes | . Exemple . mov byte ptr [rax], 1 mov word ptr [rax], 2 mov dword ptr [rax], 3 mov qword ptr [rax], 4 . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#7-types-de-pointeurs",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#7-types-de-pointeurs"
  },"36": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "8. Donner un pointeur à une zone mémoire",
    "content": "Adresse d’une variable globale . mov rsi, buffer . Adresse sur la stack . lea rsi, [rbp - 32] . Différence . | mov : charge une valeur | lea : charge une adresse | . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#8-donner-un-pointeur-%C3%A0-une-zone-m%C3%A9moire",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#8-donner-un-pointeur-à-une-zone-mémoire"
  },"37": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "9. Exemple minimal (read + write + exit)",
    "content": ".intel_syntax noprefix .global _start .section .bss buffer: .skip 32 .section .text _start: push rbp mov rbp, rsp ; read(stdin, buffer, 32) mov rax, 0 mov rdi, 0 mov rsi, buffer mov rdx, 32 syscall ; write(stdout, buffer, rax) mov rdx, rax mov rax, 1 mov rdi, 1 mov rsi, buffer syscall ; exit(0) mov rax, 60 xor rdi, rdi syscall . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#9-exemple-minimal-read--write--exit",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#9-exemple-minimal-read--write--exit"
  },"38": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "10. Exemple avec buffer sur la stack",
    "content": ".intel_syntax noprefix .global _start .section .text _start: push rbp mov rbp, rsp sub rsp, 32 ; read mov rax, 0 mov rdi, 0 lea rsi, [rbp - 32] mov rdx, 32 syscall ; write mov rdx, rax mov rax, 1 mov rdi, 1 lea rsi, [rbp - 32] syscall mov rsp, rbp pop rbp ; exit mov rax, 60 xor rdi, rdi syscall . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#10-exemple-avec-buffer-sur-la-stack",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#10-exemple-avec-buffer-sur-la-stack"
  },"39": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "11. Exemple type CTF (inspiré de ton modèle)",
    "content": ".intel_syntax noprefix .global _start .section .data password: .asciz \"secret\" password_len = . - password success: .asciz \"OK\\n\" success_len = . - success fail: .asciz \"NO\\n\" fail_len = . - fail .section .bss input: .skip 32 .section .text _start: push rbp mov rbp, rsp ; read input mov rax, 0 mov rdi, 0 mov rsi, input mov rdx, 32 syscall ; comparaison simple (1er caractère) mov al, byte ptr [input] mov bl, byte ptr [password] cmp al, bl jne wrong correct: mov rax, 1 mov rdi, 1 mov rsi, success mov rdx, success_len syscall jmp exit wrong: mov rax, 1 mov rdi, 1 mov rsi, fail mov rdx, fail_len syscall exit: mov rax, 60 xor rdi, rdi syscall . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#11-exemple-type-ctf-inspir%C3%A9-de-ton-mod%C3%A8le",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#11-exemple-type-ctf-inspiré-de-ton-modèle"
  },"40": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "12. Compilation",
    "content": "gcc -nostdlib -nostartfiles -fno-pic -no-pie file.s -o file . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#12-compilation",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#12-compilation"
  },"41": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "13. Points importants",
    "content": ". | Toujours réserver la stack avant d’écrire dessus | Utiliser lea pour obtenir une adresse | Utiliser .bss pour les buffers | Utiliser .data pour les constantes | rax contient le numéro de syscall et la valeur de retour | Respecter l’ordre des registres pour les syscalls | Nettoyer la stack avant de quitter une fonction si rbp est utilisé | . ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#13-points-importants",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html#13-points-importants"
  },"42": {
    "doc": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "title": "Final x86_64 Cheat Sheet (Linux 64-bit, Intel syntax) lazy ChatGPT generated",
    "content": " ",
    "url": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/cheat_sheet_assembly_intel_x86_64bits_nopic_nostartfiles_nopie_ChatGPT.html"
  },"43": {
    "doc": "Home",
    "title": "Bienvenue sur ma documentation personnelle !",
    "content": "Ici, je garde trace de tout ce que j’ai pu faire pendant mes études et mes projets personnels en informatique, plus précisément en Réseaux et Télécommunications. N’hésitez pas à faire un tour sur mon blog personnel. ",
    "url": "/#bienvenue-sur-ma-documentation-personnelle-",
    
    "relUrl": "/#bienvenue-sur-ma-documentation-personnelle-"
  },"44": {
    "doc": "Home",
    "title": "Organisation de la doc",
    "content": "Chaque ressource de cette doc est organisée par thème. Ex : Système (Linux, Windows Server), Réseau (théorie/protocoles, Cisco), Télécom (radio, numérique, modulation), etc… . Chaque thème possède ses sous-catégories et chaque sous-catégorie contient une page de documentation. La fonction recherche permet de naviguer de manière rapide sans passer par le menu à gauche. Bonne lecture ! . ",
    "url": "/#organisation-de-la-doc",
    
    "relUrl": "/#organisation-de-la-doc"
  },"45": {
    "doc": "Home",
    "title": "Home",
    "content": " ",
    "url": "/",
    
    "relUrl": "/"
  },"46": {
    "doc": "Cisco",
    "title": "Cisco",
    "content": " ",
    "url": "/DOCS/Reseau/Cisco/parent_cisco.html",
    
    "relUrl": "/DOCS/Reseau/Cisco/parent_cisco.html"
  },"47": {
    "doc": "Linux",
    "title": "Linux",
    "content": " ",
    "url": "/DOCS/Linux/parent_linux.html",
    
    "relUrl": "/DOCS/Linux/parent_linux.html"
  },"48": {
    "doc": "Low-Level-dev (linux)",
    "title": "Low-Level-dev (linux)",
    "content": " ",
    "url": "/DOCS/Linux/Low-Level-dev/parent_low-level-dev.html",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/parent_low-level-dev.html"
  },"49": {
    "doc": "Outils (linux)",
    "title": "Outils (linux)",
    "content": " ",
    "url": "/DOCS/Linux/Outils/parent_outils.html",
    
    "relUrl": "/DOCS/Linux/Outils/parent_outils.html"
  },"50": {
    "doc": "Réseau",
    "title": "Réseau",
    "content": " ",
    "url": "/DOCS/Reseau/parent_reseau.html",
    
    "relUrl": "/DOCS/Reseau/parent_reseau.html"
  },"51": {
    "doc": "Système (linux)",
    "title": "Système (linux)",
    "content": " ",
    "url": "/DOCS/Linux/Systeme/parent_system.html",
    
    "relUrl": "/DOCS/Linux/Systeme/parent_system.html"
  },"52": {
    "doc": "Syscalls in linux",
    "title": "Syscall",
    "content": "From [The Linux Programming Interface] . https://cs61.seas.harvard.edu/site/2021/Kernel/ . https://www.juliensobczak.com/inspect/2021/08/10/linux-system-calls-under-the-hood.html . [TCP IP Architecture Design - Sameer Seth] . Figure 1.10. System call implementation on Linux. ",
    "url": "/DOCS/Linux/Low-Level-dev/syscall.html#syscall",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/syscall.html#syscall"
  },"53": {
    "doc": "Syscalls in linux",
    "title": "Calling Conventions",
    "content": "https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md . | arch | syscall NR | return | arg0 | arg1 | arg2 | arg3 | arg4 | arg5 | . | arm | r7 | r0 | r0 | r1 | r2 | r3 | r4 | r5 | . | arm64 | x8 | x0 | x0 | x1 | x2 | x3 | x4 | x5 | . | x86 | eax | eax | ebx | ecx | edx | esi | edi | ebp | . | x86_64 | rax | rax | rdi | rsi | rdx | r10 | r8 | r9 | . syscall instruction . https://blog.packagecloud.io/the-definitive-guide-to-linux-system-calls/ . legacy system calls: interrupt based . 32/64 bit: . int $0x80 . Fast system calls . 64 bit: . | On 32bit systems use: sysenter and sysexit. | On 64bit systems use: syscall and sysret. | . A hardware interrupt is raised by a hardware device to notify the kernel that a particular event has occurred. A common example of this type of interrupt is an interrupt generated when a NIC receives a packet. A software interrupt is raised by executing a piece of code. On x86-64 systems, a software interrupt can be raised by executing the int instruction. ",
    "url": "/DOCS/Linux/Low-Level-dev/syscall.html#calling-conventions",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/syscall.html#calling-conventions"
  },"54": {
    "doc": "Syscalls in linux",
    "title": "ASM e.g",
    "content": "32bit ASM e.g . Source Link . No e.g . 64bit ASM e.g . Source Link . First, we need to find the system call number for exit. In this case we need to read the table found in arch/x86/syscalls/syscall_64.tbl: . 60 common exit sys_exit . The exit syscall is number 60. According to the interface described above, we just need to move 60 into the rax register and the first argument (the exit status) into rdi. int main(int argc, char *argv[]) { unsigned long syscall_nr = 60; long exit_status = 42; asm (\"movq %0, %%rax\\n\" \"movq %1, %%rdi\\n\" \"syscall\" : /* output parameters, we aren't outputting anything, no none */ /* (none) */ : /* input parameters mapped to %0 and %1, repsectively */ \"m\" (syscall_nr), \"m\" (exit_status) : /* registers that we are \"clobbering\", unneeded since we are calling exit */ \"rax\", \"rdi\"); } . ",
    "url": "/DOCS/Linux/Low-Level-dev/syscall.html#asm-eg",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/syscall.html#asm-eg"
  },"55": {
    "doc": "Syscalls in linux",
    "title": "Ref",
    "content": ". | http://blog.rchapman.org/posts/Linux_System_Call_Table_for_x86_64/ | https://man7.org/linux/man-pages/man2/syscall.2.html | https://man7.org/linux/man-pages/man2/syscalls.2.html | https://blog.packagecloud.io/the-definitive-guide-to-linux-system-calls/ | https://gitlab.com/x86-psABIs/x86-64-ABI | https://refspecs.linuxfoundation.org/elf/x86_64-abi-0.99.pdf | https://www.juliensobczak.com/inspect/2021/08/10/linux-system-calls-under-the-hood.html | https://sys.readthedocs.io/en/latest/doc/06_setting_up_arguements.html | https://sys.readthedocs.io/en/latest/doc/06_setting_up_arguements.html#walk-through-open-system-call-in-glibc | Writing C Software without the Standard Library FOR UN*X | . syscall-table.md linux-system-calls-under-the-hood.md . ",
    "url": "/DOCS/Linux/Low-Level-dev/syscall.html#ref",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/syscall.html#ref"
  },"56": {
    "doc": "Syscalls in linux",
    "title": "Syscalls in linux",
    "content": " ",
    "url": "/DOCS/Linux/Low-Level-dev/syscall.html",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/syscall.html"
  },"57": {
    "doc": "Utilitaires Systemd",
    "title": "Lecture des logs",
    "content": "ouvrir en continu de manière tail -f . journalctl -f . filtrage par service . journalctl -u &lt;service&gt; . accéder aux logs de l’utilisation de sudo (utiler pour checker l’accès à root) . journalctl -t sudo . filtrage par pid . journalctl _PID=1 . filtrage par programme (ex: sshd) . journalctl /usr/sbin/sshd . filtrage par niveau de log . journalctl -p err journalctl -p info . filtrage par date . journalctl --since \"2025-01-01 21:31:00\" journalctl --until \"2025-12-24 00:00:00\" journalctl --since yesterday journalctl --since \"10 minutes ago\" . depuis le démarrage du système . journalctl -b . ",
    "url": "/DOCS/Linux/Systeme/systemd.html#lecture-des-logs",
    
    "relUrl": "/DOCS/Linux/Systeme/systemd.html#lecture-des-logs"
  },"58": {
    "doc": "Utilitaires Systemd",
    "title": "Paramétrage des logs",
    "content": " ",
    "url": "/DOCS/Linux/Systeme/systemd.html#param%C3%A9trage-des-logs",
    
    "relUrl": "/DOCS/Linux/Systeme/systemd.html#paramétrage-des-logs"
  },"59": {
    "doc": "Utilitaires Systemd",
    "title": "/etc/systemd/journald.conf",
    "content": "taille maximum du journal de log . SystemMaxUse=500M . taille maximum d’un fichier de log . SystemMaxFileSize=100M . ne pas conserver les logs (rendre les logs volatiles) . [Journal] Storage=volatile . ",
    "url": "/DOCS/Linux/Systeme/systemd.html#etcsystemdjournaldconf",
    
    "relUrl": "/DOCS/Linux/Systeme/systemd.html#etcsystemdjournaldconf"
  },"60": {
    "doc": "Utilitaires Systemd",
    "title": "Utilitaires Systemd",
    "content": " ",
    "url": "/DOCS/Linux/Systeme/systemd.html",
    
    "relUrl": "/DOCS/Linux/Systeme/systemd.html"
  },"61": {
    "doc": "Gestions droits / utilisateurs",
    "title": "Création des utilisateurs",
    "content": "créer un user de manière intéractive . adduser &lt;username&gt; . créer un user . useradd &lt;username&gt; . créer un user avec /home/ . useradd -m &lt;username&gt; . créer un user avec home custom . useradd -b &lt;home path&gt; &lt;username&gt; . créer un user avec date d’expiration . useradd -e &lt;yyyy-mm-dd&gt; &lt;username&gt; . créer un user avec un shell lors de sa connexion . useradd -s &lt;chemin shell&gt; &lt;username&gt; . créer un user avec un UID définit . useradd -u &lt;UID&gt; &lt;username&gt; . créer un user avec un groupe principal custom . useradd -g &lt;GID ou GROUPE&gt; &lt;username&gt; . ",
    "url": "/DOCS/Linux/Systeme/utilisateurs.html#cr%C3%A9ation-des-utilisateurs",
    
    "relUrl": "/DOCS/Linux/Systeme/utilisateurs.html#création-des-utilisateurs"
  },"62": {
    "doc": "Gestions droits / utilisateurs",
    "title": "Gestion des utilisateurs",
    "content": "définir un mot de passe pour un user . passwd &lt;username&gt; . modifier un user (reprend les mêmes paramètres que pour useradd) . usermod &lt;username&gt; . ajouter un user dans un groupe . usermod -aG &lt;GID ou GROUPE&gt; &lt;username&gt; . ",
    "url": "/DOCS/Linux/Systeme/utilisateurs.html#gestion-des-utilisateurs",
    
    "relUrl": "/DOCS/Linux/Systeme/utilisateurs.html#gestion-des-utilisateurs"
  },"63": {
    "doc": "Gestions droits / utilisateurs",
    "title": "Suppression des utilisateurs",
    "content": "supprimer un user (et son /home/) . userdel -r &lt;username&gt; . ",
    "url": "/DOCS/Linux/Systeme/utilisateurs.html#suppression-des-utilisateurs",
    
    "relUrl": "/DOCS/Linux/Systeme/utilisateurs.html#suppression-des-utilisateurs"
  },"64": {
    "doc": "Gestions droits / utilisateurs",
    "title": "Gestion des groupes",
    "content": "créer un groupe . groupadd &lt;groupname&gt; . ajouter un user dans un groupe . usermod -aG &lt;GID ou GROUPE&gt; &lt;username&gt; . supprimer un user d’un groupe . gpasswd -d &lt;username&gt; &lt;GROUPE&gt; . ",
    "url": "/DOCS/Linux/Systeme/utilisateurs.html#gestion-des-groupes",
    
    "relUrl": "/DOCS/Linux/Systeme/utilisateurs.html#gestion-des-groupes"
  },"65": {
    "doc": "Gestions droits / utilisateurs",
    "title": "Listing user et groupes",
    "content": "lister les utilisateurs . cat /etc/passwd . lister les groupes . getent group . ",
    "url": "/DOCS/Linux/Systeme/utilisateurs.html#listing-user-et-groupes",
    
    "relUrl": "/DOCS/Linux/Systeme/utilisateurs.html#listing-user-et-groupes"
  },"66": {
    "doc": "Gestions droits / utilisateurs",
    "title": "Gérer les sudoers",
    "content": " ",
    "url": "/DOCS/Linux/Systeme/utilisateurs.html#g%C3%A9rer-les-sudoers",
    
    "relUrl": "/DOCS/Linux/Systeme/utilisateurs.html#gérer-les-sudoers"
  },"67": {
    "doc": "Gestions droits / utilisateurs",
    "title": "La commande sudo visudo (/etc/sudoers)",
    "content": "ajouter un user en administrateur “en dur” . &lt;username&gt; ALL=(ALL) ALL . ",
    "url": "/DOCS/Linux/Systeme/utilisateurs.html#la-commande-sudo-visudo-etcsudoers",
    
    "relUrl": "/DOCS/Linux/Systeme/utilisateurs.html#la-commande-sudo-visudo-etcsudoers"
  },"68": {
    "doc": "Gestions droits / utilisateurs",
    "title": "Le groupe sudo",
    "content": "ajouter un user dans le groupe sudo . usermod -aG sudo &lt;username&gt; . ",
    "url": "/DOCS/Linux/Systeme/utilisateurs.html#le-groupe-sudo",
    
    "relUrl": "/DOCS/Linux/Systeme/utilisateurs.html#le-groupe-sudo"
  },"69": {
    "doc": "Gestions droits / utilisateurs",
    "title": "Gérer les droits sur un dossier / fichier",
    "content": "donner uniquement les droits en lecture . chmod 444 &lt;chemin&gt; . donner uniquement les droits en écriture . chmod 222 &lt;chemin&gt; . donner uniquement les droits en exécution . chmod 111 &lt;chemin&gt; . donner tous les droits de manière récursif . chmod 777 &lt;chemin dossier&gt; -R . ",
    "url": "/DOCS/Linux/Systeme/utilisateurs.html#g%C3%A9rer-les-droits-sur-un-dossier--fichier",
    
    "relUrl": "/DOCS/Linux/Systeme/utilisateurs.html#gérer-les-droits-sur-un-dossier--fichier"
  },"70": {
    "doc": "Gestions droits / utilisateurs",
    "title": "Gérer l’ownership sur un dossier / fichier",
    "content": "donner l’ownership à un user et un groupe . chown username:groupname &lt;chemin&gt; . donner l’ownership de manière récursif . chown username:groupname &lt;chemin&gt; -R . ",
    "url": "/DOCS/Linux/Systeme/utilisateurs.html#g%C3%A9rer-lownership-sur-un-dossier--fichier",
    
    "relUrl": "/DOCS/Linux/Systeme/utilisateurs.html#gérer-lownership-sur-un-dossier--fichier"
  },"71": {
    "doc": "Gestions droits / utilisateurs",
    "title": "Gestions droits / utilisateurs",
    "content": " ",
    "url": "/DOCS/Linux/Systeme/utilisateurs.html",
    
    "relUrl": "/DOCS/Linux/Systeme/utilisateurs.html"
  },"72": {
    "doc": "Vim",
    "title": "Les déplacements",
    "content": "Monter . k . Descendre . j . Gauche . h . Droite . l . ",
    "url": "/DOCS/Linux/Outils/vim.html#les-d%C3%A9placements",
    
    "relUrl": "/DOCS/Linux/Outils/vim.html#les-déplacements"
  },"73": {
    "doc": "Vim",
    "title": "Les commandes (mode normal)",
    "content": "Les commandes sont “accumulables” on peut écrire par exemple d3w pour supprimer 3 mots de la ligne (delete 3 words) . ",
    "url": "/DOCS/Linux/Outils/vim.html#les-commandes-mode-normal",
    
    "relUrl": "/DOCS/Linux/Outils/vim.html#les-commandes-mode-normal"
  },"74": {
    "doc": "Vim",
    "title": "Naviguation",
    "content": "aller au buffer précédent (dossier parent, etc…) . :b# . aller au mot suivant . e . aller tout en haut du fichier . G . quitter sans sauvegarder . :q . quitter sans sauvegarder forcé . :q! . sauvegarder . :w . sauvegarder dans un nouveau fichier . :w fichier.txt . afficher quel fichier et à quelle ligne on se trouve . CTRL + c CTRL + g . aller à une ligne (ex: ligne 7) . :7 . rechercher un mot / phrase / expression . /arbre . exécuter à nouveau la recherche . n . exécuter à nouveau la recherche mais en arrière . N . aller à la parenthèse fermante/ouvrante correspondante . % . exécuter une commande externe (exemple: ls) . :!ls . ",
    "url": "/DOCS/Linux/Outils/vim.html#naviguation",
    
    "relUrl": "/DOCS/Linux/Outils/vim.html#naviguation"
  },"75": {
    "doc": "Vim",
    "title": "Editions",
    "content": "sauvegarder et quitter . :wq . effacer un caractère . x . effacer un mot . dw . effacer une ligne . dd . effacer à partir de la ligne jusqu’à la fin de la ligne . d$ . coller après un effacement (CTRL + x ; CTRL + v) . dd (ou dx ou dw etc...) p . annuler un changement . u . remplacer un caractère (ici lettre “a”) . ra . remplacer (aka changer) jusqu’à la fin du mot . ce (EDITING) arbre &lt;ECHAP&gt; . remplacer (aka changer) jusqu’à la fin de la ligne . c$ j'aime les fruits au sirop &lt;ECHAP&gt; . substituer 2 mots dans la ligne . :s/arbre/pommier . substituer tous les mots dans la ligne . :s/arbre/pommier/g . ajouter le contenu d’un fichier externe . :r fichier.txt . ajouter le résultat d’une commande externe (exemple: ls) . :r !ls . ajouter une ligne en dessous et passer en édition . o . ajouter une ligne au dessus et passer en édition . O . ",
    "url": "/DOCS/Linux/Outils/vim.html#editions",
    
    "relUrl": "/DOCS/Linux/Outils/vim.html#editions"
  },"76": {
    "doc": "Vim",
    "title": "Les commandes (mode visuel et normal)",
    "content": "passer en mode visuel . v . copier . y . coller . p . copier un mot . yw . copier une ligne . yd . copier une ligne à partir du curseur . y$ . ",
    "url": "/DOCS/Linux/Outils/vim.html#les-commandes-mode-visuel-et-normal",
    
    "relUrl": "/DOCS/Linux/Outils/vim.html#les-commandes-mode-visuel-et-normal"
  },"77": {
    "doc": "Vim",
    "title": "Vim",
    "content": " ",
    "url": "/DOCS/Linux/Outils/vim.html",
    
    "relUrl": "/DOCS/Linux/Outils/vim.html"
  },"78": {
    "doc": "x86_64 assembly cheat sheet CHATGPT",
    "title": "x86_64 Assembly Linux Cheat Sheet CHATGPT",
    "content": " ",
    "url": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#x86_64-assembly-linux-cheat-sheet-chatgpt",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#x86_64-assembly-linux-cheat-sheet-chatgpt"
  },"79": {
    "doc": "x86_64 assembly cheat sheet CHATGPT",
    "title": "1 Types de données mémoire (ptr)",
    "content": "| Syntaxe | Taille | Usage / Registres | . | byte ptr | 1 octet | AL, BL, CL… (ASCII, char) | . | word ptr | 2 octets | AX, BX… (short 16 bits) | . | dword ptr | 4 octets | EAX, EBX… (int 32 bits) | . | qword ptr | 8 octets | RAX, RBX… (long 64 bits / pointeur) | . | oword ptr | 16 octets | XMM registers | . | yword ptr | 32 octets | YMM registers (AVX) | . | zword ptr | 64 octets | ZMM registers (AVX-512) | . ⚠ Toujours préciser la taille lors de l’accès mémoire. Le registre seul ne suffit jamais pour [mem]. ",
    "url": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#1-types-de-donn%C3%A9es-m%C3%A9moire-ptr",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#1-types-de-données-mémoire-ptr"
  },"80": {
    "doc": "x86_64 assembly cheat sheet CHATGPT",
    "title": "2 Stack (rsp) et [rsp]",
    "content": "| Expression | Signification | . | rsp | Adresse actuelle du sommet de la stack | . | [rsp] | Valeur stockée à l’adresse rsp | . | [rsp+offset] | Valeur à l’adresse décalée | . Bonnes pratiques : . | Réserver de l’espace avant usage : sub rsp, N | Restaurer après usage : add rsp, N | Passer l’adresse (rsp) aux syscalls, jamais la valeur [rsp]. | attention à l’alignement de la stack sur 16 bytes ! | . ",
    "url": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#2-stack-rsp-et-rsp",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#2-stack-rsp-et-rsp"
  },"81": {
    "doc": "x86_64 assembly cheat sheet CHATGPT",
    "title": "3 Syscalls Linux x86_64",
    "content": "| Argument | Registre | . | 1 | rdi | . | 2 | rsi | . | 3 | rdx | . | 4 | r10 | . | 5 | r8 | . | 6 | r9 | . | retour | rax | . Exemples : . ; write(1, rsp, 2) mov rax, 1 mov rdi, 1 mov rsi, rsp mov rdx, 2 syscall ; exit(0) mov rax, 60 xor rdi, rdi syscall . ",
    "url": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#3-syscalls-linux-x86_64",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#3-syscalls-linux-x86_64"
  },"82": {
    "doc": "x86_64 assembly cheat sheet CHATGPT",
    "title": "4 Manipulation de la stack",
    "content": "sub rsp, 16 ; réserver 16 octets mov byte ptr [rsp], 0x41 ; 'A' mov byte ptr [rsp+1], 0x0A ; '\\n' mov rsi, rsp ; adresse de la stack pour write mov rdx, 2 syscall add rsp, 16 ; restaurer stack . | Pas besoin de buffer .data pour de petites chaînes temporaires | Écrire octet par octet ou qword entier selon le besoin | . ",
    "url": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#4-manipulation-de-la-stack",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#4-manipulation-de-la-stack"
  },"83": {
    "doc": "x86_64 assembly cheat sheet CHATGPT",
    "title": "5 Erreurs fréquentes et bonnes pratiques",
    "content": "| Erreur vue | Pourquoi c’est faux | Correction | . | mov byte ptr [rsp+1], 0x8 | 0x8 = backspace, pas retour ligne | 0x0A pour \\n | . | lea rsi, [rip] pour stack | [rip] = adresse code, pas buffer | mov rsi, rsp | . | mov rsi, [rsp] | [rsp] = valeur, pas adresse → write lit mauvaise zone | mov rsi, rsp | . | mov qword ptr [rsp], 0x41 puis mov qword ptr [rip+buff], rax | Écrit 8 octets, remplit buffer avec 0s | Utiliser byte ptr ou qword entier complet | . ",
    "url": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#5-erreurs-fr%C3%A9quentes-et-bonnes-pratiques",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#5-erreurs-fréquentes-et-bonnes-pratiques"
  },"84": {
    "doc": "x86_64 assembly cheat sheet CHATGPT",
    "title": "6 Logique générale stack / mémoire",
    "content": ". | Réserver → sub rsp, N | Écrire → mov byte/dword/qword ptr [rsp+offset], valeur | Passer adresse → mov rsi, rsp pour write / syscall | Syscall → mov rax, n, mov rdi,rsi…, syscall | Restaurer stack → add rsp, N | . ",
    "url": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#6-logique-g%C3%A9n%C3%A9rale-stack--m%C3%A9moire",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#6-logique-générale-stack--mémoire"
  },"85": {
    "doc": "x86_64 assembly cheat sheet CHATGPT",
    "title": "7 Exemple final correct",
    "content": ".intel_syntax noprefix .global _start .section .text _start: sub rsp, 16 mov byte ptr [rsp], 0x41 mov byte ptr [rsp+1], 0x0A mov rax, 1 mov rdi, 1 mov rsi, rsp mov rdx, 2 syscall add rsp, 16 mov rax, 60 xor rdi, rdi syscall . | Affiche “A\\n” | Stack restaurée | Pas de .data nécessaire | . ",
    "url": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#7-exemple-final-correct",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#7-exemple-final-correct"
  },"86": {
    "doc": "x86_64 assembly cheat sheet CHATGPT",
    "title": "8 Diagramme visuel – stack et valeurs",
    "content": "Stack (top -&gt; bottom, rsp pointé en haut) rsp -&gt; +0 : 0x41 ; 'A' +1 : 0x0A ; '\\n' +2 : ... ; reste réservé (16 octets au total) +3 : ..... +15: ... Instruction: mov rsi, rsp ; write prend l'adresse de la stack (buffer) mov rdx, 2 ; longueur = 2 octets Write() lit : [A][\\n] -&gt; affichage sur stdout . | rsp = adresse du sommet de la stack | [rsp] = valeur à cette adresse | On peut écrire octet par octet ou en qword entier | . ",
    "url": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#8-diagramme-visuel--stack-et-valeurs",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#8-diagramme-visuel--stack-et-valeurs"
  },"87": {
    "doc": "x86_64 assembly cheat sheet CHATGPT",
    "title": "Ressources utiles",
    "content": ". | System V Application Binary Interface AMD64 Architecture Processor Supplement | Syscall | Syscall Table | What are BYTE PTR, WORD PTR, DWORD PTR and QWORD PTR directives in x86 and x64 assembly? | x86 Architecture | . ",
    "url": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#ressources-utiles",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html#ressources-utiles"
  },"88": {
    "doc": "x86_64 assembly cheat sheet CHATGPT",
    "title": "x86_64 assembly cheat sheet CHATGPT",
    "content": " ",
    "url": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html",
    
    "relUrl": "/DOCS/Linux/Low-Level-dev/x_86_64_assembly_cheatsheet_CHATGPT.html"
  }
}
