|
| perl går i stå, indtil det "vækkes" igen ? Fra : Simon... |
Dato : 29-03-03 12:39 |
|
hej,
jeg har fået en udfordring om at knække en htaccess beskyttelse, og har fået
..htpasswd filen, så udfordringen ligger i en bruteforce af/med crypt.
men mit program staller når det har kørt lidt, hvad er det jeg gør galt ?
se fx her:
Try:2236000000, Time: 37372 : "bo6teE"
Try:2237000000, Time: 37389 : "bptbF"
Try:2238000000, Time: 37405 : "bpds9G"
Try:2239000000, Time: 37422 : "bphs6H"
Try:2240000000, Time: 37439 : "bpls3I"
Try:2241000000, Time: 37456 : "bpps0J"
Try:2242000000, Time: 37473 : "bptsXK"
Try:2243000000, Time: 37492 : "bpxsUL"
Try:2244000000, Time: 37520 : "bpBsRM"
Try:2245000000, Time: 95524 : "bpFsON"
Try:2246000000, Time: 95540 : "bpJsLO"
Try:2247000000, Time: 95557 : "bpNsIP"
Try:2248000000, Time: 95574 : "bpRsFQ"
Try:2249000000, Time: 100360 : "bpVsCR"
Try:2250000000, Time: 100378 : "bpZszS"
Try:2251000000, Time: 102019 : "bp3swT"
efter programmet har kørt 37520 sekunder går det i stå, indtil jeg trykker
på enter ? hvorefter det så kører videre uden problemer ?
oprindeligt troede jeg programmet kørte uden at skrive til dosprompten før
jeg "vækkede" det, men det er ikke tilfældet kan jeg se
her, da man kan se at programmet næsten ingen fremskridt har gjort på de ca
60.000 sekunder det har stået for sig selv. Samme problem kan ses igen i
tiden 95574 hvor programmet igen er gået istå indtil jeg opdagede det i
tiden 100360... ?
hvad er det jeg gør galt her ?`
jeg har ville poste programmet i dk.binaer, men den synes at være væk hos
tdc, så istedet er det her:
http://www.guden.dk/projects/bruteforce/brute.txt
jeg kører på en win2000 pro platform, og har testet programmet på både min
XP1800 og min P4 2.4... samme problem, forskellige steder (hver gang) men
samme problem.. :(
håber i kan hjælpe eller kaste lys over hvorfor det sker.
tak
mvh.Simon
| |
Adam Sjøgren (29-03-2003)
| Kommentar Fra : Adam Sjøgren |
Dato : 29-03-03 14:27 |
|
On Sat, 29 Mar 2003 12:38:38 +0100, Simon wrote:
> men mit program staller når det har kørt lidt, hvad er det jeg gør galt ?
[...]
> http://www.guden.dk/projects/bruteforce/brute.txt
Det allerførste du bør gøre, er at rette programmet, så det rent
faktisk opdager når det finder et korrekt kodeord:
--- brute.txt-orig 2003-03-29 12:31:19.000000000 +0100
+++ brute.txt 2003-03-29 14:25:01.000000000 +0100
@@ -29,6 +29,7 @@
#split the line up in username and encrypted password
+ chomp $line;
($username, $encpass) = split(/:/, $line);
for ($try1_c = 0; $try1_c < $max && $found == 0; $try1_c++)
Mvh.
--
"Hvilken sanning, Måns, är sann?" Adam Sjøgren
asjo@koldfront.dk
| |
Simon... (30-03-2003)
| Kommentar Fra : Simon... |
Dato : 30-03-03 07:26 |
|
> Det allerførste du bør gøre, er at rette programmet, så det rent
> faktisk opdager når det finder et korrekt kodeord:
>
> #split the line up in username and encrypted password
> + chomp $line;
> ($username, $encpass) = split(/:/, $line);
>
> for ($try1_c = 0; $try1_c < $max && $found == 0; $try1_c++)
Tak for svarene allesammen, men hvada ændrer det at jeg bruger den "chomp"
på linien først ?
-jeg tænker i forhold til om den opdager et password ?
tak
mvh.Simon
| |
Simon... (30-03-2003)
| Kommentar Fra : Simon... |
Dato : 30-03-03 07:44 |
|
> Tak for svarene allesammen, men hvada ændrer det at jeg bruger den "chomp"
> på linien først ?
> -jeg tænker i forhold til om den opdager et password ?
er opdaget - tak !
-Simon
| |
Adam Sjøgren (29-03-2003)
| Kommentar Fra : Adam Sjøgren |
Dato : 29-03-03 16:19 |
|
On Sat, 29 Mar 2003 12:38:38 +0100, Simon wrote:
> http://www.guden.dk/projects/bruteforce/brute.txt
Jeg har prøvet at lave en alternativ udgave, der forhåbentlig gør det
samme som dit.
Dog angiver man inddatafilen på kommando-linien, uddata går til
stdout, det opdager når det gætter på det rigtige kodeord og den
maksimale længde af kodeord det skal gætte på kan ændres i en variabel
(konsekvenserne af det sidste gør at det er lidt langsommere end
dit[1]).
Går det også i stå på din maskine?
Jeg har desuden lavet det så det angiver hvor stort stort søgerummet
er og hvor mange år det ca. skal bruge for at søge alle muligheder
igennem efter det aktulle kodeord, med den hastighed det nu kører.
Jeg tror du skal håbe på at de kodeord du gerne vil finde med denne
'metode' er korte. Hvis du vil spare nogle hundrede tusinde år i
køretid kan det måske hjælpe at bruge et andet programmeringssprog.
Mvh.
Adam
Testkørsel:
$ cat .htpasswd
test:qxBNZJOrBbS0s
test2:ccRXdsz9VS.TI
test3:Ug4CFfH44t3/g
$ ./brute .htpasswd
Password for 'test' found, clear text: 'yW'
100000/9.84930291881791e+17 4s/1249277.3869632y ylr
200000/9.84930291881791e+17 9s/1405437.06033361y XxK
Password for 'test2' found, clear text: 'aaaa'
Password for 'test3' found, clear text: '99'
$ cat ./brute
#!/usr/bin/perl
# brute - brute-force attack on htpasswd files with crypt()'ed passwords.
# Takes one argument: the name of the .htpasswd-file.
use strict;
use warnings;
my @alpha=('', 'a' .. 'z', 'A' .. 'Z', '0' .. '9');
my $lastalpha=scalar(@alpha)-1;
my $maxlen=10;
my $i;
my $total=scalar(@alpha)**$maxlen;
my $start;
while (<>) {
chomp;
my ($username, $crypt)=split /:/;
my @pos;
map { push @pos, 0 } (1 .. $maxlen);
my $found;
my $done=0;
$i=0;
$start=time();
while (!$found) {
$found=try_word(\@pos, $crypt);
$done+=next_word(\@pos);
last if ($done>1);
}
print "Password for '$username' found, clear text: '$found'\n" if ($found);
}
sub try_word {
my ($pos, $crypt)=@_;
my $guess=join "", map { $alpha[$_] } @$pos;
$i++;
if ($i%100000==0) {
my $elapsed=time()-$start;
my $fullsearcheta=(($total/$i)*$elapsed)/(24*60*60*365);
print STDERR "$i/$total ${elapsed}s/${fullsearcheta}y $guess\n";
}
$crypt eq crypt($guess, $crypt) ? $guess : '';
}
sub next_word {
my ($pos)=@_;
my $i;
for ($i=$maxlen-1; $i>=0; $i--) {
if ($pos->[$i]<$lastalpha) {
$pos->[$i]++;
last;
}
$pos->[$i]=0;
}
return (($i==0 and $pos->[0]==1) ? 1 : 0);
}
$
[1] Om det er 1.4 millioner år eller 1.1 million det tager gør nok
ikke den store forskel.
--
"Hvilken sanning, Måns, är sann?" Adam Sjøgren
asjo@koldfront.dk
| |
Morten Guldager (29-03-2003)
| Kommentar Fra : Morten Guldager |
Dato : 29-03-03 22:33 |
|
Sat, 29 Mar 2003 at 15:19 GMT Adam Sjøgren wrote
> On Sat, 29 Mar 2003 12:38:38 +0100, Simon wrote:
>
>> http://www.guden.dk/projects/bruteforce/brute.txt
>
> Jeg har prøvet at lave en alternativ udgave, der forhåbentlig gør det
> samme som dit.
Det har jeg også. Læser htpasswd på stdin og skriver resultater på stdout.
Som det kan ses kan jeg godt lide rekursiv kode....
/Morten
- - -
#!/usr/bin/perl -w
use strict;
my $max_pw_len = 4;
my @tegn = ('a'..'z', 'A'..'Z', '0'..'9');
my $count = 0;
while (<>)
{
next unless /^(\S+):(\S+)/;
my ($user,$chiper) = ($1, $2);
warn "\nSøger efter $user...\n";
my $res = r($chiper, '');
print "Fandt $user : >>$res<<\n" if $res;
}
warn "\n";
sub r
{
my ($crypt_pw, $try) = @_;
print STDERR "\r$count" unless ++$count % 1000;
return $try if $crypt_pw eq crypt($try, $crypt_pw);
return '' if length($try) == $max_pw_len;
foreach my $c (@tegn)
{
my $res = r($crypt_pw, $try . $c);
return $res if $res;
}
return '';
}
| |
Adam Sjøgren (29-03-2003)
| Kommentar Fra : Adam Sjøgren |
Dato : 29-03-03 22:58 |
|
On Sat, 29 Mar 2003 21:32:46 GMT, Morten Guldager wrote:
> Som det kan ses kan jeg godt lide rekursiv kode....
(Jeg tænkte at det måske ville være uheldigt når det skal køre i så
mange år; bliver funktionskalds-stakken stor?)
Dit script løber søgerummet igennem i en anden rækkefølge end det
oprindelige script.
Det siger:
""
"a"
"b"
"c"
"d"
...
"aa"
"ab"
...
Mens dit siger:
""
"a"
"aa"
"aaa"
"aaaa"
...
Hvilket gør det svært hurtigt at teste om man betaler for at lave det
rekursivt eller ej.
(Du bør måske nulstille $count hver gang du starter forfra?
Mvh.
--
"Hvilken sanning, Måns, är sann?" Adam Sjøgren
asjo@koldfront.dk
| |
Morten Guldager (30-03-2003)
| Kommentar Fra : Morten Guldager |
Dato : 30-03-03 08:36 |
|
Sat, 29 Mar 2003 at 21:57 GMT Adam Sjøgren wrote
> On Sat, 29 Mar 2003 21:32:46 GMT, Morten Guldager wrote:
>
>> Som det kan ses kan jeg godt lide rekursiv kode....
>
> (Jeg tænkte at det måske ville være uheldigt når det skal køre i så
> mange år; bliver funktionskalds-stakken stor?)
Næ, jeg tror jo ikke det kommer til at fylde mere af den grund. Hvis perl
eller OS da ikke leaker.
> Dit script løber søgerummet igennem i en anden rækkefølge end det
> oprindelige script.
Ja, det er helt rigtigt, men det kommer da stadig alle kombinationerne igennem.
> Hvilket gør det svært hurtigt at teste om man betaler for at lave det
> rekursivt eller ej.
Hmm, den fangede jeg ikke. Forklar lige en gang mere,
> (Du bør måske nulstille $count hver gang du starter forfra?
Tjo, min tanke med count var faktisk en overordnet tæller der blot talte det
samlede antal crypts der havde været forsøgt. (min initielle htpasswd fil
havde kunen enkelt linje)
På min 600MHz PIII kasse tog det 42 minutter at knække 4 passwords
(MGJ plus dine 3). Søgedybden var 4 tegn.
/Morten
| |
Morten Guldager (30-03-2003)
| Kommentar Fra : Morten Guldager |
Dato : 30-03-03 14:49 |
|
Sat, 29 Mar 2003 at 15:19 GMT Adam Sjøgren wrote
> On Sat, 29 Mar 2003 12:38:38 +0100, Simon wrote:
>
>> http://www.guden.dk/projects/bruteforce/brute.txt
>
> Jeg har prøvet at lave en alternativ udgave, der forhåbentlig gør det
> samme som dit.
Lavede lige et lille forføg med dit program.
Satte @alfa til noget overskueligt og maxlen til 3.
my @alpha=('', 'a' .. 'b');
my $maxlen=3;
Så printede jeg guess lige før du forsøger en crypt.
Her er toppen af de forsøg den laver:
guess =
guess = a
guess = b
guess = a
guess = aa
guess = ab
guess = b
guess = ba
guess = bb
guess = a
guess = aa
guess = ab
guess = aa
guess = aaa
guess = aab
guess = ab
guess = aba
bemærk de mange gengangere.
Så hvis ikke jeg har klokket i mit forsøg har du klokket i koden
/Morten
| |
Adam Sjøgren (30-03-2003)
| Kommentar Fra : Adam Sjøgren |
Dato : 30-03-03 15:20 |
|
On Sun, 30 Mar 2003 13:45:17 GMT, Morten Guldager wrote:
> Måske ikke, det er dog ofte set at rekursiv kode søge i bund meget hurtigt.
> Det er jo også tilfældet med mit program.
> Men tilgængæld slipper jeg for en hulens masse array-lookups. (og concats)
Det kunne være sjovt at sammenligne, hvis dit program lavede samme
gennemløb som det oprindelige.
Mvh.
--
"Hvilken sanning, Måns, är sann?" Adam Sjøgren
asjo@koldfront.dk
| |
Morten Guldager (30-03-2003)
| Kommentar Fra : Morten Guldager |
Dato : 30-03-03 15:35 |
|
Sun, 30 Mar 2003 at 14:19 GMT Adam Sjøgren wrote
> On Sun, 30 Mar 2003 13:45:17 GMT, Morten Guldager wrote:
>
>> Måske ikke, det er dog ofte set at rekursiv kode søge i bund meget hurtigt.
>> Det er jo også tilfældet med mit program.
>
>> Men tilgængæld slipper jeg for en hulens masse array-lookups. (og concats)
>
> Det kunne være sjovt at sammenligne, hvis dit program lavede samme
> gennemløb som det oprindelige.
Hmm, jeg har faktisk ikke prøve det oprindelige program. Men her er en
version der ikke prøver en kombination mere end en gang, og som prøver
korte ord først. Jeg er ikke for stolt af implementationen, men det
virker ok hurtigt.
#!/usr/bin/perl -w
use strict;
my $max_dybde = 4;
my @tegn = ('a'..'z', 'A'..'Z', '0'..'9');
my $count = 0;
while (<>)
{
next unless /^(\S+):(\S+)/;
my ($user,$chiper) = ($1, $2);
warn "\nSøger efter $user...\n";
my $res = soeg($chiper, '');
warn "\nFandt $user : >>$res<<\n" if $res;
}
warn "antal crypts = $count\n";
sub soeg
{
my ($crypt_pw, $try) = @_;
for (my $dybde = 0; $dybde <= $max_dybde; $dybde++)
{
my $res = r($crypt_pw, '', $dybde);
return $res if $res;
}
}
sub r
{
my ($crypt_pw, $try, $dybde) = @_;
unless ($dybde)
{
print STDERR "\r$count" unless ++$count % 10000;
return $crypt_pw eq crypt($try, $crypt_pw) ? $try : '';
}
foreach my $c (@tegn)
{
my $res = r($crypt_pw, $try . $c, $dybde - 1);
return $res if $res;
}
return '';
}
og min testfil ser sådan her ud:
mogul:P/1zT2LbmiyLg
test:qxBNZJOrBbS0s
test2:ccRXdsz9VS.TI
test3:Ug4CFfH44t3/g
Det tog 31 sekunder og kostede 399742 crypt kald.
Der kan findes en anelse ved at lave crypt_pw/chiper om til en
global variabel. Men det er marginalt.
/Morten
| |
Adam Sjøgren (30-03-2003)
| Kommentar Fra : Adam Sjøgren |
Dato : 30-03-03 15:21 |
|
On Sun, 30 Mar 2003 13:48:40 GMT, Morten Guldager wrote:
> guess =
> guess = a
> guess = b
> guess = a
Ja, det prøver alle kombinationer af bogstaver på alle pladser, og et
af "bogstaverne" er ''; intet bogstav. Derfor får man de samme
kombinationer nogle gange, da "a" og "ingenting+a" og
"ingenting+ingenting+a", "a+ingenting" osv. "er" det samme.
Om vi løber 63^10 muligheder igennem eller 62^10+62^9+ ... + 62^0 gør
selvfølglig en forskel (13% eller noget i den stil), men vi ligger
alligevel på over 1 million år for at løbe det hele igennem.
> Så hvis ikke jeg har klokket i mit forsøg har du klokket i koden
Jeg gik ud fra det var by design (at det oprindelige program gør, som
det gør).
Mvh.
--
"Hvilken sanning, Måns, är sann?" Adam Sjøgren
asjo@koldfront.dk
| |
Adam Sjøgren (30-03-2003)
| Kommentar Fra : Adam Sjøgren |
Dato : 30-03-03 15:28 |
|
On Sun, 30 Mar 2003 13:48:40 GMT, Morten Guldager wrote:
> guess =
> guess = a
> guess = b
> guess = a
Ja, det prøver alle kombinationer af bogstaver på alle pladser, og et
af "bogstaverne" er ''; intet bogstav. Derfor får man de samme
kombinationer nogle gange, da "a" og "ingenting+a" og
"ingenting+ingenting+a", "a+ingenting" osv. "er" det samme.
Om vi løber 63^10 muligheder igennem eller 62^10+62^9+ ... + 62^0 gør
selvfølglig en forskel (13% eller noget i den stil), men vi ligger
alligevel på over 1 million år for at løbe det hele igennem.
> Så hvis ikke jeg har klokket i mit forsøg har du klokket i koden
Mit lille forsøg implementerer (med mindre jeg har lavet en fejl)
præcis samme metode som det oprindelige script, så den oprindelige
poster kan prøve om det program også går i stå.
Dit program implementerer en anden metode (som løber søgerummet
igennem præcis en gang (i.e. er bedre), men til gengæld i en anden
rækkefølge), hvorfor det ikke rigtigt er sammenligneligt med det
oprindelige program.
Mvh.
--
"Hvilken sanning, Måns, är sann?" Adam Sjøgren
asjo@koldfront.dk
| |
Adam Sjøgren (30-03-2003)
| Kommentar Fra : Adam Sjøgren |
Dato : 30-03-03 16:02 |
|
On Sun, 30 Mar 2003 14:35:13 GMT, Morten Guldager wrote:
> Hmm, jeg har faktisk ikke prøve det oprindelige program. Men her er en
> version der ikke prøver en kombination mere end en gang, og som prøver
> korte ord først. Jeg er ikke for stolt af implementationen, men det
> virker ok hurtigt.
Ja, det er væsentligt hurtigere end udgaven der konstruerer strengen
forfra hver gang (og, selvfølgelig, dybde-først gennemløbet, grundet
vores test-passwords).
I øvrigt undgås gencheck af samme ord i mit program ved at ændre en
enkelt linie:
--- bin/brute 2003-03-30 16:50:46.000000000 +0200
+++ bin/brute2 2003-03-30 16:58:25.000000000 +0200
@@ -63,7 +63,7 @@
$pos->[$i]++;
last;
}
- $pos->[$i]=0;
+ $pos->[$i]=1;
}
Så får jeg samme antal kald til crypt() som i dit, og stadig
væsentligt dårligere performance (15 vs. 10 sekunder).
Kan vi koge mere suppe på den pølsepind?
Mvh.
--
"Hvilken sanning, Måns, är sann?" Adam Sjøgren
asjo@koldfront.dk
| |
Morten Guldager (30-03-2003)
| Kommentar Fra : Morten Guldager |
Dato : 30-03-03 17:25 |
|
Sun, 30 Mar 2003 at 15:01 GMT Adam Sjøgren wrote
>
> Så får jeg samme antal kald til crypt() som i dit, og stadig
> væsentligt dårligere performance (15 vs. 10 sekunder).
>
> Kan vi koge mere suppe på den pølsepind?
Næ, men vi kom da lidt perl optimering i gennem.
Og en hel del almen optimering...
/Morten
| |
Adam Sjøgren (30-03-2003)
| Kommentar Fra : Adam Sjøgren |
Dato : 30-03-03 13:54 |
|
On Sun, 30 Mar 2003 07:36:27 GMT, Morten Guldager wrote:
>> Dit script løber søgerummet igennem i en anden rækkefølge end det
>> oprindelige script.
> Ja, det er helt rigtigt, men det kommer da stadig alle
> kombinationerne igennem.
Mmmh.
>> Hvilket gør det svært hurtigt at teste om man betaler for at lave
>> det rekursivt eller ej.
> Hmm, den fangede jeg ikke. Forklar lige en gang mere,
Hvis jeg måler tid på det oprindelige script og sammenholder det med
en tidsmåling på et alternativt script, så vælger jeg et kodeord jeg
ved findes inden for en overskuelig brøkdel af et år. Hvis rækkefølgen
er en anden, er det mere besværligt at finde et kodeord der tager lige
så mange trin, før det findes.
Kodeordet "yW" findes i den oprindelige gennemløbsrækkefølge hurtigt,
mens den i den rækkefølge du brugte findes langt senere, f.ex.
> På min 600MHz PIII kasse tog det 42 minutter at knække 4 passwords
> (MGJ plus dine 3). Søgedybden var 4 tegn.
Dvs. det fjerde kodeord var "MGJ"?
Det tog 15 sekunder med den oprindelige gennemløbsrækkefølge (og
højest 4 tegn) på min maskine:
$ time brute httest
Password for 'test' found, clear text: 'yW'
100000/15752961 4s/1.99809246575342e-05y ylr
200000/15752961 7s/1.74833090753425e-05y XxK
Password for 'test2' found, clear text: 'aaaa'
Password for 'test3' found, clear text: '99'
100000/15752961 4s/1.99809246575342e-05y ylr
Password for 'test4' found, clear text: 'MGJ'
real 0m15.261s
user 0m15.220s
sys 0m0.010s
$
Med dit program på samme maskine, 13 minutter:
$ time brute-mg httest
Søger efter test...
6001000Fandt test : >>yW<<
Søger efter test2...
Fandt test2 : >>aaaa<<
Søger efter test3...
21015000Fandt test3 : >>99<<
Søger efter test4...
30348000Fandt test4 : >>MGJ<<
real 12m56.248s
user 12m32.000s
sys 0m0.550s
$
Men det har intet med rekursiv vs. ikke-rekursiv at gøre, det er fordi
den oprindelige gennemløbsrækkefølge først prøver alle de korte
kombinationer, og derfor hurtigt finder korte kodeord.
(Med højest 4 tegn udelukker du det meste af søgerummet, som det
fremgår at mit programs estimat af hvor mange år det tager at komme
hele rummet igennem, ovenfor).
Nå, det har vist ikke meget med perl at gøre, efterhånden...
Mvh.
--
"Hvilken sanning, Måns, är sann?" Adam Sjøgren
asjo@koldfront.dk
| |
Morten Guldager (30-03-2003)
| Kommentar Fra : Morten Guldager |
Dato : 30-03-03 14:45 |
|
Sun, 30 Mar 2003 at 12:53 GMT Adam Sjøgren wrote
>
> Men det har intet med rekursiv vs. ikke-rekursiv at gøre, det er fordi
> den oprindelige gennemløbsrækkefølge først prøver alle de korte
> kombinationer, og derfor hurtigt finder korte kodeord.
Måske ikke, det er dog ofte set at rekursiv kode søge i bund meget hurtigt.
Det er jo også tilfældet med mit program.
Men tilgængæld slipper jeg for en hulens masse array-lookups. (og concats)
/Morten
| |
Simon... (30-03-2003)
| Kommentar Fra : Simon... |
Dato : 30-03-03 19:19 |
|
Hmmmm, hvorfor er der mere end 1 streng der kan give det rigtige resultat,
jeg lavede min cracker om til at tage ordlister, og faldt over noget jeg
ikke helt
ved om er en fejl, eller hvad forklaringen er, det er sådan at der i
ordlisten
stod "research" og "researcher" og begge syntes at virke til et givent
encrypteret password ?..
jeg ville så lige se hvad der gjorde dette, så jeg skrev følgende stump kode
og kørte den:
###########
$pass = "9d39KqW0uFTBk";
if ($pass eq crypt("re","$pass"))
{
print "1\n";
}
if ($pass eq crypt("res","$pass"))
{
print "2\n";
}
if ($pass eq crypt("rese","$pass"))
{
print "3\n";
}
if ($pass eq crypt("resea","$pass"))
{
print "4\n";
}
if ($pass eq crypt("resear","$pass"))
{
print "5\n";
}
if ($pass eq crypt("researc","$pass"))
{
print "6\n";
}
if ($pass eq crypt("research","$pass"))
{
print "7\n";
}
if ($pass eq crypt("research1","$pass"))
{
print "8\n";
}
if ($pass eq crypt("research22","$pass"))
{
print "9\n";
}
if ($pass eq crypt("research333","$pass"))
{
print "10\n";
}
##############
den skriver 7,8,9,10 ud... ???? hvorfor virker de ? er det fordi passwords i
crypt kun må være
8 tegn lange ? så alt over bare blir ignoreret ? eller hvordan og hvorledes
?
tak
mvh.Simon
| |
Morten Guldager (30-03-2003)
| Kommentar Fra : Morten Guldager |
Dato : 30-03-03 19:23 |
|
Sun, 30 Mar 2003 at 18:19 GMT Simon... wrote
> Hmmmm, hvorfor er der mere end 1 streng der kan give det rigtige resultat,
> ...
> er det fordi passwords i crypt kun må være
> 8 tegn lange ? så alt over bare blir ignoreret ?
Ja, 8 stk 7 bit tegn, ialt 56 bit.
/Morten
| |
|
|