This commit is contained in:
Tonton Th 2020-11-16 19:45:21 +01:00
parent 26619b65d4
commit 8c53d9395b
5 changed files with 107 additions and 20 deletions

View File

@ -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}
% ------------------------------------------------------------

View File

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

View File

@ -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 <stdlib.h>
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 <stdio.h>
#include <string.h>
#include <unistd.h>
#define __USE_GNU
#include <dlfcn.h>
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.
% ==============================================================
% ==============================================================

View File

@ -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}.
% ==================================================================

View File

@ -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}
% ==============================================================