<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>sysc4ll&#39;s website</title>
    <link>/</link>
    <description>Recent content on sysc4ll&#39;s website</description>
    <generator>Hugo 0.125.2</generator>
    <language>fr</language>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>about</title>
      <link>/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/about/</guid>
      <description> Autodidacte, passionné d&#39;informatique et plus particulièrement de sécurité, de programmation et d&#39;administration sur les systèmes d&#39;exploitation de type GNU/Linux ou BSD. Welcome ! :)&#xA;Étant à la recherche d&#39;un emploi, je vous laisse mon email : hello@ajulien.fr .&#xA;Je n&#39;utilise aucun cookie , ni même de referer . Les articles contenus sur ce site sont sous la license : Creative Commons Attribution-ShareAlike 4.0 International License . </description>
    </item>
    <item>
      <title>Allouer une string avec des spécificateurs de format</title>
      <link>/asprintf/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/asprintf/</guid>
      <description>Allouer une string avec des spécificateurs de format Je met ici pour mémo une façon de créer une fonction du genre :&#xA;char *s = strdup(&amp;#34;Hello... Je suis %s.&amp;#34;, name); Voici la façon d&#39;y parvenir :&#xA;1 2 3 4 5 6 7 8 9 10 int size; char *buffer; size = snprintf(NULL, 0, &amp;#34;Hello... Je suis %s.&amp;#34;, &amp;#34;julien&amp;#34;); buffer = malloc((size + 1) * sizeof(*buffer)); sprintf(buffer, &amp;#34;Hello... Je suis %s.</description>
    </item>
    <item>
      <title>Benjamin Bayart : Qu&#39;est ce qu&#39;internet ?</title>
      <link>/bookmarks/benjamin-bayart/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/bookmarks/benjamin-bayart/</guid>
      <description>Benjamin Bayart nous explique dans des conférences ce qu&#39;est internet :&#xA;Benjamin Bayart : Qu&amp;#39;est ce qu&amp;#39;internet - Partie 1 : Le réseau Benjamin Bayart : Qu&amp;#39;est ce qu&amp;#39;internet - Partie 2 : Les applications Benjamin Bayart : Qu&amp;#39;est ce qu&amp;#39;internet - Partie 3 : Les enjeux politiques et sociétaux </description>
    </item>
    <item>
      <title>bit fields en C</title>
      <link>/c-bit-field/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/c-bit-field/</guid>
      <description>Éxemple de structure de bit fields 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdint.h&amp;gt; #include &amp;lt;err.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; /* * * 7 6 5 4 3 2 1 0 * +---|---+ +---|---|---+ +---|---|---+ * | MOD | | REG | | R/M | * +---|---+ +---|---|---+ +---|---|---+ * */ /* * $ .</description>
    </item>
    <item>
      <title>bitwise operation en C</title>
      <link>/c-bitwise-operation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/c-bitwise-operation/</guid>
      <description>Éxemple d&#39;opération bit à bit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 #include &amp;lt;stdio.</description>
    </item>
    <item>
      <title>Calculer la taille d&#39;une chaîne de cracatères sans utiliser string.h</title>
      <link>/my-strlen/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/my-strlen/</guid>
      <description>my-strlen 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include &amp;lt;stdio.h&amp;gt; /* * avec indice */ size_t my_strlen_indice(char *s) { int i; for (i = 0; s[i] != &amp;#39;\0&amp;#39;; i++); return i; } /* * avec pointeur */ size_t my_strlen_ptr(char *s) { char *ptr = s; int i; for (i = 0; *ptr !</description>
    </item>
    <item>
      <title>Création d&#39;un serveur web sur FreeBSD avec des jails</title>
      <link>/freebsd-webserver/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/freebsd-webserver/</guid>
      <description>création d&#39;un serveur web sur FreeBSD en utilisant des jails Dans cet article je vais détailler comment créer un serveur web comprenant nginx, php et mariadb. Pour plus de sécurité je vais utiliser des prisons, une pour emprisonner php et nginx, une autre pour mariadb.&#xA;création du réseau pour les jails Pour plus de sécurité, je crée un réseau spécial pour les jails avec 2 IPv4 : 192.168.1.101 pour webjail et 192.</description>
    </item>
    <item>
      <title>création et utilisation des librairies en langage de programmation C</title>
      <link>/c-linux-libraries/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/c-linux-libraries/</guid>
      <description>Création et utilisation des librairies en langage de programmation C Qu&#39;est ce qu&#39;une librairie ? En langage de programmation C, une librairie est un fichier contenant du code compilé pouvant être utilisé à souhait par un programme. Ce qui permet de faciliter la tache de programmation et de rendre le programme modulaire.&#xA;Il existe trois types de librairies en langage C :&#xA;les librairies statiques les librairies partagées les librairies chargées dynamiquement Les librairies statiques Ce sont des librairies installées dans un programme avant que ce programme puisse être exécuté.</description>
    </item>
    <item>
      <title>Format String Bug sur GNU/Linux</title>
      <link>/linux-format-string-bug/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/linux-format-string-bug/</guid>
      <description>Format String Bug sur GNU/Linux Introduction Les format string bugs sont des vulnérabilités qui peuvent se produire lorsque le programmeur passe à l&#39;une des fonctions de la famille de printf une chaîne de caractères / une string fournie par l&#39;utilisateur.&#xA;L&#39;utilisateur peut alors fournir une chaîne de caractères contenant des spécificateurs de format / des paramètres de formatage.&#xA;Par exemple, si des &amp;quot;%x&amp;quot; se trouvent dans cette chaîne de caractères et qu&#39;aucun argument à printf n&#39;est donné, alors la fonction printf prendra comme argument ce qui se trouve empilé sur la stack.</description>
    </item>
    <item>
      <title>générer mes certificats ssl sur linux avec certbot et ovh</title>
      <link>/generate-ssl-certbot-ovh/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/generate-ssl-certbot-ovh/</guid>
      <description>generate ssl Pour générer mes certificats SSL je vais utiliser l&amp;#39;API d&amp;#39;OVH :&#xA;sudo apt-get install certbot python3-certbot-dns-ovh Pour obtenir les identifiants OVH, je me rends sur https://eu.api.ovh.com/createToken/ .&#xA;Je prépare le fichier d&#39;identification OVH /root/.certbot/ovh-freec0ding.ini :&#xA;sudo mkdir -p /root/.certbot 1 2 3 export OVH_APPLICATION_KEY=&amp;#39;XXXXXXXXXXXXXXXX&amp;#39; export OVH_APPLICATION_SECRET=&amp;#39;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&amp;#39; export OVH_CONSUMER_KEY=&amp;#39;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&amp;#39; 1 2 3 4 5 6 7 sudo sh -c &amp;#34;cat &amp;gt; /root/.certbot/ovh-freec0ding.ini &amp;lt;&amp;lt; EOF # OVH API credentials used by certbot dns_ovh_endpoint = ovh-eu dns_ovh_application_key = ${OVH_APPLICATION_KEY} dns_ovh_application_secret = ${OVH_APPLICATION_SECRET} dns_ovh_consumer_key = ${OVH_CONSUMER_KEY} EOF&amp;#34; Je définis les droits du fichier /root/.</description>
    </item>
    <item>
      <title>Ghidra</title>
      <link>/bookmarks/ghidra/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/bookmarks/ghidra/</guid>
      <description>&amp;quot;A software reverse engineering (SRE) suite of tools developed by NSA&#39;s Research Directorate in support of the Cybersecurity mission&amp;quot; : https://ghidra-sre.org </description>
    </item>
    <item>
      <title>gitlab et gitlab-pages avec nginx et docker sur debian</title>
      <link>/gitlab-gitlab-pages-nginx-docker-debian/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/gitlab-gitlab-pages-nginx-docker-debian/</guid>
      <description>intro Dans cet article, je vais détailler comment installer gitlab et gitlab-pages avec nginx en utilisant docker sur debian ssh Je définis le port SSH du serveur sur 2222 :&#xA;1 2 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig sudo sed -i &amp;#39;s/^#\?Port 22/Port 2222/&amp;#39; /etc/ssh/sshd_config Pour appliquer cette configuration, je reboot :&#xA;sudo reboot Pour la suite, je me reconnecte au ssh du serveur freec0ding.dev sur le port 2222.&#xA;docker Installation de docker sur debian :</description>
    </item>
    <item>
      <title>godbolt</title>
      <link>/bookmarks/godbolt/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/bookmarks/godbolt/</guid>
      <description>&amp;quot;Compiler Explorer is an interactive compiler. The left-hand pane shows editable C, C++, Rust, Go, D, Haskell, Swift, Pascal (and some more!) code. The right, the assembly output of having compiled the code with a given compiler and settings. Multiple compilers are supported, and the UI layout is configurable (thanks to GoldenLayout). There is also an ispc compiler ? for a C variant with extensions for SPMD.&amp;quot; : https://godbolt.org </description>
    </item>
    <item>
      <title>Hijack d&#39;une fonction avec LD_PRELOAD sur GNU/Linux</title>
      <link>/linux-hijack-with-ld-preload/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/linux-hijack-with-ld-preload/</guid>
      <description>Hijack d&#39;une fonction avec LD_PRELOAD sur GNU/Linux Pour mieux comprendre cet article, je vous recommande de lire avant celui-ci : Création et utilisation des librairies en langage de programmation C Introduction Il existe plusieurs façons de produire un exécutable, l&#39;une d&#39;entre elle consiste à utiliser les librairies partagées.&#xA;Donc, à utiliser les fichiers &amp;quot;.so&amp;quot; sur GNU/Linux.&#xA;Pour connaître les librairies partagées dont dépend un exécutable, il existe l&#39;outil ldd. Exemple :</description>
    </item>
    <item>
      <title>Injection de code avec ptrace sur GNU/Linux</title>
      <link>/linux-injecting-code-with-ptrace/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/linux-injecting-code-with-ptrace/</guid>
      <description>Comment injecter du code avec ptrace sur GNU/Linux Nous allons voir dans cet article comment injecter du code dans un processus en exécution avec l&#39;outil ptrace sur GNU/Linux.&#xA;Qu&#39;est-ce que ptrace L&#39;outil ptrace pour l&#39;abréviation de process trace permet à un processus de déboguer ou d&#39;examiner et de modifier l&#39;exécution d&#39;un autre processus.&#xA;Il permet entre autre, de stopper l&#39;exécution de ce processus cible, de lire et de modifier les valeurs de ses registres et de sa mémoire.</description>
    </item>
    <item>
      <title>installer dpaste avec nginx et docker sur linux</title>
      <link>/install-dpaste-nginx-docker/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/install-dpaste-nginx-docker/</guid>
      <description>intro Dans cet article, je vais détailler comment installer dpaste avec nginx en utilisant docker sur linux.&#xA;postgresql Pour installer la base de données, voir : comment installer mysql et postgresql avec docker sur linux.&#xA;Pour dpaste je vais utiliser la base de données PostgreSQL : Je crée la base de données pour dpaste :&#xA;sudo docker exec -it postgresql-container psql -U postgres 1 2 CREATE USER dpaste WITH ENCRYPTED PASSWORD &amp;#39;example-password&amp;#39;; CREATE DATABASE dpastedb OWNER dpaste; dpaste Le fichier docker-compose pour dpaste : dpaste-docker-compose.</description>
    </item>
    <item>
      <title>installer inspircd et anope avec docker sur linux</title>
      <link>/install-inspircd-anope-docker/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/install-inspircd-anope-docker/</guid>
      <description>intro Je vais détailler ici comment installer inspircd et anope avec docker sur linux.&#xA;ssl voir : comment générer mes certificats ssl sur linux avec certbot et ovh.&#xA;anope database Pour installer la base de données, voir : comment installer mysql et postgresql avec docker sur linux.&#xA;Je crée la base de données pour anope :&#xA;sudo docker exec -it mysql-container bash mysql -u root -p 1 2 3 4 CREATE DATABASE IF NOT EXISTS anopedb; CREATE USER &amp;#39;anope&amp;#39;@&amp;#39;%&amp;#39; IDENTIFIED BY &amp;#39;example-password&amp;#39;; GRANT ALL PRIVILEGES ON anopedb.</description>
    </item>
    <item>
      <title>installer matrix / synapse avec docker sur linux</title>
      <link>/install-matrix-synapse-docker/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/install-matrix-synapse-docker/</guid>
      <description>intro Ici, je vais détailler l&#39;installation de synapse , le serveur matrix sur linux.&#xA;database Pour installer la base de données, voir : comment installer mysql et postgresql avec docker sur linux.&#xA;Je crée la base de données pour synapse : Set up database :&#xA;sudo docker exec -it postgresql-container bash su - postgres 1 2 createuser --pwprompt synapse_user createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse matrix src : https://hub.docker.com/r/matrixdotorg/synapse :</description>
    </item>
    <item>
      <title>installer mysql et postgresql avec docker sur linux</title>
      <link>/install-mysql-postgresql-docker/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/install-mysql-postgresql-docker/</guid>
      <description>docker-compose Mon fichier sql-docker-compose.yml :&#xA;1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 volumes: mysql_conf: name: mysql-conf driver: local driver_opts: type: none o: bind device: /srv/sql/mysql/conf mysql_data: name: mysql-data driver: local driver_opts: type: none o: bind device: /srv/sql/mysql/data postgresql_data: name: postgresql-data driver: local driver_opts: type: none o: bind device: /srv/sql/postgresql/data networks: sql_network: name: sql-network services: mysql: image: mysql:latest container_name: mysql-container restart: always volumes: - mysql_conf:/etc/mysql/conf.</description>
    </item>
    <item>
      <title>installer nginx avec docker sur linux</title>
      <link>/install-nginx-docker/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/install-nginx-docker/</guid>
      <description>generate ssl voir : comment générer mes certificats ssl sur linux avec certbot et ovh.&#xA;web container Je crée les dossiers pour le container web :&#xA;sudo mkdir -p /srv/web/nginx/conf /srv/web/nginx/log /srv/web/www-data Le fichier docker-compose pour le container web : web-docker-compose.yml :&#xA;1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 volumes: nginx_conf: name: nginx-conf driver: local driver_opts: type: none o: bind device: /srv/web/nginx/conf nginx_log: name: nginx-log driver: local driver_opts: type: none o: bind device: /srv/web/nginx/log www_data: name: www-data driver: local driver_opts: type: none o: bind device: /srv/web/www-data www_ssl: name: www-ssl driver: local driver_opts: type: none o: bind device: /etc/letsencrypt networks: web_network: name: web-network dpaste_network: name: dpaste-network external: true matrix_network: name: matrix-network external: true gitlab_network: name: gitlab-network external: true services: nginx: image: nginx:latest container_name: nginx-container restart: always volumes: - nginx_conf:/etc/nginx - nginx_log:/var/log/nginx - www_data:/usr/share/nginx/html - www_ssl:/etc/letsencrypt networks: - web_network - dpaste_network - matrix_network - gitlab_network ports: - &amp;#39;80:80&amp;#39; - &amp;#39;443:443&amp;#39; Je crée le container web :</description>
    </item>
    <item>
      <title>irc-socket-buffering-parsing</title>
      <link>/irc-socket-buffering-parsing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/irc-socket-buffering-parsing/</guid>
      <description>irc-socket-buffering-parsing Un bot IRC tout simple.&#xA;Le code se compose de la gestion des sockets Windows &amp;amp;&amp;amp; UNIX avec l&#39;utilisation de la fonction select() pour ne pas rester bloqué sur les fonctions recv() : socket.c D&#39;un parseur de lignes IRC : parser.c Et d&#39;une certaine technique de buffering (buffer circulaire) : set_irc_buffer() Ici : https://gitlab.com/sysc4ll/irc-socket-buffering-parsing/-/blob/main/main.c#L103 se trouve la partie où nous écoutons les commandes, dans l&#39;exemple en commentaire : On regarde si la commande &amp;quot;!</description>
    </item>
    <item>
      <title>le format Portable Executable sur windows</title>
      <link>/windows-format-pe/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/windows-format-pe/</guid>
      <description>le format Portable Executable sur windows Le format PE pour Portable Executable est le format utilisé sur Micorsoft Windows pour organiser les fichiers exécutables ainsi que les fichiers objets.&#xA;Donc, les fichiers .exe ou .dll pour ne citer qu&#39;eux sont créés selon ce format de fichier.&#xA;Introduction Nous allons voir comment analyser ces types de fichiers pour obtenir toutes les informations utiles qui nous sont disponibles.&#xA;Voici un schéma représentant la structure d&#39;un fichier au format PE :</description>
    </item>
    <item>
      <title>lea-linux</title>
      <link>/bookmarks/lea-linux/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/bookmarks/lea-linux/</guid>
      <description>&amp;quot;Léa-Linux est une association loi de 1901 francophone et bénévole d&#39;entraide collaborative autour des logiciels libres et pour le système d&#39;exploitation GNU/Linux.&amp;quot; : https://lea-linux.org/ </description>
    </item>
    <item>
      <title>Les cingles de l&#39;informatique</title>
      <link>/bookmarks/les-cingles-de-l-informatique/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/bookmarks/les-cingles-de-l-informatique/</guid>
      <description>Ce documentaire raconte le développement de l&#39;ordinateur personnel aux États-Unis depuis la Seconde Guerre mondiale jusqu&#39;en 1995 :&#xA;Les cingles de l&amp;#39;informatique - 1ere Partie - L&amp;#39;amateurisme des debuts Les cingles de l&amp;#39;informatique - 2eme Partie - L&amp;#39;entree en scene d&amp;#39;IBM Les cingles de l&amp;#39;informatique - 3eme Partie - L&amp;#39;informatique pour tous </description>
    </item>
    <item>
      <title>Les sockets en C</title>
      <link>/c-sockets/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/c-sockets/</guid>
      <description>Utilisation des sockets en langage C Dans cet article, nous allons voir comment utiliser les sockets en langage C.&#xA;Qu&#39;est ce qu&#39;une socket ? Une socket, c&#39;est un endpoint, soit un point de terminaison permettant la communication entre deux processus.&#xA;Une socket, c&#39;est donc un point de terminaison permettant d&#39;envoyer ou de recevoir des données entre un client et un serveur.&#xA;Le serveur étant le poste informatique qui fournit le service, comme par exemple le service http qui se trouve par convention sur le port 80.</description>
    </item>
    <item>
      <title>Les Stack Buffer Overflow sur Linux</title>
      <link>/linux-stack-buffer-overflow/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/linux-stack-buffer-overflow/</guid>
      <description>Exploitation d&#39;un Stack buffer overflow sur Linux Je vais expliquer dans cet article comment exploiter un stack buffer overflow avec shellcode sur Linux.&#xA;Introduction ou petit rappel Un buffer overflow comme son nom l&#39;indique est un débordement de buffer. En programmation C un buffer est un tableau de char, il peut être déclaré de deux façons :&#xA;char buffer[256]; char *buffer = malloc(256); Ces deux variables buffer sont des tableaux à 256 cases donc des buffers pouvant contenir 256 caractères au maximum.</description>
    </item>
    <item>
      <title>Les systèmes décimal, octal, hexadécimal, et binaire</title>
      <link>/les-bases/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/les-bases/</guid>
      <description>Les systèmes décimal, octal, hexadécimal, et binaire Dans cet article, nous allons voir les systèmes de numérotations décimal, octal, hexadécimal et binaire.&#xA;Nous verrons aussi comment convertir.&#xA;Les bases en arithmétique On appel &amp;quot;base&amp;quot; le nombre servant à définir un système de numérotation.&#xA;Donc, pour le système décimal, c&#39;est la base dix, alors que pour le système octal c&#39;est la base huit, base seize pour le système hexadécimal et base deux pour le système binaire.</description>
    </item>
    <item>
      <title>Nom de code Linux</title>
      <link>/bookmarks/nom-de-code-linux/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/bookmarks/nom-de-code-linux/</guid>
      <description>Film documentaire de Hannu Puttonen datant de 2002 qui retrace l&#39;histoire des mouvements GNU, Linux, open source et des logiciels libres et dans lequel plusieurs personnalités de l&#39;informatique sont interviewées, comme Linus Torvalds, Alan Cox, Richard Stallman, Theodore Ts&#39;o ou Eric S. Raymond : Nom de code Linux </description>
    </item>
    <item>
      <title>off-by-one dans la stack sur Linux</title>
      <link>/linux-stack-based-off-by-one/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/linux-stack-based-off-by-one/</guid>
      <description>off-by-one dans la stack sur GNU/Linux Note : Ce qui suit a été réalisé sur une Debian GNU/Linux 3.1 (Sarge) i386.&#xA;Introduction Pour cet article nous allons utiliser ce code source vulnérable (vuln.c) :&#xA;1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include &amp;lt;stdio.</description>
    </item>
    <item>
      <title>onlinegdb</title>
      <link>/bookmarks/onlinegdb/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/bookmarks/onlinegdb/</guid>
      <description>&amp;quot;Welcome to GDB Online. GDB online is an online compiler and debugger tool for C, C++, Python, PHP, Ruby, C#, OCaml, VB, Perl, Swift, Prolog, Javascript, Pascal, HTML, CSS, JS Code, Compile, Run and Debug online from anywhere in world.&amp;quot; : https://www.onlinegdb.com/ </description>
    </item>
    <item>
      <title>pass: the standard unix password manager</title>
      <link>/passwordstore/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/passwordstore/</guid>
      <description>pass : the standard unix password manager pass utilise gpg avec GNU Privacy Guard pour stocker de façon chiffré les passwords.&#xA;Générer les clés gpg Je génère les clés gpg avec la commande suivante:&#xA;gpg --full-generate-key Exemple:&#xA;1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 sysc4ll@l4ptop ~ $ gpg --full-generate-key gpg (GnuPG) 2.</description>
    </item>
    <item>
      <title>pir@tage</title>
      <link>/bookmarks/pir@tage/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/bookmarks/pir@tage/</guid>
      <description>&amp;quot;Le documentaire Pirat@ge retrace l&#39;histoire d&#39;Internet gràce aux témoignages de ceux qui l&#39;ont construit, les hackers. Il se place au coeur des préoccupations de cette génération Y, dont il analyse les modes de communication en réseau, de consommation de biens culturels et de leur partage.&amp;quot; : pir@tage </description>
    </item>
    <item>
      <title>pwntools</title>
      <link>/bookmarks/pwntools/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/bookmarks/pwntools/</guid>
      <description>&amp;quot;pwntools is a CTF framework and exploit development library. Written in Python, it is designed for rapid prototyping and development, and intended to make exploit writing as simple as possible.&amp;quot; : https://docs.pwntools.com </description>
    </item>
    <item>
      <title>Race Condition sur GNU/Linux</title>
      <link>/linux-race-condition/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/linux-race-condition/</guid>
      <description>Race Condition sur GNU/Linux Introduction Une Race Condition peut se produire lorsque plusieurs processus accèdent et manipulent simultanément les même données. Cette vulnérabilité repose donc sur le fonctionnement multitâche du système d&#39;exploitation.&#xA;Si un exécutable appartenant à l&#39;utilisateur root avec le bit set-user-ID, SETUID ou SUID activé et, si cet exécutable présente une vulnérabilité de type Race Condition, alors un attaquant pourrais exécuter un processus parallèle pour réaliser une &amp;quot;race&amp;quot; contre cet exécutable vulnérable dans le but de modifier son comportement.</description>
    </item>
    <item>
      <title>read binary file en C</title>
      <link>/c-read-binary-file/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/c-read-binary-file/</guid>
      <description>Éxemple de lecture d&#39;un fichier binaire 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 #include &amp;lt;stdio.</description>
    </item>
    <item>
      <title>read stdin en C</title>
      <link>/c-read-stdin/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/c-read-stdin/</guid>
      <description>Éxemple de lecture du flux stdin en C 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdint.h&amp;gt; #include &amp;lt;err.h&amp;gt; #include &amp;lt;errno.h&amp;gt; #include &amp;lt;string.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; int main() { const size_t CHUNK_SIZE = 64; size_t size = CHUNK_SIZE, read = 0, ret = 0; uint8_t *bytes = NULL; if ((freopen(NULL, &amp;#34;rb&amp;#34;, stdin)) == NULL) errx(EXIT_FAILURE, &amp;#34;freopen(stdin) : %s&amp;#34;, strerror(errno)); if ((bytes = malloc(sizeof(uint8_t) * size)) == NULL) errx(EXIT_FAILURE, &amp;#34;malloc(sizeof(uint8_t) * %lu) : %s&amp;#34;, size, strerror(errno)); while ((ret = fread(&amp;amp;bytes[read], sizeof(uint8_t), CHUNK_SIZE, stdin)) !</description>
    </item>
    <item>
      <title>Return-Oriented Programmaming (ROP) sur GNU/Linux</title>
      <link>/linux-return-oriented-programming/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/linux-return-oriented-programming/</guid>
      <description>Exploitation d&#39;un Return-Oriented Programmaming sur Linux Introduction Le ROP est une technique d&#39;exploitation sans injection de code.&#xA;Les exemples de cet article ont été réalisés sur : Debian GNU/Linux 10 (buster) en i686&#xA;Concept d&#39;un ROP Le concept d&#39;un ROP : il s&#39;agit d&#39;utiliser des petites séquences d&#39;instructions déjà disponibles dans le binaire ou dans les librairies qui lui sont linkées. Chaque séquence d&#39;instructions doit se terminer par l&#39;instruction &amp;quot;ret&amp;quot; (0xc3) afin de pouvoir exécuter l&#39;intégralité de ces séquences.</description>
    </item>
    <item>
      <title>search</title>
      <link>/search/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/search/</guid>
      <description>for use this search feature and for best experience, you have to enable JavaScript :)</description>
    </item>
    <item>
      <title>Shellcode x86 sur Windows</title>
      <link>/windows-shellcodes-x86/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/windows-shellcodes-x86/</guid>
      <description>Écriture de shellcode x86 sur Windows Dans cet article, nous allons voir comment écrire un shellcode x86 sur Windows.&#xA;Introduction Un shellcode est un code arbitraire. Il est injecté dans la mémoire comme par exemple dans le cas d&#39;un buffer overflow. Ils sont appelés shellcodes car ce type de code est souvent utilisé pour obtenir un shell ou une invite de commande dans le but de prendre le contrôle du pc vulnérable.</description>
    </item>
    <item>
      <title>Shellcodes x86 et x86_64 sur GNU/Linux</title>
      <link>/linux-shellcodes-x86-x86_64/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/linux-shellcodes-x86-x86_64/</guid>
      <description>Les shellcodes x86 et x86_64 sur GNU/Linux Définition Les shellcodes sont utilisés comme code arbitraire ou malveillant que l&#39;on injecte dans la mémoire d&#39;un programme vulnérable.&#xA;Un shellcode se compose d&#39;une chaîne de caractères sous forme hexadecimale. Cette &amp;quot;string&amp;quot; contient en réalité une suite d&#39;instructions assembleur.&#xA;Ces instructions permettent le plus souvent de générer un shell ou une invite de commande. Mais il est possible de faire exécuter ce que l&#39;on veut.</description>
    </item>
    <item>
      <title>taxonomies</title>
      <link>/taxonomies/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/taxonomies/</guid>
      <description> </description>
    </item>
    <item>
      <title>TCP/IP raw sockets en C sur GNU/Linux</title>
      <link>/c-linux-tcp-raw-sockets/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/c-linux-tcp-raw-sockets/</guid>
      <description>Les raw sockets sur GNU/Linux pour les protocoles TCP/IP en C Qu&#39;est ce qu&#39;une &amp;quot;socket&amp;quot; ? Une socket est un endpoint, soit un point de terminaison permettant la communication entre deux processus.&#xA;Sur un réseau, une socket, c&#39;est donc un endpoint pour envoyer ou recevoir des données permettant ainsi des interactions entre le client et le serveur.&#xA;Le serveur étant le poste informatique qui fournit le service, comme par exemple le service http qui se trouve par convention sur le port 80, et le client étant le poste qui va consommer ou utiliser le service.</description>
    </item>
    <item>
      <title>timing attack</title>
      <link>/timing-attack/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/timing-attack/</guid>
      <description>Article sur l&#39;exploitation d&#39;une timing attack Une timing attack est une attaque dans laquelle un attaquant tente de compromettre un système en analysant le temps mis pour exécuter certaines opérations.&#xA;Chaque opération dans un ordinateur prend du temps, mais certaines opérations peuvent prendre plus de temps que d&#39;autres. C&#39;est sur cette étude que repose cette attaque.&#xA;Prenons en exemple un petit morceau de code en langage C vulnérable à ce type d&#39;attaque :</description>
    </item>
    <item>
      <title>Transformer une chaîne de caractères contenant des bytes en un tableau de bytes</title>
      <link>/str2hex/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/str2hex/</guid>
      <description>Comment transformer une chaîne de caractères contenant des bytes en un tableau de bytes Voici un code en langage C servant à convertir une chaîne de caractères représentant des bytes en un array de ces bytes :&#xA;1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 unsigned char * str2hex(char *str) { char *src = str; size_t length = strlen(str); unsigned char *buf; unsigned char *dst; unsigned int value; for(size_t i = 0; i &amp;lt; length; i++) { if(!</description>
    </item>
  </channel>
</rss>
