# [hdd] effacement complet des données (résolu)

## loopx

Bonjour, 

Je cherche un moyen bête mais rudement efficace pour effacer la totalité d'un disque dur (avant le renvoie en garantie). Genre, formater en bas niveau plusieurs fois pour ne plus que l'on puisse récupérer la moindre donnée, et aussi pour l'user un peu plus   :Laughing: 

Une idée ?

EDIt: je pense plus à une commande qui prend des paramètres que à un script qui boucle sur un mkfs ...   :Wink: 

----------

## xaviermiller

10 fois "cat /dev/uandom > /dev/sda" ?

----------

## Pixys

 *loopx wrote:*   

> Bonjour, 
> 
> Je cherche un moyen bête mais rudement efficace pour effacer la totalité d'un disque dur (avant le renvoie en garantie). Genre, formater en bas niveau plusieurs fois pour ne plus que l'on puisse récupérer la moindre donnée, et aussi pour l'user un peu plus  
> 
> Une idée ?
> ...

 

On peut toujours récupérer des données même après 10 formatages de bas niveau : rémanence magnétique.

 *loopx wrote:*   

> 
> 
> EDIt: je pense plus à une commande qui prend des paramètres que à un script qui boucle sur un mkfs ...  

 

à mon avis c'est risqué, généralement ce sont les softs des frabriquants de disques qu'il vaut mieux utiliser, genre Maxblast (version 4 sur disquette sous DOS)

EDIT: honteuse faute d'orthographeLast edited by Pixys on Mon Apr 06, 2009 6:30 pm; edited 1 time in total

----------

## guilc

 *Pixys wrote:*   

> 
> 
> On peut toujours récupérer des données même après 10 formatages de bas niveau : rémanence magnétique.
> 
> 

 

Ouais enfin, 10x, ça commence à être compliqué, malgré les phénomènes des cycles d'hystérésis.

Mais à ce stade, il faut y mettre le prix pour récupérer quoi que ce soit, donc à moins d'être la DGSE qui a besoin de cacher des infos secret défense, ça ne craint plus grand chose  :Wink: 

[EDIT]

Au fait, pour ceux qui ne connaissent pas cet excellent (et célèbre) papier sur le sujet : http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html

Il est aussi expliqué comment faire pour statistiquement rendre le disque illisible en... 35 passes  :Smile: 

----------

## brubru

mke2fs -c -c  (deux fois) lance badblocks en mode lecture-écriture de plusieurs patterns 0x00, 0xff, 0xaa, très long...

 *man mke2fs wrote:*   

> 
> 
>        -c     Check the device for bad blocks before creating the file system.   If  this  option  is  specified
> 
>               twice, then a slower read-write test is used instead of a fast read-only test.
> ...

 

voir aussi man badblocks

Les utilitaires des fabriquants sont bien aussi (diagnostiques...).

----------

## Pixys

 *guilc wrote:*   

>  *Pixys wrote:*   
> 
> On peut toujours récupérer des données même après 10 formatages de bas niveau : rémanence magnétique.
> 
>  
> ...

 

Bien sûr, mais c'est pour dire qu'il est virtuellement impossible d'effacer toutes les données

----------

## loopx

 *XavierMiller wrote:*   

> 10 fois "cat /dev/uandom > /dev/sda" ?

 

Ah que tu pense que c'est possible  :Surprised:   :Very Happy:     c'est pas risqué ?   moi je m'en fou note, mais uniquement pour ce disque, faudrait pas qu'il atteingne les autres mdr ...

Il s'arretera quand sda sera full que tu dis 10 fois ?    Super bonne idée note  :Smile: 

----------

## Slashounet

shred ?

/

----------

## xaviermiller

 *loopx wrote:*   

> Il s'arretera quand sda sera full que tu dis 10 fois ?    Super bonne idée note 

 

Oui  :Smile: 

----------

## loopx

 *XavierMiller wrote:*   

>  *loopx wrote:*   Il s'arretera quand sda sera full que tu dis 10 fois ?    Super bonne idée note  
> 
> Oui 

 

Nan sérieux, jpeux essayer sans risque ?

----------

## ppg

Et dd if=/dev/urandom of=/dev/sda ça marche pas ?

----------

## loopx

 *ppg wrote:*   

> Et dd if=/dev/urandom of=/dev/sda ça marche pas ?

 

Ben, c'est pas un problèyme que ca aie pas, c'est que j'ai pas envie de péter tout, masi bon, jvais tester un bon vieux cat, car dd c'est quand on veut réussir les trucs, ce qui est opposé à ce que je veux faire : tout niké  :Very Happy: 

EDIT: je suis entrain de faire le cat /dev/random ... c'est lent, je sais pas si c'est normal, mais il ne fait rien, puis écrit par pick de 10 à 40Mo toute les 5 secondes voir plus  :Surprised:   ...

EDIT2: j'ai toruvé ceci :

http://linux-solved.com/post/SOLVED-Why-is-cat-dev-urandom-amp-amp-gt-dev-sda-faster-32607.html

J'ai pas tout compris, mais j'aimerais faire une copie par bloc de X Mo ... bloc qui seront tous pareil (histoire d'arreter de générer 250Go de data via /dev/urandom) mais je sais pas comment faire encore ..

EDIT3: c'est vraiment trop lent, en fait, ca écrit sur le disque toute les 10 secondes ... j'ai que 250Go en plus ... Le CPU est à 100% et ne décole pas ...

EDIT4: peut etre shred oui ...

----------

## tarpman

voici ce que tu cherches.

----------

## loopx

 *tarpman wrote:*   

> voici ce que tu cherches.

 

Ca permet de faire moins de génération avec /dev/urandom ? Car la, si je compte bien, me faudra bien 24 heures pour un 250Go ... Hum, qu'est-ce que je vais devenir quand je devrais faire ca avec un To   :Laughing: 

----------

## truc

 *Slashounet wrote:*   

> shred ?
> 
> /

 

Ça ne semble pas avoir été vu, alors je le cite! C'est fait pour ça  :Smile: 

----------

## loopx

Tiens, c'est vraiment bizard, depuis que je n'ai plus de table de partition, le disque ne veut plus dormir avec :

```
hdparm -y /dev/sdb

ou

htparm -Y /dev/sdb
```

il redémarre à la seconde prêt ou il s'est arreté ...  Normal ?

EDIT: je test shred la, sympa ce programme  :Smile:   mais je n'atteind pas du tout une vitesse correct  :Sad:    à compter que chaque ligne est afficher à 5 secondes d'interval :

```
loop loopx # shred -n 2 -vz /dev/sdb

shred: /dev/sdb: pass 1/3 (random)...

shred: /dev/sdb: pass 1/3 (random)...4.3MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...9.1MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...14MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...19MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...23MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...28MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...33MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...37MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...41MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...45MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...50MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...54MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...59MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...64MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...70MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...75MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...79MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...84MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...89MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...94MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...99MiB/233GiB 0%

shred: /dev/sdb: pass 1/3 (random)...104MiB/233GiB 0%
```

Bref, je suis à peine à 1Mo seconde ... Mon disque est en SATA, ca me fou les boules quand meme, faut qu'il arrête de générer autant de random  :Sad: 

----------

## d2_racing

Moi j'utilise ceci :

```

# dd if=/dev/zero of=/dev/sda

# dd if=/dev/random of=/dev/sda

# dd if=/dev/null of=/dev/sda

# dd if=/dev/zero of=/dev/sda

# dd if=/dev/random of=/dev/sda

# dd if=/dev/null of=/dev/sda

# dd if=/dev/zero of=/dev/sda

```

Après 7 fois, je pense qu'on est correct  :Razz: 

----------

## loopx

Je viens d'avoir une idée pour accélérer grandement l'effacage. Déjà, quand on y pense bien, on a pas besoin de générer 250Go de données aléatoire ... Seul 10Mo de données aléatoire suffise, il faut juste trouver le moyen de répéter ces données lors de l'écriture.

Donc, pour commencer, je vais générer environ 10Mo de données texte via /dev/urandom ... Après, il faudra trouver une commande qui permette d'écrire ca sur /dev/sdb et de manière à répéter tout le temps l'écriture de ce fichier ...

Une idée ?

EDIT: voici le principe :

```
loop ~ # cat /dev/urandom > random.txt

^C
```

On crée le fichier ... et on CTRL+C pour arrêté dès que le fichier dépasse les 10Mo ... Pour connaitre ca, on peut (c'est mauvais mais ca fonctionne) utiliser une autre console comme suit :

```
loop ~ # ls -lh random.txt

-rw-r--r-- 1 root root 3.1M Apr  9 16:22 random.txt

loop ~ # ls -lh random.txt

-rw-r--r-- 1 root root 4.4M Apr  9 16:22 random.txt

loop ~ # ls -lh random.txt

-rw-r--r-- 1 root root 5.3M Apr  9 16:22 random.txt

loop ~ # ls -lh random.txt

-rw-r--r-- 1 root root 6.0M Apr  9 16:22 random.txt

loop ~ # ls -lh random.txt

-rw-r--r-- 1 root root 7.3M Apr  9 16:23 random.txt

loop ~ # ls -lh random.txt

-rw-r--r-- 1 root root 8.4M Apr  9 16:23 random.txt

loop ~ # ls -lh random.txt

-rw-r--r-- 1 root root 9.7M Apr  9 16:23 random.txt

loop ~ # ls -lh random.txt

-rw-r--r-- 1 root root 11M Apr  9 16:23 random.txt

```

Hop, 11Mo, j'arrete la génération  :Very Happy: 

Pour la suite, j'aurais peut être besoin d'une idée  :Wink: 

EDIT2: depuis tantot : 

```
shred: /dev/sdb: pass 1/3 (random)...17GiB/233GiB 7%

shred: /dev/sdb: pass 1/3 (random)...18GiB/233GiB 7%

shred: /dev/sdb: pass 1/3 (random)...19GiB/233GiB 8%

shred: /dev/sdb: pass 1/3 (random)...20GiB/233GiB 8%

^C
```

trop trop lent quoi   :Rolling Eyes: 

EDIT3: voilà le vrai problème de ma technique :

```
loop ~ # shred -n 2 -vz --random-source /root/random.txt /dev/sdb

shred: /dev/sdb: pass 1/3 (random)...

shred: /root/random.txt: end of file
```

mais qu'est-ce que c'est rapide  :Very Happy:     en 1 seconde, 10Mo déjà ^^

EDIT4: je pense que cette technique est morte pour "shred" .. peut être avec "dd"  :Smile: 

EDIT5: en script bash peut être .. une espece de "cat /root/random.txt > /dev/sdb" ... mais qui répète tjs sdb si il est vide ...   domage que je peux pas continuer avec ">>" l'écriture sur le disque  :Very Happy:   ce serait vite résolu

----------

## brubru

Salut.

Bah une simple boucle bash doit faire l'affaire, non ?

```

for i in `seq 0 10` ; do  echo $i ; done

```

compte jusqu'à dix.

tu couple ça avec dd:

```

dd if=file.random of=/dev/sdb bs=10M seek=$i

```

seek saute i blocks au début de l'écriture et un block fait 10Mo... la taille du fichier en entrée.

(voir page man)

Si tu as 250Go tu dois faire 250 * 1000 / 10 = 25000 itérations, ou 250 * 1024 / 10 = 25600 selon comment on compte   :Razz:  .

Par contre si on compte mal, on peut laisser des "trous" non ré-écrits à chaque itération...   :Wink: 

Sinon, comme je l'ai dit plus haut, mke2fs -cc / badblocks peut remplir tous les secteurs d'une partition de 0/1.

Tiens, badblocks accepte un pattern en paramètre dont un nommé 'random':

 *man badblocks wrote:*   

> 
> 
>        -t test_pattern
> 
>               Specify  a test pattern to be read (and written) to disk blocks.
> ...

 

après c'est sûrement plus long.

Bruno

EDIT:

pour générer un fichier aléatoire de 10Mo:

```

dd if=/dev/urandom of=rand count=1 bs=10M

```

Last edited by brubru on Thu Apr 09, 2009 3:56 pm; edited 1 time in total

----------

## pascuol

ouais pas bete le >> lol

un ptit script alors

```
for i in $(seq 1 25000)  do

cat random.txt

done
```

le 25000 pour arriver +/- a 250giga avec ton fichier de 10 Mo

que tu nome script

et puis tu le lance

```
sh script > /dev/sdb
```

----------

## loopx

Très bonne idée brubu, mais Pascuol t'a devancé sur ce coup la  :Smile: 

Oui car la technique de pascuol est "basique" et j'adore ca  :Very Happy: 

Le seul truc à changer dans cette technique, c'est qu'il n'y a po besoin de compter pour 250Go, car quand /dev/sdb sera plein, ben il s'arretera ... donc, la solution est :

- une boucle infinie

- un cat (dans la boucle) d'un fichier de taille quelconque (rempli précédement par 1 seul cat de urandom)

- mettre ca dans un script

- utiliser la sortie du script pour écraser le disque

- attendre que le disque soit plein 

J'ai pas testé, mais ca ne peut que fonctionner  :Wink: 

Merci  :Smile: 

EDIT:  je suis suuuuuuuuuuur qu'on peut faire ca hors script ... Juste avec une grosse ligne de commande  :Smile: 

----------

## brubru

Oui Pascuol a eu une meilleure idée !

On peut l'améliorer comme tu dit :

```

( while true ; do  cat random.txt ; done ) > /dev/sdb

```

pas besoin de script, tout en ligne de commande, (pat contre je sais pas si il y a des buffers intermédiaires qui risquent de se plaindre...)

----------

## loopx

 *brubru wrote:*   

> Oui Pascuol a eu une meilleure idée !
> 
> On peut l'améliorer comme tu dit :
> 
> ```
> ...

 

Suuuuuuuuuupêeeeeeeeeer  :Smile: 

C'est exactement à ca que je pensais  :Smile:          ce thread sera résolu quand j'aurais testé, la je saurais pas trop  :Smile: 

Merci  :Wink: 

----------

## loopx

 :Shocked:   :Shocked:   :Shocked:   :Shocked:   :Shocked: 

impressionant ... Avec cette technique, je suis passé de 1Mo/seconde à ... plus de 60Mo/seconde !!!!!!!!!!!!

60X plus rapide quand même, ca, c'est la class .. j'ai jamais atteind cette vitesse, probablement car je n'utilise aucun système de fichier  :Smile: 

La, je suis vraiment satisfait  :Smile: 

EDIT: faudra quand meme laisser ca dans un script ...  En fait, une fois que le disque est plein, il fait ca :

```
cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: write error: No space left on device

cat: ^C
```

Conclusion : proco à 100% et processus qui grimpe à mort  :Very Happy: 

Je ferais un script simple qui permet de quitter une fois que c'est plein et de prendre en paramètre un nombre de pass, voir de générer le random.txt aussi  :Smile: 

----------

