From 8c53d9395b208a51bf7e27fd3e96aaec1f55d832 Mon Sep 17 00:00:00 2001 From: tth Date: Mon, 16 Nov 2020 19:45:21 +0100 Subject: [PATCH] more bla --- chap/DNS.tex | 36 ++++++++++++++++++++++++---- chap/Fedora.tex | 4 ++-- chap/debug.tex | 63 ++++++++++++++++++++++++++++++++++++++++++------- chap/gif89a.tex | 15 ++++++++---- chap/shell.tex | 9 ++++++- 5 files changed, 107 insertions(+), 20 deletions(-) diff --git a/chap/DNS.tex b/chap/DNS.tex index dc4462e..82f093c 100644 --- a/chap/DNS.tex +++ b/chap/DNS.tex @@ -1,5 +1,17 @@ \chapter{Domain Name Service} \label{chap:DNS} +\index{DNS} + +% ------------------------------------------------------------ + +Le DNS est (pour simplifier) l'annuaire de l'Internet. +À la base, c''est lui +qui va permettre de connaitre l'adresse d'une machine ou d'un +service à partir de son nom. Un énorme progrès comparé à la +maintenance du fichier \texttt{/etc/hosts} qu'il fallait, +à la vieille époque, télécharger toutes les nuits\dots + +% ------------------------------------------------------------ \section{Outils de base} @@ -39,6 +51,20 @@ is used to print just the name and requested information for a host or domain. » \end{quote} +\begin{verbatim} +tth@tranxene:~$ nslookup -type=txt tetalab.org +Server: 80.67.169.12 +Address: 80.67.169.12#53 + +Non-authoritative answer: +tetalab.org text = "v=spf1 ip4:89.234.156.223 -all" + +Authoritative answers can be found from: + +tth@tranxene:~$ +\end{verbatim} + + % ------------------------------------------------------------ \subsection{dig} @@ -58,7 +84,7 @@ Pour le reverse d'une adresse IP : % \subsection{delv} % \index{delv} % -Nouvel outil en rapport avec DNSSEC\index{DNSSEC}. +% Nouvel outil en rapport avec DNSSEC\index{DNSSEC}. % XXX % \index{XXX} % http://www.bortzmeyer.org/delv.html @@ -68,9 +94,10 @@ Nouvel outil en rapport avec DNSSEC\index{DNSSEC}. \subsection{checkresolv} -Outil très basique conçu et bricolé par Tonton~Th au siècle -dernier lors d'un séjour à Frontignan-plage. Hélas, les sources -semblent définitivement perdues. +Un outil très basique conçu et bricolé par Tonton~Th au siècle +dernier lors d'un séjour hivernal à Frontignan-plage. +Hélas, les sources +semblent définitivement perdues. Si quelqu'un a une piste\dots Une ré-écriture s"impose\dots @@ -93,6 +120,7 @@ dnsmasq is a lightweight DNS, TFTP and DHCP server. It is intended to provide coupled DNS and DHCP service to a LAN. \end{quote} +% ------------------------------------------------------------ diff --git a/chap/Fedora.tex b/chap/Fedora.tex index e7487a8..217f505 100644 --- a/chap/Fedora.tex +++ b/chap/Fedora.tex @@ -12,7 +12,7 @@ pour les gérer. Pour chercher un binaire précis~: -\texttt{\# dnf provides '*/pngfix'} +\texttt{\# dnf provides '*/interpolator'} % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \section{Firewall} @@ -39,7 +39,7 @@ portabilité est à vérifier. \section{Comment installer ffmpeg ?} \index{ffmpeg} -D'après Blaise (regatta game) il faut voir du coté de +D'après Blaise (regatta game) il faut voir du coté du dépot \texttt{rpmfusion}\index{rpmfusion}, qui contient de nombreux paquets additionnels. diff --git a/chap/debug.tex b/chap/debug.tex index 019f647..edb5569 100644 --- a/chap/debug.tex +++ b/chap/debug.tex @@ -1,42 +1,83 @@ \chapter{Debug}\index{Debug} \label{chap:debug} -Quand plus rien ne marche, il existe encore un espoir... +Quand plus rien ne marche, reste-il encore un espoir ? +Il existe bien entendu des outils \textsl{mainstream} +tels que le classique \texttt{gdb}\index{gdb}, mais il en existe +une foultitude d'autres, injustement méconnus. +En voici quelques-uns. -\section{strace}\index{strace} +% ============================================================== + +\section{Strace}\index{strace} + +Strace permet de tracer les appels systèmes d'un processus. +Comme vous le savez tous, un appel système +(aka syscall\index{syscall}) +est \textbf{le} moyen de communication qu'utilise un process +utilisateur pôur demander un service au noyau. + +\begin{verbatim} +strace -o toto ./kluge +\end{verbatim} + +% ============================================================== \section{LD\_PRELOAD}\index{LD\_PRELOAD} +D'accord, aves \texttt{strace} nous pouvons voir passer les +appels systèmes, mais dans la vie d'un process, certaines +opérations ne sortent pas de la \texttt{libc}\index{libc}. +L'une d'entre elles, \texttt{getenv(3)}, va nous servir d'exemple. + +\begin{verbatim} +NAME + getenv - get an environment variable +SYNOPSIS + #include + char *getenv(const char *name); +DESCRIPTION + The getenv() function searches the environment list to find the envi‐ + ronment variable name, and returns a pointer to the corresponding value + string. +\end{verbatim} + +Cette fonction est utilisée par un logiciel pour avoir accès à +son contexte extérieur, son environnement, dans lequel on +peut trouver (entre autres) la variable \texttt{\$LOGNAME} qui, +oh surprise, contient votre nom de login. + +Et justement, vous avez un programme sous la main que vous suspecter +d'avoir un problème relationnel avec cette variable. +Il nius faut donc remplacer le getenv de la libc par notre propre +version qui va écouter et exfiltrer l'utilisation de cette +fonction. \begin{lstlisting}[language=C] /* -spy_getenv.so: spy_getenv.c Makefile + spy_getenv.so: spy_getenv.c Makefile gcc -Wall -shared -fPIC $< -ldl -o $@ */ #include #include #include - #define __USE_GNU #include - typedef char * (*original_getenv)(const char *envname); char *getenv(char *envname) { static char *arrow = "--getenv--> "; static char *wtf = " --> WTF ?"; - char *content; -original_getenv orig_getenv; +original_getenv orig_getenv; orig_getenv = (original_getenv)dlsym(RTLD_NEXT, "getenv"); write(STDERR_FILENO, arrow, strlen(arrow)); write(STDERR_FILENO, envname, strlen(envname)); - content = orig_getenv(envname); if (NULL != content) { write(STDERR_FILENO, "=", 1); @@ -47,9 +88,13 @@ else { } write(STDERR_FILENO, "\n", 1); - return content; } \end{lstlisting} +Simple et efficace. +% ============================================================== + + +% ============================================================== diff --git a/chap/gif89a.tex b/chap/gif89a.tex index 8b36ab4..6dccfce 100644 --- a/chap/gif89a.tex +++ b/chap/gif89a.tex @@ -27,7 +27,8 @@ numérique très répandu, le GIF\index{GIF}, en 1987. \end{quote} Deux ans plus tard, le public demandant de plus en plus d'images -épileptisante, une extension de ce format et reçu le petit nom +épileptisante, une extension de ce format fut crée, +et reçu le petit nom de \textsc{gif89a}. Il y a toujours la limitation à 256 couleurs et un seul niveau de transparence. Contraintes qui n'étaient pas si génantes que ça à l'époque vu les terminaux visés. @@ -36,17 +37,23 @@ génantes que ça à l'époque vu les terminaux visés. \section{Création} -Avec une des commandes d'ImageMagick, on peut, à partir d'une suite +Avec la commande \texttt{convert} d'ImageMagick, +on peut, à partir d'une suite d'image, créer une gif89a qui tourne en boucle~: \begin{verbatim} convert -delay 20 -loop 0 a.png b.png c.png foo.gif \end{verbatim} -Le \textsl{delay} est exprimé en millisecondes. +Le \textsl{delay} est exprimé en millisecondes. On peut aussi +rajouter l'option \texttt{-loop nnn}\footnote{ add Netscape loop +extension to your GIF animation} avec nnn qui est le nombre de +boucle que doit faire l'animation. La valeur 0 demandant une +boucle infinie. Et ensuite, vouv pouvez voir votre logo en flamme avec la -commande \texttt{animate foo.gif} sur votre super écran svga. +commande \texttt{animate foo.gif} sur votre super écran +(s)vga\index{VGA}. % ================================================================== diff --git a/chap/shell.tex b/chap/shell.tex index b3a34ae..186ce56 100644 --- a/chap/shell.tex +++ b/chap/shell.tex @@ -1,4 +1,5 @@ \chapter{Le Shell}\index{shell} +\label{chap:shell} Le \texttt{shell} est le coquillage qui isole le MC/P des yusers. En gros, hein, je vais simplifier, et me limiter aux @@ -9,6 +10,10 @@ Le shell est à la fois un interpréteur de commande et un langage de programmation. Ces deux notions ont beaucoup de choses en commun. +Nous allons nous concentrer sur le \textsl{Bourne again shell}. +aka \texttt{bash} qui est peut-être le plus répandu. Mais il +en exuste d'autres : sh, ksh, ash, zsh\dots + % ============================================================== \section{Interpréteur}\index{cli} @@ -25,7 +30,9 @@ Parlons un peu du \textsc{shebang}\index{shebang}\dots \section{Questions à voir} -\dots +\begin{itemize} +\item le traitement des chaines de caractères\dots +\end{itemize} % ==============================================================