Het linux DD commando

Het dd commando in Linux is erg veelzijdig, je kunt het op verschillende manieren gebruiken

  • Onder meer het maken van een exacte kopie van een harde schijf als backup,
  • het overschrijven van alle bestanden op een schijf om deze onleesbaar te maken
  • en een ISO bestand naar DVD schrijven behoren tot de mogelijkheden

Geheel op eigen risico

Ik aanvaard geen enkele aansprakelijkheid voor typfouten of andere fouten in deze tekst danwel het verkeerd gebruik van dit commando! Het dd commando is erg krachtig en bij verkeerd gebruik kan je volledige harde schijf gewoon gewist worden dus zorg altijd voor een goede back-up van je schijf als je niet de intentie hebt om de schijf onherstelbaar leeg te maken. De hierna genoemde commando’s gebruik ik zelf.

Maak een bestand met enkel nullen

Ik heb dit commando gebruikt om alle lege ruimte op mijn harde schijf te overschrijven met nullen.Zo wordt lastig terug te halen wat er op de lege delen van de harde schijf stond. Zo heb je de beveiliging van informatie zelf in de hand.

 Let op!  Als je een SSD meerdere keren overschrijft dan gaat dat ten koste van de levensduur van de SSD schijf! 

Een SSD schijf kun je beter op een andere manier veilig leegmaken. Dit kan met ATA Secure Erase. Dit geeft een korte voltagepiek aan de SSD waardoor de schijf wordt gereset naar de begininstellingen. Dit kan alleen met speciale software van de fabrikant van de schijf, bij Samsung is dat Samsung Magician.

 

Ik heb kopieën van dit bestand (en ik heb ook nog een set kleinere bestanden gemaakt van 64MB, 1MB en 1KB ). Alle bestanden op USB disk gezet en naar de harde schijf gekopieerd. Vervolgens heb ik steeds kopieën gemaakt van de bestanden tot de harde schijf helemaal vol was. Met een beetje rekenen lukte dat.

$ dd if=/dev/zero of=e:\output.dat bs=500M count=1

Dit commando doet het volgende: er wordt een bestand gevuld met nullen van 500 MB aangemaakt met de naam “e:\output.dat”. Bij het aanmaken van dit soort bestanden kwam ik er achter dat een bestand met nullen aanzienlijk sneller werd gemaakt dan een bestand gevuld met random getallen, aan deze opdracht kwam maar geen einde:

$ dd if=/dev/random of=e:\output.dat bs=500M count=1

Later las ik dat dit komt omdat de random getallen uit de Entropy Pool van de PC worden gehaald en dat tijdens het aanmaken van het bestand telkens moet worden gewacht tot de pool weer gevuld is. Logisch, maar ik had zo’n groot verschil eigenlijk niet verwacht. De reden van de traagheid is dat deze entropy pool gebruik maakt van toetsenbord aanslagen, harde schijfevents, systeem interrupts en muisbewegingen om voldoende entropie te krijgen. Je kunt in dit geval beter gebruik maken van het commando:

 $ dd if=/dev/urandom of=e:\output.dat bs=500M count=1

Dit werkt véél sneller, nadeel is echter dat de de entropie minder groot is, voor het gebruikte doel is de kwaliteit van de random generator hoog genoeg aldus het best gewaardeerde antwoord op superuser.com.

Opmerkingen over de gebruikte methode van overschrijven

Achteraf is er nogal wat aan te merken op deze methode, wordt echt elke bit vrije ruimte wel overschreven? Dat is alleen zo als elk cluster van 4KB in zijn geheel wordt volgeschreven op mijn NTFS schijf. Verder is het afhankelijk van het gebruikte bestandssysteem (FAT, NTSF, EXT4, HFS+, enz.). Bij SSD schijven wordt gezegd dat een schijf eigenlijk wat groter is dan het opgegeven formaat en dat bepaalde delen van de schrijf niet elke keer beschikbaar zijn, zelfs als die ruimte leeg is. Sommige delen kunnen dus niet goed gewist worden als dit inderdaad waar is.

Dit wissen gaat een stuk eenvoudiger met CCleaner, gebruik Drive Wiper in menu Tools. Maar het programma shred werkt ook als je Linux gebruikt.

Overschrijf alle informatie op een schijf door nullen

Met dit commando wordt de hele harde schijf met de naam sda (/dev/sda is de linux naam van de schijf) overschreven met nullen. Ook de partitie-informatie wordt overschreven dus alle partities op de schijf met alle informatie erop zijn na afloop weg!

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

Een enkele partitie, in dit voorbeeld met de naam sda1, overschrijf je als volgt met nullen:

$ dd if=/dev/zero of=/dev/sda1

Shred commando

In plaats van de dd kan ook het commando shred gebruikt worden om bestanden te vernietigen. Shred is veel sneller maar kan geen bestanden vernietigen die al verwijderd zijn. Let op! Een ander groter nadeel van shred is dat bij een groot aantal bestandssystemen niet gegarandeerd kan worden dat de bestanden of fragmenten ervan vernietigd worden. Dit geldt in ieder geval voor bestandsytemen als JFS, ReiserFS, XFS, Ext3,RAID-gebaseerde bestand systemen, NFS, enz. Zie verder de help file van shred voor meer informatie. Meer informatie ook op Wikipedia.

Andere manieren

Een SSD schijf meerdere keren overschrijven is geen goed idee, wat wel een slimme methode is, is de hele disk versleutelen met Truecrypt, Veracrypt of desnoods Bitlocker. MacOS heeft FileVault aan boord. Truecrypt zou onveilig zijn maar dit is zelfs in een audit nooit aangetoond.