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}
|
\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}
|
||||||
|
|
||||||
|
% ------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
|
||||||
|
@ -1,13 +1,58 @@
|
|||||||
\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]
|
||||||
/*
|
/*
|
||||||
@ -18,25 +63,21 @@ spy_getenv.so: spy_getenv.c Makefile
|
|||||||
#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.
|
||||||
|
|
||||||
|
% ==============================================================
|
||||||
|
|
||||||
|
|
||||||
|
% ==============================================================
|
||||||
|
@ -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
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}
|
\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}
|
||||||
|
|
||||||
|
|
||||||
% ==============================================================
|
% ==============================================================
|
||||||
|
1
main.tex
1
main.tex
@ -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}
|
||||||
|
Loading…
Reference in New Issue
Block a user