DD est un utilitaire de copie de fichier qui a été développé sous Unix. Ce programme est un outils intégré naturellement sur Linux, c'est à dire qu'il est présent sur tout les systèmes basés sur Linux qui n'ont pas un but purement lucratif.





0x01. PRESENTATION


DD est un outil qui n'est pas très compliqué lorsqu'on veut faire de la maintenance, c'est à dire de la récupération de données, de la copie, du formatage et du formatage bas niveau. L'énorme avantage qu'il a c'est qu'il est très maniable. Ce que je conseil sur un poste oà il y a linux et windows, c'est de noter dans le fichier /etc/fstab le nom des partitions Windows afin de s'y retrouver si elles ne sont pas montées, si il y a un problème quelconque, ça vous permettra de les monter manuellement si le montage automatique ne s'est pas fait. On pourrait même faire un petit script pour ça.


mount /dev/hda1 /windows/c         
mount /dev/hda9 /jukebox           
mount /dev/hda6 /windows/tools     
mount /dev/hda5 /windows/user 



0x02. SAUVEGARDE


Comme on peut le voir on monte un device DEV dans un dossier (existant). En réalité, /dev/hda1 représente un fichier avec une structure particulière : son système de fichier. Dans linux HDA suivi d'un chiffre correspond à une partition, HDA seul correspond à un disque IDE et pour les disque Serial ATA ce sera SDA. DD intervient ici, il va considérer une partition comme un simple fichier à copier. A savoir que mon disque dur fait 20 Go, soit 20 * 1024 Mo, ou encore 20 * 1024 * 1024 Ko, ce qui fait au total 20 * 1024 * 1024 * 1024 octets = 21474836480 octets.
Pour cet exemple on suppose qu'on a mis un live CD, qu'on a monté une partition dans /mnt/bkp/ qui a suffisament de place pour copier le disque dur sur lequel est installé le système d'exploitation.


dd if=/dev/hda of=/mnt/bkp/hda_mon_pc count=  21474836480   

Le resultat de cette commande sera bien une sauvegarde du disque HDA mais la taille du fichier sera de la taille du disque dur, pas terrible pour une sauvegarde... Cepandant il est possible de compresser le fichier à l'aide de GZIP. La compression va être réellement efficace dans le sens oà le gain de place sera conséquant puisqu'un disque de 20Go a forcément de la place vide. Ce vide sera bien compressé, surtout que la redondance d'information est très probable sur autant de données. (la place vide, par exemple ne prendra peut être plus que 1/3 de sa place réelle une fois compressée). La commande à éxecuter est la suivante :


dd if=/dev/hda | gzip -c > /bkp/hda_mon_pc 

Voilà, nous avons un fichier de taille respectable - dans la plus part du temps cela représente la moitié de la taille du disque.





0x03. RESTAURATION


Nous avons sauvegardé notre système sur un disque de sauvegarde, très bien. Voyons maintenant comment le récupérer. Très simple il suffit de lancer la commande inverse ! Il faut juste remarquer qu'en fait OF signifie Output File et IF Input File, on lance donc l'écriture dans l'autre sens. Dans le cas oà la sauvegarde n'est pas compressée :


dd if=/mnt/bkp/hda_mon_pc of=/dev/hda count=  21474836480   

Pour extraire les données il suffit d'utiliser ZCAT et de passer les données via un 'pipe' vers le fichier de sortie. ZCAT permet d'extraire les données vers la sortie standard (stdout) qu'il nous faut donc rediriger vers le disque à restaurer :


zcat /mnt/hda12/mbr/backup_hda | dd of=/dev/hda 

On peut utiliser DD également pour le formatage bas niveau, il suffit d'écrire un octet nul sur toute la partition, par contre pour le formatage bas niveau, la compression n'a bien évidemment aucun sens.


dd if=/dev/zero of=/dev/hda count=21474836480

le paramètre 'zero' dépend de la distribution de Linux que vous avez, ça peut également être 'null' :

dd if=/dev/null of=/dev/hda count=21474836480 



0x04. VIA SERVEUR FTP


Le rôle du serveur FTP, dans ce cas précis sera de stocker les sauvegardes, par exemple dans le cas d'une sauvegarde régulière. Il faut bien entendu que le client et le serveur FTP utilisés soient compatibles pour permettre ces actions, car il y a des serveurs qui restreignent les commandes exécutables.


Premièrement on se connecte sur le serveur FTP:

ftp 10.2.0.1

Ensuite on envoie le fichier, c'est à dire le device /dev/hda vers un fichier de sauvegarde,
par exemple hda_170407.bkp ftp> PUT "| dd if=/dev/hda | gzip -c" hda_170407.bkp 

Voici ce que fait le cheminement de la commande :


1. Les données sont envoyées par la commande PUT
2. La commande DD lit des données et envoie ces données à GZIP
3. GZIP reçoit les données au fur et à mesure et les compresse
4. PUT a reçu les données à écrire dans 'hda_170407.bkp' 


La procédure inverse, c'est à dire la récupération puis l'extraction des données compréssées.


une fois connecté, il suffit de demander le fichier, c'est à dire le device /dev/hda vers un fichier
de sauvegarde, par exemple hda_170407.bkp

ftp> GET "| dd if=/dev/hda | gzip -d" hda_170407.bkp 



0x05. CONCLUSION


Le but de ce tutoriel est de montrer à quel point les outils de base dans linux sont puissants et permettent énormément de choses. Nous pouvons sans outils particuliers faire des opérations sur le disques durs, je conseil à tout le monde de sauvegarder via un logiciel, car ils sont plus pratiques, par contre je conseille également de sauvegarder la MBR sur un support gardé bien au chaud. Merci à Raphy pour son aide.

Quelques liens utiles:

Documentation sur la MBR
Gérer le MBR (Master Boot Record)




   =>   Écrit par : Nicolas, le 22 novembre 2010


 
Mots clés :  
  forensic 
  
  system 
  
  linux 
  
  macos 
    >   Articles connexes :

Antiforensic



Volatility



Cheat SHeet OpenSSL



Comment gagner du temps sur Internet



/tmp et /var/log en noexec sur macOS



5752984