Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6894[/thread]

mit Perl Festplatte nullen



<< >> 5 Einträge, 1 Seite
Froschpopo
 2005-04-15 10:53
#53823 #53823
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
gibts ne Möglichkeit mit Perl ne Festplatte zu nullen? Also einfach alles mit nullen überschreiben, danach müsste sie ja dann theoretisch 0 Bytes groß sein oder?
murphy
 2005-04-15 11:29
#53824 #53824
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Um auf einen Datenträger direkt zuzugreifen würdest du auf einem UNIX System einfach die entsprechende Gerätedatei öffnen und darin lesen oder schreiben -- immer vorausgesetzt du hast die nötigen Rechte dazu.

Also zum Beispiel
Code (perl): (dl )
1
2
3
4
open HDA, '</dev/hda';

my $mbr;
read HDA, $mbr, 512;

um den Master Boot Record der ersten Festplatte auszulesen.

Die physische Größe eines Datenträgers hängt aber logischerweise nicht von seinem Dateninhalt ab!
When C++ is your hammer, every problem looks like your thumb.
Crian
 2005-04-15 12:50
#53825 #53825
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Um (den Rest) einer Platte mit Zufallsdaten zu füllen (das ist besser als Nullen, insbesondere wenn man es mehrfach nacheinander macht), hab ich mal (mehr aus Spaß) dieses Programm geschireben:

mach_voll.pl

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl
use strict;
use warnings;


seek DATA, 0, 0;

chomp (my @array = <DATA>);
my @data = grep {length} map {s~;$~~;$_} map {split /\s+/} @array;

print "'$_'\n" for @data;

open O, '>g:/muell.pl' or die $!;
WHILE: while (1) {
print O ' ' x (3 + 4 * int rand 3) or last WHILE;
for (0 .. random()) {
unless (print O ' ', $data[rand @data]) {
last WHILE;
}
}
print O ";\n" or last WHILE;
}
close O or warn $!;


sub random {
return 3 + int rand 5;
}

_#_DATA_#_


(die '#' aus der DATA-Zeile muss man natürlich entfernen)

Du kannst ja mal einen Blick in die Datei werfen, die es erzeugt...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
kabel
 2005-04-17 20:43
#53826 #53826
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
[quote=Froschpopo,15.04.2005, 08:53]gibts ne Möglichkeit mit Perl ne Festplatte zu nullen? Also einfach alles mit nullen überschreiben, danach müsste sie ja dann theoretisch 0 Bytes groß sein oder?[/quote]

das verstehe ich nicht. eine reguläre datei kannst du truncate() n, aber spezialdateien haben eine andere semantik.
-- stefan
Crian
 2005-04-18 14:59
#53827 #53827
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Ich schätz mal, er meint sie nach dem Leeren so zu überschreiben, dass man die alten Inhalte nicht wieder herstellen kann.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 5 Einträge, 1 Seite



View all threads created 2005-04-15 10:53.