Pourquoi l'écriture de données aléatoires à l'aide de dd entraîne-t-elle des partitions de disque?


11

Avant d'exécuter la ddcommande, la commande a lsblkrenvoyé la sortie ci-dessous:

NAME              MAJ:MIN  RM   SIZE    RO TYPE  MOUNTPOINT
sda               8:0       0    931.5G  0  disk  

La commande dd if=/dev/urandom of=/dev/sda conv=fsync status=progressest exécutée. L'appareil perd cependant de la puissance et s'arrête. Lorsque l'alimentation est rétablie, la commande lsblkrenvoie la sortie suivante:

NAME              MAJ:MIN     RM   SIZE    RO TYPE  MOUNTPOINT
    sda           8:0          0   931.5G  0  disk 
      sda2        8:2          0   487.5G  0  disk

@RuiFRibeiro - Merci pour l'analogie, mais il n'est pas clair pourquoi ddcela entraînerait des partitions, surtout si la commande est destinée à effacer les disques?
Motivé le

1
Coïncidence: il est très peu probable qu'elle soit liée à la coupure de courant. Vous écrivez des données aléatoires sur l'appareil. Certaines de ces données aléatoires sont allées aux premiers blocs, c'est là que vivent les tables de partition. Vous avez probablement fini par définir une partition.
ctrl-alt-delor

pouvez-vous publier le résultat de file /dev/sda*et sudo fdisk -l /dev/sda*?
phuclv

@phuclv - Au début du processus, la sortie sera-t-elle toujours valable?
Motivé le

1
@Motivated Notez que l' ddobjectif n'est pas en soi d'effacer les disques. L'écriture de données aléatoires sur un disque peut produire des résultats aléatoires.
jjmontes

Réponses:


20

Plusieurs possibilités:

  • Linux prend en charge de nombreux types de table de partition différents, dont certains utilisent très peu d'octets magiques, et il est ensuite facile d'identifier de manière erronée les données aléatoires (*) [il est donc possible de générer aléatoirement une table de partition quelque peu "valide"].

  • Certains types de tables de partition ont également des sauvegardes à la fin du disque (notamment GPT) et qui pourraient être récupérées si le début du lecteur était remplacé par des déchets aléatoires.

  • Le périphérique ne fonctionne pas correctement et il a été déconnecté avant la fin de l'écriture des données, ou continue de renvoyer les anciennes données, de sorte que la table de partition survit. Parfois, cela se produit avec des clés USB.

  • ...

(*) Créez 1000 fichiers avec des données aléatoires et voyez ce qui en sort:

$ truncate -s 8K {0001..1000}
$ shred -n 1 {0001..1000}
$ file -s {0001..1000} | grep -v data
0099: COM executable for DOS
0300: DOS executable (COM)
0302: TTComp archive, binary, 4K dictionary
0389: Dyalog APL component file 64-bit level 1 journaled checksummed version 192.192
0407: COM executable for DOS
0475: PGP\011Secret Sub-key -
....

Le but du déchiquetage aléatoire d'un lecteur est de faire disparaître définitivement les anciennes données. Il n'y a aucune promesse que le lecteur apparaîtra vide, inutilisé, en parfait état par la suite.

Il est courant de suivre avec un effacement nul pour y parvenir. Si vous utilisez LVM, il est normal que LVM remette à zéro les premiers secteurs de tout LV que vous créez afin que les anciennes données n'interfèrent pas.

Il existe également un utilitaire dédié ( wipefs) pour se débarrasser des anciennes signatures d'octets magiques que vous pouvez utiliser pour vous débarrasser des métadonnées du système de fichiers et de la table de partition.


Les appareils avaient été précédemment effacés à l'aide de la commande ATA Secure Erase. Je suppose que cela supprimerait des données telles que 1. elles sont irrécupérables 2. aucune information de partition ne survit. Si cela est vrai, voulez-vous dire que lors de l'exécution de la ddcommande, la génération de données aléatoires en cas d'interruption peut entraîner des données qui ressemblent à des tables de partition? Ce sont également des disques durs SATA (non-SSD).
Motivé le

5
Les données aléatoires peuvent ressembler à n'importe quoi. C'est ce que signifie être aléatoire. Connaissez-vous le théorème des singes infinis? Il indique que si une quantité suffisante de singes tapent au hasard sur des machines à écrire pendant assez longtemps, l'un d'eux produira à un moment ou à un autre les œuvres complètes de Shakespeare. Une table de partition MBR est vraiment petite (seulement 64 octets), elle n'a pas de somme de contrôle ni de vérification, et un format très dense. Il est très probable qu'une chaîne aléatoire de 64 octets produira une table de partition valide. D'autres formats de table de partition sont tout aussi simples.
Jörg W Mittag

Oui, la table de partition n'est que de 64 octets (à la fin), le type de partition n'est que de 1 octet et les entrées doivent être légales ou séquentielles. Il est donc judicieux de mettre à zéro le premier cluster / secteur / 512 byes sur MBR. Vous ne voulez pas non plus de comportement de démarrage imprévisible, moins probable, mais toujours un risque.
mckenzm

18

Comme on le voit ici, le MBR (Master Boot Record) est relativement simple; https://en.wikipedia.org/wiki/Master_boot_record .

Lorsque vous utilisez, /dev/urandomvous pouvez toujours créer quelque chose qui ressemble à une table de partition. La solution consiste à remplir les régions de la table de partition avec zéro et à utiliser dev/urandompour le reste.

Linux prend également en charge d'autres formats de disque supplémentaires qui peuvent également potentiellement être déclenchés, provoquant l'apparition de partitions «non valides» lors du remplissage avec des données aléatoires.


13

La chose qui définit une collection de 512 octets comme étant un enregistrement de démarrage principal est la présence des valeurs 0x55 0xAAà la fin. Il y a 1 chance sur 65 536 de /dev/urandomproduire une telle valeur: pas trop probable, mais des choses tout aussi improbables se produisent tout le temps.

(Certaines autres tables de partition, telles que la carte de partition Apple , ont des signatures également courtes. Il est possible que vous en ayez plutôt généré une.)


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.