Jämför commits

..

2 Incheckningar

Upphovsman SHA1 Meddelande Datum
tth
a6ff3f5086 un petit push, parfois 2022-01-29 22:46:41 +01:00
tth
6cbac48848 + portaudio 2022-01-24 21:24:11 +01:00
12 ändrade filer med 196 tillägg och 44 borttagningar

Visa fil

@ -472,6 +472,36 @@ Libérer deux fois la mémoire.
% =========================================================
\section{Debug} \index{Debug}
Des outils et astuces en page \pageref{chap:Debug}.
\begin{quote}
splint is an annotation-assisted lightweight static checker.
It is a tool for
statically checking C programs for security vulnerabilities and coding
mistakes.
If additional effort is invested in adding annotations to programs,
splint can perform stronger checking.
\end{quote}
% =========================================================
\section{Legalize}
"The two forms of conforming implementation are hosted and freestanding.
A conforming hosted implementation shall accept any strictly conforming
program. A conforming freestanding implementation shall accept any
strictly conforming program in which the use of the features specified
in the library clause (Clause 7) is confined to the contents of the
standard headers <float.h> , <iso646.h> , <limits.h> , <stdalign.h> ,
<stdarg.h> , <stdbool.h> , <stddef.h> , <stdint.h> , and <stdnoreturn.h>
. Additionally, a conforming freestanding implementation shall accept
any strictly conforming program in which the use of the features
specified in the header <string.h> , except the following functions:
strdup , strndup , strcoll , strxfrm , strerror ." (4p6)
% =========================================================
\section{Ailleurs dans cet ouvrage}
Il y a plein d'autres exemples de code en C, sur des sujets

Visa fil

@ -70,6 +70,8 @@ tth@tranxene:~$
\subsection{dig}
\index{dig}
% https://jvns.ca/blog/2021/12/04/how-to-use-dig/
Dig (\textit{domain information groper}) est un outil d'interrogation
des serveurs DNS. Par défaut, il questionne les serveurs
listés dans \texttt{/etc/resolv.conf}.
@ -80,6 +82,10 @@ Pour résoudre récursivement un nom de domaine à partir de la racine :
Pour obtenir le reverse d'une adresse IP :
\texttt{\$ dig +trace -x <adresse.ip>}
% ------------------------------------------------------------
% \subsection{delv}
% \index{delv}

Visa fil

@ -180,43 +180,7 @@ 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
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;
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);
write(STDERR_FILENO, content, strlen(content));
}
else {
write(STDERR_FILENO, wtf, strlen(wtf));
}
write(STDERR_FILENO, "\n", 1);
return content;
}
\end{lstlisting}
\lstinputlisting[language=C]{code/debug/spy_getenv.c}
Simple et efficace.

Visa fil

@ -52,6 +52,11 @@ map_henon: map_henon.f
Hélas, je n'ai pas de commande \texttt{g77} dans ma machine,
que faire ? En écrire une ?
% ==============================================================
\section{qemu}
\index{qemu}\label{qemu}
http://sven.stormbind.net/blog/posts/deb\_qemu\_local\_openwrt/
% ==============================================================

Visa fil

@ -100,6 +100,27 @@ la commande\texttt{tail} au début du script. Ensuite les deux clauses
coordonnées X et Z, dans le repère POVray, qui n'est pas le même que
celui de Gnuplot.
% ------------------------------------------------
\subsection{image\_map}
% ------------------------------------------------
\subsection{height\_field}
Les champs d'altitude... Toute une histoire...
\begin{verbatim}
#declare Champ_Altitude = object
{
height_field {
png "WS/hf5.png" gamma 1.8
}
pigment { color Cyan }
scale 2
}
\end{verbatim}
% ------------------------------------------------
\subsection{Trucs à voir}
@ -107,15 +128,15 @@ celui de Gnuplot.
\begin{verbatim}
#declare VIRGINIA =
transform{
transform {
matrix < 1, 1, 0,
0, 1, 0,
0, 0, 1,
0, 0, 0 >
}
box{0,1
transform{VIRGINIA}
box { 0, 1
transform {VIRGINIA}
}
\end{verbatim}

Visa fil

@ -111,6 +111,12 @@ changer la dimension de l'image. En détail, j'ai pas tout compris.
% ------------------------------------------
\subsection{Trucs}
convert -average frame*.png output.png
% ------------------------------------------
\subsection{Ressources}
Le futur livre de Brunus. Réclamez les prmiers drafts dans

Visa fil

@ -10,4 +10,4 @@ TP Link
Archer C7
\end{verbatim}
http://sven.stormbind.net/blog/posts/deb\_qemu\_local\_openwrt/

Visa fil

@ -2,6 +2,8 @@
\label{S-lang}
\index{S-lang}
% ----------------------------------------------------------
\section{C'est quoi ?}
S-lang est une bibliothèque de fonctions multi-plateforme
@ -13,6 +15,8 @@ L'exemple le plus éblouissant étant le célèbre
longuement dans les pages consacrées à Usenet\index{Usenet}
(page \pageref{slrn}).
% ----------------------------------------------------------
\section{slsh}
\index{slsh}
@ -40,3 +44,4 @@ tth@plop:~/Essais/Slang$
Cool...
% ----------------------------------------------------------

Visa fil

@ -154,13 +154,21 @@ Elle supporte une grande variété de formats.
La configuration se fait par deux fichiers :
\texttt{/etc/libao.conf} surchargeable par
\texttt{\$HOME/.libao.conf}, et scématiquement, nous pouvons
\texttt{\$HOME/.libao.conf}, et schématiquement, nous pouvons
voir qu'elle est à deux niveaux.
https://www.xiph.org/ao/doc/drivers.html
%------------------------------------------------------------------
\section{Portaudio} \label{Portaudio} \index{Portaudio}
Une suggestion de Wargreen pour avancer un peu dans la construction
de ma DAW\footnote{Digital Audio Workstation, aka machine à sons}
\textsl{custom-made} à mon idée\dots
%------------------------------------------------------------------
\section{Ladspa}
\index{ladspa}

62
chap/webserver.tex Normal file
Visa fil

@ -0,0 +1,62 @@
%
%
%
\chapter{Web servers}
% ==============================================================
\section{Apache} \index{Apache}
Le grand classique.
% ==============================================================
\section{Lighttpd} \index{Lighttpd}
Un outsider ?
\begin{verbatim}
root@ramen:~# lighty-enable-mod userdir
Enabling userdir: ok
Run "service lighttpd force-reload" to enable changes
root@ramen:~# service lighttpd force-reload
root@ramen:~#
\end{verbatim}
% ==============================================================
\section{Custom made}
\begin{verbatim}
tth@ramen:~/Houba/Fractales90$ apt show libmicrohttpd12
Package: libmicrohttpd12
Version: 0.9.72-2
Priority: optional
Section: libs
Source: libmicrohttpd
Maintainer: Daniel Baumann <daniel.baumann@progress-linux.org>
Installed-Size: 211 kB
Depends: libc6 (>= 2.17), libgnutls30 (>= 3.7.0)
Homepage: https://www.gnu.org/software/libmicrohttpd/
Tag: role::shared-lib
Download-Size: 109 kB
APT-Sources: http://deb.debian.org/debian bullseye/main amd64 Packages
Description: library embedding HTTP server functionality
GNU libmicrohttpd is a small C library that is supposed to make it
easy to run an HTTP server as part of another application.
Key features that distinguish GNU Libmicrohttpd from other
projects are:
* C library: fast and small
* API is simple, expressive and fully reentrant
* Implementation is HTTP 1.1 compliant
* HTTP server can listen on multiple ports
* Four different threading models (select, poll, pthread, thread pool)
* Support for IPv6
* Support for SHOUTcast
* Support for incremental processing of POST data (optional)
* Support for basic and digest authentication (optional)
* Support for SSL3 and TLS
\end{verbatim}
% ==============================================================

45
code/debug/spy_getenv.c Normal file
Visa fil

@ -0,0 +1,45 @@
/*
*
* 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 = " --> (nil)";
char *content;
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);
write(STDERR_FILENO, content, strlen(content));
}
else {
write(STDERR_FILENO, wtf, strlen(wtf));
}
write(STDERR_FILENO, "\n", 1);
return content;
}
/* j'adore quand un plan se déroule sans accrc */

Visa fil

@ -139,7 +139,6 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
\input{chap/plugins}
\input{chap/Bonjour}
\input{chap/ioctl}
\input{chap/debug}
\input{chap/buzybox}
\input{chap/gif89a}
@ -148,11 +147,12 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
\input{chap/Usenet}
\input{chap/DNS}
\input{chap/ssh}
\input{chap/webserver}
\input{chap/hardware}
\input{chap/gadgets}
\input{chap/sdr}
% \input{chap/slang}
\input{chap/slang}
\input{chap/curses}
\input{chap/openwrt}
\input{chap/WiFi}