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

Kurze Frage

Leser: 1


<< >> 6 Einträge, 1 Seite
Gast Gast
 2008-07-06 15:09
#111893 #111893
Ich habe hier versucht ein kleines Skript zu schreiben an dem ich
peinlicherweise direkt gescheitert bin.

Ich wollte 2 gegebene Dateien einlesen. (salts.txt) und (worte.txt)
und mit der crypt Funktion jedes Wort in allen 4096 DES salts verschlüsseln.

Nun klappt das mit den salts zwar, aber es wird nur "blank" mit den salts ver-
schlüsselt und nicht die gegebenen Wörter aus dem worte.txt file.

In einem anderen Versuch (nur verschlüsseln mit random salts) wurde automatisch
jedes Wort mit weniger als 8 Zeichen durch "Leerzeichen" auf 8 Zeichen ergänzt.

Hat irgendjemand eine erhellende Idee?

Und ja ich bin absoluter n00b was perl programmieren angeht.
Wollte es einfach mal probieren. :-S

Danke

Dirk

Anbei das "buggy" Skript das ich zusammengemurkst habe.

oder hier zum saugen:
hxxp://rapidshare.com/files/127567327/crypt_versuch.rar.html

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
open (SALT, "salts.txt") or die $!;
my @salts = <SALT>;
close (SALT);

open (DATEI, "worte.txt") or die $!;
my @daten = <DATEI>;
close (DATEI);

foreach (@salts)
{
$salt = <@salts>;
foreach (@daten)
{
$pwd = <@daten>;
print crypt($pwd,$salt)."\n";
}
}
renee
 2008-07-06 15:30
#111894 #111894
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Lies Dir mal http://perldoc.perl.org/perlop.html#I%2FO-Operator... durch. Dann weißt Du, was Dein $salt = <@salts> macht.

Ein allgemeiner Tipp: Verwende Wiki:use strict.

Mach das mal aus Deinen for-Schleifen:

Code (perl): (dl )
1
2
3
4
5
6
7
foreach  my $salt (@salts)
{
  foreach my $pwd (@daten)
    {
      print crypt($pwd,$salt)."\n";
    }
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2008-07-06 15:32
#111895 #111895
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Achso, Du solltest auch noch chomp verwenden
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-07-06 16:07
#111896 #111896
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl
use strict;
use warnings;

open (SALT, "salts.txt") or die $!;
my @salts = <SALT>;
close (SALT);

open (DATEI, "worte.txt") or die $!;
my @daten = <DATEI>;
close (DATEI);

foreach my $salt (@salts)
{
foreach my $pwd (@daten)
{
chomp $salt;
chomp $pwd;
print crypt($pwd,$salt)."\n";
}
}


Immer wieder faszinierend wie einfach etwas geht wenn jemand weiss was er tut.

Vielen Dank Renee, das Skript tut jetzt was es soll und das um den Faktor 10000 schneller. :-?

Wenn mir jemand noch sagen kann weshalb das Teil jetzt so fliegt wäre ich komplett glücklich. :-P

Erstmal danke für die prompte Hilfe

Dirk
renee
 2008-07-06 16:22
#111897 #111897
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gast+2008-07-06 14:07:42--
Wenn mir jemand noch sagen kann weshalb das Teil jetzt so fliegt wäre ich komplett glücklich. :-P


Das Skript war vorher so langsam, weil Du den <...>-Operator verwendet hast. Dein <@salts> wird behandelt als <$salts[0] $salts[1] ...>, was wiederum ein glob-Aufruf ist. Und je nachdem wie viele Worte da drin stehen, kann das schonmal länger dauern und Du verwendest es noch zusätzlich in einer Schleife - d.h. das glob wird immer und immer wieder ausgeführt.

Übrigens kannst Du das Skript noch (etwas) schneller machen, wenn Du das chomp an eine andere Stelle packst. Jeder Aufruf einer Funktion kostet Zeit...

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

open (SALT, "salts.txt") or die $!;
my @salts = <SALT>;
close (SALT);

open (DATEI, "worte.txt") or die $!;
my @daten = <DATEI>;
close (DATEI);

chomp( @salts, @daten );

foreach my $salt (@salts)
{
foreach my $pwd (@daten)
{
print crypt($pwd,$salt)."\n";
}
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-07-06 16:37
#111898 #111898
danke dir für die Hilfe

habe es geändert. :-)

Schönen Sonntag noch

Dirk
<< >> 6 Einträge, 1 Seite



View all threads created 2008-07-06 15:09.