Programmation réseau via socket en C
Dans ce monde informatique ultra-connecté, il est crucial de savoir comment envoyer et recevoir des données à distance, grâce aux sockets. Dans cet article, nous verrons qu’une socket est essentiellement une “prise” numérique qu’on attache à une adresse locale ou distante afin d’établir une connexion. Nous explorerons aussi l’architecture et les appels systèmes qui nous permettront de construire non seulement un client, mais aussi un serveur en langage C.
Lire la suiteGuide CTF : Wonderland de TryHackMe
Wonderland est un défi de capture du drapeau (CTF, “capture the flag” en anglais), créé par NinjaJc01 et disponible gratuitement sur TryHackme. Dans ce guide CTF, nous allons tomber dans le terrier du pentesting et atterrir dans un étrange pays des merveilles, celui de la cybersécurité !
Lire la suiteAdresses IPv4, routage et masques de sous-réseau
Parmi les adresses IP des systèmes connectés à Internet, les adresses IPv4 sont actuellement les plus répandues. Comment peuvent-elles identifier de façon unique tous les objets connectés ? Comment facilitent-elles le routage des données d’un côté à l’autre de ce vaste réseau ? Et pourquoi sont-elles progressivement remplacées par les adresses IPv6 ? C’est ce que nous allons voir dans cet article.
Lire la suiteEnvoyer et intercepter un signal en C
À force d’être confrontés à des segfaults ou a des erreurs de bus, on se sera déjà familiarisé avec l’idée d’un signal informatique. On reçoit un SIGSEGV ou un SIGBUS qui met fin à notre programme sans préavis, sans explications et sans autre recours. Mais qu’est-ce qu’un signal véritablement ? Est-ce juste le bâton de police du système d’exploitation ? Et comment peut-on envoyer, bloquer ou même intercepter un signal depuis notre propre programme ? C’est ce que nous allons explorer dans cet article.
Threads, mutex et programmation concurrente en C
Par souci d’efficacité ou par nécessité, un programme peut être construit de façon concurrente et non séquentielle. Grâce à sa programmation concurrente et `a l’aide de ses processus fils ou de ses threads et de ses mutex, il pourra effectuer plusieurs tâches simultanément.
Lire la suiteErrno et la gestion d'erreur en C
Détecter les erreurs dans un programme ainsi que leur cause, c’est la base de tout développement informatique. Mais quand une fonction ou un appel système d’une bibliothèque externe échoue, comment peut-on comprendre ce qu’il s’est passé ? Ces fonctions renvoient généralement une valeur de -1 ou NULL, mais elles stockent aussi la raison de leur échec dans errno.
Pipe : une méthode de communication inter-processus
Par défaut, il est difficile de faire communiquer deux processus entre eux. Comme on l’a vu dans un précédent article, même les processus pères et fils ne partagent pas le même espace mémoire. Il nous faut donc des moyens d’établir une communication inter-processus. Et l’un de ces mécanismes de communication, c’est le pipe.
Lire la suiteManipuler un fichier à l'aide de son descripteur en C
Les appels systèmes disponibles en C pour créer ou ouvrir un fichier, le lire, y écrire et le supprimer font toutes usage d’un descripteur de fichier. Avant de pouvoir manipuler des fichiers, nous devons donc découvrir comment le système d’exploitation gère ses références à ces fichiers.
Lire la suiteCréer et tuer des processus fils en C
Que ce soit pour exécuter un autre programme depuis le notre ou pour exécuter une partie de notre programme en parallèle, il est souvent très utile de créer des processus fils. On peut ensuite patiemment attendre qu’ils finissent leur tâches, ou même, si l’on se sent particulièrement meurtrier, les tuer prématurément !
Lire la suitePourquoi je n'écris plus d'articles sur les projets de 42
Suite à un échange avec l’équipe pédagogique de l’école 42, j’ai décidé de retirer tous les articles en lien direct avec les projets de 42.
Lire la suiteCatégories
Tags
- Binaire
- Bit
- Bitshifting
- Communication Inter-Processus
- Commutateurs Réseau
- Console
- CTF
- Data Race
- Deadlock
- Descripteur De Fichier
- Développeur
- Entiers
- Errno
- Escalade Des Privilèges
- Fichier
- Fork
- Free
- Gestion D'erreur
- Heap
- IPv4
- Kill
- Linux
- Malloc
- Masque De Sous-Réseau
- Mutex
- Mémoire
- Opérateurs Bitwise
- Outils De Programmation
- Pentesting
- Pipe
- Processus
- Programmation Concurrente
- Protocoles
- Routage
- Routeur
- Shell
- Signal
- Socket
- Stack
- Statut De Fin
- Système D'exploitation
- TCP/IP
- Terminal
- Thread
- Tryhackme
- Variables
- École 42
- Écriture