lundi, septembre 14 2009

Osez dire OUI !

Si un jour vous vous ennuyez je vous conseille de partir à la découverte d'un monde merveilleux : ls /bin/[1] Vous regardez le listing et ouvrez le man des commandes que vous ne connaissez pas, ça passe le temps et perso ça m'a pas mal distrait quand j'était à l'école. En plus les connaissances ainsi acquises se sont toujours montré payante pour moi à plus ou moins long terme....Toutes, même celle de la commande "yes" ;)

YES - Creative Common by "domib34" on Flickr

Pour ceux qui ignorent ce que fait la commande "yes" je vous offre gracieusement la description issue du man : "yes - output a string repeatedly until killed". Voilà :) ....Vous tapez "yes" et hop, le programme va cracher "y"[2] indéfiniment sur la sortie standard. Super hein :) ? C'est typiquement le genre de commande que l'on peut découvrir en listant les répertoires de son PATH et qui me laissent perplexes. Je veux dire : je comprend bien l'utilité de la chose (certainement pour répondre "oui" en boucle lors de procédures un peu chiante ou de "rm -i" incontrolable) mais de là à en faire un outil standard [3]...

Toujours est il que quand je suis tombé sur cette commande je me souviens m'être dit "bon, il FAUT que je lui trouve une utilité", et j'y suis parvenu. Je vous l'accorde elle est un peu capilotractée et on pourrait remplacer "yes" par beaucoup d'autres choses mais je la trouve tout de même pratique dans certaines situations et puis ça m'a permis de tirer profit de commandes (ou options) que j'avais découvert par des "ls /bin". Voici donc la commande, je vous laisse la lire et essayer de deviner ce qu'elle fait, je donnerai l'explication après :

yes | cat -n | head -n 6 | shuf | cut -f 1 | head -n 1 | tr -d "\t "

Pour réaliser cette ligne j'ai du découvrir l'option "-n" de la commande "cat" (que j'utilise pourtant plusieurs dizaines de fois par jour), la commande "shuf", et la commande "tr" :) Pour information toutes sont dans "/bin" (sauf "shuf") et ont donc de très vives chances d'être présentes sur presque tous les unixoïdes du monde, vous pouvez donc tester la ligne chez vous si vous n'avez pas déjà compris à quoi elle sert ;) ...Attention c'est votre dernière chance avant que je donne la solution....Plus qu'une demi ligne...Voilà : elle sert à simuler le lancer d'un dés à six faces, pratique quand on est rôliste ;) ![4]

Notes

[1] Les gourous peuvent passer à la force 2 avec /usr/bin/

[2] "y" suivi d'un retour charriot pour être précis. On peut remplacer "y" par la chaine de son choix.

[3] en tout cas il était présent sur toutes les distribs où j'ai regardé

[4] Et pour les plus taquins d'entre vous il est également possible de faire des yes "bonjour :p" | wall, ou encore des yes "salut" >> /dev/ttyX quand on est root sur une machine avec des amis dessus

samedi, juillet 18 2009

Le bon ouvrier possède de bons outils

Hop, j'inaugure un nouveau type de post dans lequel je présente l'un des outils qu'il m'arrive d'utiliser en sécurité informatique et/ou que j'aurai aimé connaitre à un certain moment de ma vie. Pour ce premier article du genre je vais vous présenter "foremost", un outil de forensic (d'où l'image d'illustration que j'ai choisi).

Grave - Creative Common by "buschap" on Flickr

foremost

Laissez moi vous raconter une petite histoire : il y a bien longtemp il est arrivé à ma copine de l'époque de graver toutes ses photos de vacances sur un DVD, puis de les effacer de son disque dur et de vider la corbeille afin de gagner de la place sur le disque. Seulement voilà : une fois les photos définitivement supprimées du disque dur impossible de lire le DVD ! Il refusait d'être reconnu sur son ordinateur, sur le mien, et sur le lecteur de salon...Je ne vous raconte pas le désespoir dans ses petits yeux à ce moment là :(

Etant du genre persévérant (et sous linux) j'ai tenté un petit "dd"[1] du DVD incriminé dans un fichier sur mon disque dur, puis j'y ai jeté un oeil "à l'arrache" (i.e. : "string | less"[2] ) et j'y ai vu des séquences qui ressemblaient furieusement à ce qu'on trouve dans des en-têtes de fichiers JPG...Ni une ni deux je dégaine mes outils préférés de l'époque (à savoir VIM et GCC) et je pond un petit parser en C qui tente de repérer les en-têtes des images et des vidéos puis d'extraire les octets qui suivent pour recréer les fichiers illisibles du DVD. C'est ainsi que pendant les 2h qui ont suivi la constatation de la perte des fichiers sur le DVD je me suis retrouvé à faire des "trucs cabalistiques" [3]. Et finalement, au bout de tout ce travail, petit moment de gloire quand j'ai finalement lancé un "startx" afin d'exhiber toutes les photos et vidéos que l'on croyait perdues mais que j'avais quand même réussi à récupérer "par magie" :) !

Et bien j'ai découvert, des années après, que des petits malins avaient codé sensiblement le même outil, mais sérieusement et proprement :) ! Le nom de ce petit outil c'est "foremost", il fait la même chose que ma bidouille en C (à savoir chercher des en-têtes connues dans de la donnée brute puis reconstruire le fichier) mais lui il gère un nombre impressionant de format de fichier différents (contre juste "JPEG" et "MOV" pour mon vieil outil) et il est truffé de petites options qui le rendent terriblement efficace et tout terrain. Bref : un véritable régal pour récupérer des fichiers effacés (par erreur ou pas ;) ).

Cerise sur le gateau : il est sous license GNU, vous pourrez donc en profiter avec un simple "aptitude install foremost", et il est également par défaut sur backtrack 3. Mauvaise nouvelle par contre : sur ma gentoo le package est vieux et cassé, donc si vous ne voulez pas utiliser de ~x86 sur ce paquet oubliez tout de suite le "emerge foremost" qui vous est venu à l'esprit et allez plutôt récupérer les sources pour le compiler vous même.

Petite ouverture en guise de conclusion : foremost cherche les header mais également les footer, et en fait cette stratégie de récupération de fichier s'appelle le "File Carving". Cette stratégie est d'ailleurs assez répandue et il existe pas mal de soft de ce type, la star de la famille étant en ce moment "photorec". En deux mots photorec gère plus de type de fichiers que foremost (pour n'en citer qu'un : bz2), en revanche il n'est pas inclu dans backtrack3 par défaut (ou alors j'ai mal cherché) et il se trouve dans un paquet avec un nom à la c*n sur gentoo : testdisk.

Notes

[1] Comande de copie bas niveau, un must à connaitre absolument

[2] Ouais, à l'époque je m'y connaissais encore moins que maintenant en forensic lol.

[3] il faut bien avouer que du point de vue d'une windowsienne qui n'a jamais programmé : coder du C sous VIM sans interface graphique, ça fait étrange

page 3 de 3 -