![]() |
|< 1 2 3 >| | ![]() |
24 Einträge, 3 Seiten |
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 31 32 33 34 35 36 37 38 39 40 41 42
# Laden des Moduls "Digest::MD5" # bedenke, das das "::" eine Pfadangabe sein kann und im dem meisten fällen auch ist. # das Modul befindet sich also ungefähr hier: # /usr/lib/perl/5.10/Digest/MD5.pm # alles vor "Digest" kann variieren, je nach Betriebssystem/Distribution oder Art der Installation. # das ".pm" identifiziert es als PerlModul use Digest::MD5; # Zuweisung zweier Variablen # denke dringend darüber nach die Module # "strict" und "warnings" # zu verwenden, da sie dir helfen Fehler in Scripten zu zu finden # zwar zwingen sie dich ein "exakteres" Perl zu schreiben, # dafür findest du Fehler, (z.B Schreibfehler) viel leichter $pass= "geheimesPasswort"; $nick= "Ichbins"; # das Erzeugt ein Objekt, aus der Klasse "Digest::MD5", # welches auch das Modul ist. # Dabei werden im Objekt einige Variablen erzeugt # und auf einen definierten Wert gesetzt. # unter anderem auch eine Variable, # die den zu hashenden String aufnehmen wird. $md5 = Digest::MD5->new; # Das fügt der Variable im Objekt (die oben im Objekt als leerer String initialisiert wurde) # den String "Ichbins\x000geheimesPasswort" hinzu # das ist gleich bedeutend zu: # $md5 -> add($nick); # $md5 -> add("\0"); # $md5 -> add($pass); # oder # $md5 -> add("Ichbins"); # $md5 -> add("\0"); # $md5 -> add("geheimesPasswort"); # Das "\0" würde binär als "00000000" dargestellt # Das "I" z.B. würde binär als "01001001" dargestellt $md5 -> add("$nick\0$pass"); # die MD5-Summe erzeugen # und als Hexadezimal Kodierter String in "$digest" schreiben $digest = $md5->hexdigest;
Gast+2008-11-07 20:19:07--mit nullbyte gelingt es mir allerdings nicht es nachzubauen
welches Zeichen erzeugt das nullbyte denn zwischen $nick und $pass wenn es vom string abgearbeitet wird??
$nulbyte="\0"
$nulbyte="\x00"
5c4b9e0bf6092b291ddb71c77c016392
Ichbins\x000geheimesPasswort
192bb26532e29d7e06df57f35ef0496c
Ichbins00000000geheimesPasswort
48d9162850e83193d2dd42d0cca64521
Ichbins\00geheimesPasswort
a434250cef9e8ab12eced596086b363e
Gast+2008-11-07 20:58:41--...
oder ich kapier nicht welches Zeichen (oder welche Zeichen) das Nullbyte zwischen den Variablen erzeugt.
topeg+2008-11-07 20:37:42--Aber die einfachste Variante ist wohl:
Code (perl): (dl )$nulbyte="\0"
Das "\" vor der Null sagt perl, dass das nachfolgende Zeichen eine besondere Bedeutung hat. In diesem Fall wird von perl die Null als Befehl ein Nullbyte zu erzeugen erkannt.
Code (perl): (dl )$nulbyte="\x00"
Das "x" sagt perl, dass die beiden nachfolgen Zeichen als Hexadezimaler Wert binär dargestellt werden sollen. Bei "00" ist das halt das Nullbyte.
1 2 3 4 5
my $nick = "adam"; my $pass = "eva"; my $string = "$nick\0$pass"; # oder my $string2 = "$nick\x00$pass";
Gast+2008-11-07 20:58:41--Code: (dl )Ichbins\x000geheimesPasswort
print "\x000"
Gast+2008-11-07 20:58:41--Code: (dl )Ichbins00000000geheimesPasswort
Gast+2008-11-07 20:58:41--Code: (dl )Ichbins\00geheimesPasswort
Gast+2008-11-07 20:58:41--Das passt doch aber alles nicht zu dem von den String erzeugten hash
5c4b9e0bf6092b291ddb71c77c016392
Ichbins\00geheimesPasswort
01001001.01100011.01101000.01100010.01101001.01101110.01110011.00000000.01100111.01100101.01101000.01100101.01101001.01101101.01100101.01110011.01010000.01100001.01110011.01110011.01110111.01101111.01110010.01110100
49.63.68.62.69.6e.73.00.67.65.68.65.69.6d.65.73.50.61.73.73.77.6f.72.74
73.99.104.98.105.110.115.0.103.101.104.101.105.109.101.115.80.97.115.115.119.111.114.116
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44
#!/usr/bin/perl use strict; use warnings; use Digest::MD5; my $pass= "geheimesPasswort"; my $nick= "Ichbins"; my $md5 = Digest::MD5->new; $md5 -> add("$nick\0$pass"); my $digest = $md5->hexdigest; print "Digest is $digest\n"; $md5 = Digest::MD5->new; $md5 -> add("Ichbins\0geheimesPasswort"); $digest = $md5->hexdigest; print "Digest is $digest\n"; $md5 = Digest::MD5->new; $md5 -> add($nick); $md5 -> add("\0"); $md5 -> add($pass); $digest = $md5->hexdigest; print "Digest is $digest\n"; $md5 = Digest::MD5->new; $md5 -> add("$nick\00$pass"); $digest = $md5->hexdigest; print "Digest is $digest\n"; $md5 = Digest::MD5->new; $md5 -> add("Ichbins\00geheimesPasswort"); $digest = $md5->hexdigest; print "Digest is $digest\n"; $md5 = Digest::MD5->new; $md5 -> add("$nick\x00$pass"); $digest = $md5->hexdigest; print "Digest is $digest\n"; $md5 = Digest::MD5->new; $md5 -> add("Ichbins\x00geheimesPasswort"); $digest = $md5->hexdigest; print "Digest is $digest\n";
1
2
3
4
5
6
7
Digest is 5c4b9e0bf6092b291ddb71c77c016392
Digest is 5c4b9e0bf6092b291ddb71c77c016392
Digest is 5c4b9e0bf6092b291ddb71c77c016392
Digest is 5c4b9e0bf6092b291ddb71c77c016392
Digest is 5c4b9e0bf6092b291ddb71c77c016392
Digest is 5c4b9e0bf6092b291ddb71c77c016392
Digest is 5c4b9e0bf6092b291ddb71c77c016392
![]() |
|< 1 2 3 >| | ![]() |
24 Einträge, 3 Seiten |