Compare commits

..

2 Commits

Author SHA1 Message Date
tth
8c53d9395b more bla 2020-11-16 19:45:21 +01:00
tth
26619b65d4 adding the Grub chapter 2020-11-13 17:45:28 +01:00
7 changed files with 121 additions and 20 deletions

View File

@ -1,5 +1,17 @@
\chapter{Domain Name Service} \chapter{Domain Name Service}
\label{chap:DNS} \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} \section{Outils de base}
@ -39,6 +51,20 @@ is used to print just the name and requested information for
a host or domain. » a host or domain. »
\end{quote} \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} \subsection{dig}
@ -58,7 +84,7 @@ Pour le reverse d'une adresse IP :
% \subsection{delv} % \subsection{delv}
% \index{delv} % \index{delv}
% %
Nouvel outil en rapport avec DNSSEC\index{DNSSEC}. % Nouvel outil en rapport avec DNSSEC\index{DNSSEC}.
% XXX % XXX
% \index{XXX} % \index{XXX}
% http://www.bortzmeyer.org/delv.html % http://www.bortzmeyer.org/delv.html
@ -68,9 +94,10 @@ Nouvel outil en rapport avec DNSSEC\index{DNSSEC}.
\subsection{checkresolv} \subsection{checkresolv}
Outil très basique conçu et bricolé par Tonton~Th au siècle Un 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 dernier lors d'un séjour hivernal à Frontignan-plage.
semblent définitivement perdues. Hélas, les sources
semblent définitivement perdues. Si quelqu'un a une piste\dots
Une ré-écriture s"impose\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. provide coupled DNS and DHCP service to a LAN.
\end{quote} \end{quote}
% ------------------------------------------------------------

View File

@ -12,7 +12,7 @@ pour les gérer.
Pour chercher un binaire précis~: Pour chercher un binaire précis~:
\texttt{\# dnf provides '*/pngfix'} \texttt{\# dnf provides '*/interpolator'}
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\section{Firewall} \section{Firewall}
@ -39,7 +39,7 @@ portabilité est à vérifier.
\section{Comment installer ffmpeg ?} \section{Comment installer ffmpeg ?}
\index{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 \texttt{rpmfusion}\index{rpmfusion}, qui contient de nombreux
paquets additionnels. paquets additionnels.

View File

@ -1,42 +1,83 @@
\chapter{Debug}\index{Debug} \chapter{Debug}\index{Debug}
\label{chap: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} \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] \begin{lstlisting}[language=C]
/* /*
spy_getenv.so: spy_getenv.c Makefile spy_getenv.so: spy_getenv.c Makefile
gcc -Wall -shared -fPIC $< -ldl -o $@ gcc -Wall -shared -fPIC $< -ldl -o $@
*/ */
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#define __USE_GNU #define __USE_GNU
#include <dlfcn.h> #include <dlfcn.h>
typedef char * (*original_getenv)(const char *envname); typedef char * (*original_getenv)(const char *envname);
char *getenv(char *envname) char *getenv(char *envname)
{ {
static char *arrow = "--getenv--> "; static char *arrow = "--getenv--> ";
static char *wtf = " --> WTF ?"; static char *wtf = " --> WTF ?";
char *content; char *content;
original_getenv orig_getenv;
original_getenv orig_getenv;
orig_getenv = (original_getenv)dlsym(RTLD_NEXT, "getenv"); orig_getenv = (original_getenv)dlsym(RTLD_NEXT, "getenv");
write(STDERR_FILENO, arrow, strlen(arrow)); write(STDERR_FILENO, arrow, strlen(arrow));
write(STDERR_FILENO, envname, strlen(envname)); write(STDERR_FILENO, envname, strlen(envname));
content = orig_getenv(envname); content = orig_getenv(envname);
if (NULL != content) { if (NULL != content) {
write(STDERR_FILENO, "=", 1); write(STDERR_FILENO, "=", 1);
@ -47,9 +88,13 @@ else {
} }
write(STDERR_FILENO, "\n", 1); write(STDERR_FILENO, "\n", 1);
return content; return content;
} }
\end{lstlisting} \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} \end{quote}
Deux ans plus tard, le public demandant de plus en plus d'images 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 de \textsc{gif89a}. Il y a toujours la limitation à 256 couleurs
et un seul niveau de transparence. Contraintes qui n'étaient pas si et un seul niveau de transparence. Contraintes qui n'étaient pas si
génantes que ça à l'époque vu les terminaux visés. 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} \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~: d'image, créer une gif89a qui tourne en boucle~:
\begin{verbatim} \begin{verbatim}
convert -delay 20 -loop 0 a.png b.png c.png foo.gif convert -delay 20 -loop 0 a.png b.png c.png foo.gif
\end{verbatim} \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 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}.
% ================================================================== % ==================================================================

13
chap/grub.tex Normal file
View File

@ -0,0 +1,13 @@
\chapter{Grub}\index{Grub}
Successeur pour certaines distributions du vénérable
\texttt{lilo}\footnote{Linux Loader}\index{lilo},
le Grub, aka \textsl{Grand Unified Bootloader} est nettement plus
complexe, mais permet (parait-il) de faire beaucoup plus de choses
\section{Questions}
\begin{itemize}
\item comment passer la carte VGA\index{VGA} en 80x43 ?
\end{itemize}

View File

@ -1,4 +1,5 @@
\chapter{Le Shell}\index{shell} \chapter{Le Shell}\index{shell}
\label{chap:shell}
Le \texttt{shell} est le coquillage qui isole le MC/P des yusers. Le \texttt{shell} est le coquillage qui isole le MC/P des yusers.
En gros, hein, je vais simplifier, et me limiter aux 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 langage de programmation. Ces deux notions ont beaucoup de
choses en commun. 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} \section{Interpréteur}\index{cli}
@ -25,7 +30,9 @@ Parlons un peu du \textsc{shebang}\index{shebang}\dots
\section{Questions à voir} \section{Questions à voir}
\dots \begin{itemize}
\item le traitement des chaines de caractères\dots
\end{itemize}
% ============================================================== % ==============================================================

View File

@ -89,6 +89,7 @@ Your mileage may vary\dots
\input{chap/IPv6} \input{chap/IPv6}
\input{chap/threads} \input{chap/threads}
% \input{chap/dosbox} % \input{chap/dosbox}
\input{chap/grub}
\input{chap/photos} \input{chap/photos}
\input{chap/Bonjour} \input{chap/Bonjour}
\input{chap/debug} \input{chap/debug}