En fait c'est moi qui ai choisi des "skip" aléatoires. J'aurais très bien pu mettre toujours le même mais le jeu aurait perdu de son intérêt après la 3ème ou la 4ème image...
Exemple : pour un "skip" de 4500 octets :
convert -background white -fill black -font Bitstream-Vera-Sans-Bold -pointsize 20 label:'dd if=img1.png of=img2.png bs=1 skip=4500' img1.png
dd if=/dev/zero of=empty bs=1 count=$((4500-$(wc -c img1.png | cut -d" " -f1))); cat empty >> img1.png
rm -f empty
.
.
Dans le même genre, voilà un petit bout de code intéressant. Il se lance dans le shell, se compile et donne un programme valide qui contient lui-même un fichier zip 😉
hello_world.c
#include <stdio.h>
#define cat int i
cat=0/*>/dev/null; echo "Hello world"; exit
*/;
int main(void)
{
printf("Hello world\n");
return 0;
}
static const char *c = "\x50\x4b\x3\x4\xa\x0\x0\x0\x0\x0\x53\xbb\x50\x37\xd5\xe0\x39\xb7\xc\x0\x0\x0\xc\x0\x0\x0\xb\x0\x15\x0\x48\x65\x6c\x6c\x6f\x20\x77\x6f\x72\x6c\x64\x55\x54\x9\x0\x3\x8d\x2c\x15\x47\x8b\x2c\x15\x47\x55\x78\x4\x0\xe8\x3\xe8\x3\x48\x65\x6c\x6c\x6f\x20\x77\x6f\x72\x6c\x64\xa\x50\x4b\x1\x2\x17\x3\xa\x0\x0\x0\x0\x0\x53\xbb\x50\x37\xd5\xe0\x39\xb7\xc\x0\x0\x0\xc\x0\x0\x0\xb\x0\xd\x0\x0\x0\x0\x0\x1\x0\x0\x0\xa4\x81\x0\x0\x0\x0\x48\x65\x6c\x6c\x6f\x20\x77\x6f\x72\x6c\x64\x55\x54\x5\x0\x3\x8d\x2c\x15\x47\x55\x78\x0\x0\x50\x4b\x5\x6\x0\x0\x0\x0\x1\x0\x1\x0\x46\x0\x0\x0\x4a\x0\x0\x0\x0\x0";
.
link31@linux ~$ sh hello_world.c
Hello world
link31@linux ~$ gcc hello_world.c -o hello_world
link31@linux ~$ ./hello_world
Hello world
link31@linux ~$ unzip hello_world
Archive: hello_world
warning [hello_world]: 1408 extra bytes at beginning or within zipfile
(attempting to process anyway)
extracting: Hello world
link31@linux ~$ cat Hello\ world
Hello world