Compare commits
2 Commits
b197fba14e
...
8c53d9395b
Author | SHA1 | Date | |
---|---|---|---|
8c53d9395b | |||
26619b65d4 |
36
chap/DNS.tex
36
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}
|
||||
|
||||
% ------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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.
|
||||
|
||||
% ==============================================================
|
||||
|
||||
|
||||
% ==============================================================
|
||||
|
@ -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}.
|
||||
|
||||
% ==================================================================
|
||||
|
||||
|
13
chap/grub.tex
Normal file
13
chap/grub.tex
Normal 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}
|
||||
|
@ -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}
|
||||
|
||||
|
||||
% ==============================================================
|
||||
|
Loading…
Reference in New Issue
Block a user