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 suite

Guide 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 suite

Adresses 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 suite

Envoyer 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.

Lire la suite

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 suite

Errno 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.

Lire la suite