guten tag,
ich hab 2 kleinere tools geschriebn. das einte noch auf dem windows wo es auch immer perfekt funktioniert. ich hab danach die datein auf's linux rübergenommen und bearbeitet. dort hats auch immer perfekt funktioniert. doch als ich die sache nochmals auf meinem windows ausprobiert hab, hat er die txt-datei, welche er erstellen sollte, nicht mehr erstellt (es gab keine fehlermeldung, der text im terminal wurde ausgegeben).
hab dann das tool weitergegebn zum testen ob das an meinem windows oder so liegt, doch auch bei der neuen testperson gings nicht, das zweite tool hab ich ganz auf ubuntu geschrieben und funzt auch nicht auf windows.
kann mir jemand sagen weshalb das so ist und was ich verändern muss? find das total seltsam..
ah ja und noch so zur information, bei windows hab ich einfach den standard editor genommen wie bei linux (ubuntu) auch.
User since
2006-07-05
334
Artikel
BenutzerIn
Also wenn es nicht am Editor hängt, vielleicht am Zeichensatz ? Denke an "dos2unix" oder "unix2dos"... Und wie so oft könnte ein Blick in den Quellcode der Problemkenntnis dienen ;-)
“Perl is the only language that looks the same before and after RSA encryption.”
ich hab herausgefunden das dieser teil des codes, welcher bei beiden tools vorkommt, auf windows nicht richtig funktioniert.
weiss jemand warum und wie ich das richtig hinkrieg?
open(datei, ">>", "1.txt") || die print "Datei konnte nicht erstellt werden!\n";
print datei @second;
close(datei);
open(DATA,"<","1.txt");
open(OUT,">","$name2");
foreach $line (<DATA>) # Entfernt leere Zeilenumbrüche
{
if ($line =~ m/[a-z]|[0-9]/i)
{
print OUT $line;
}
}$string=~ tr/<html>/s/d;
close(DATA);
close(OUT);
User since
2006-07-05
334
Artikel
BenutzerIn
....der eine Teil des Codes lässt sich nur im Zusammenhang mit dem restlichen Programm und ansonsten verfügbaren Dateien sinnvoll bewerten und verbessern ;-)
Zudem man
nicht unterlasen sollte.
“Perl is the only language that looks the same before and after RSA encryption.”
ok. hier ist er:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/local/bin/perl
use LWP::UserAgent;
print "\nWEBWORD gestartet!\n\n";
print "\nBitte Adresse angeben: (http://beispiel.de) ";
chop($input_address = <STDIN>);
print "\nName der Wordlist: ";
$name = <STDIN>;
$name2 = "$name.txt";
$a1 = "$input_address";
$agent = new LWP::UserAgent;
$request = HTTP::Request->new('GET',$a1);
$result = $agent->request($request);
$a1 =~ s/.*\///;
$a1 = "temp1.txt";
open(lookME, ">", "temp1.txt") || die print "Datei konnte nicht erstellt werden!\n";
print lookME $result->content();
close(lookME);
open(IP,"<","temp1.txt") || die print "Datei konnte nicht geoeffnet werden!\n";
@IN = <IP>;
close(IP);
unlink "temp1.txt" || die print "Datei konnte nicht geloescht werden!\n";
foreach $string1 (@IN)
{
$string1 =~ s/<.+?>//g;
$string1 =~ s/{.+?}//g;
}
foreach $word (@IN) {
$word =~ tr/ /\n/;
push(@second,"$word");
}
foreach $string (@second)
{
$string =~ tr/,;.:_[¨!]{}$£§¬°1+|"@*#ç¼%½&¬¦(¢)]=}?´'^`~<>-//d;
$string =~ s!/!!g;
$string =~ s!\\!!g;
$string =~ s! !!g;
$string =~ s! !!g;
}
open(datei, ">>", "1.txt") || die print "Datei konnte nicht erstellt werden!\n";
print datei @second;
close(datei);
open(DATA,"<","1.txt");
open(OUT,">","$name2");
foreach $line (<DATA>)
{
if ($line =~ m/[a-z]|[0-9]/i)
{
print OUT $line;
}
}$string=~ tr/<html>/s/d;
close(DATA);
close(OUT);
unlink("1.txt");
mit use strict; und use warnings; kommen einfach ne menge fehlermeldungen die mir nichts sagn,
User since
2003-08-04
14371
Artikel
ModeratorIn
Zum Thema use strict mal diesen
Artikel durchlesen...
User since
2003-08-04
14371
Artikel
ModeratorIn
Was soll diese Zeile machen?
if ($line =~ m/[a-z]|[0-9]/i)
Hast Du Dir mal "1.txt" angeschaut, was da so drinsteht?
Und was soll diese Zeile machen ?
$string=~ tr/<html>/s/d;
Gibt es Fehlermeldungen? Was macht das Programm? Was soll es machen?
User since
2003-08-21
2614
Artikel
ModeratorIn
Es wird nun wohl nicht Dein Problem loesen, aber ich wuerde mal "die print" durch einfach "die" ersetzen. perldoc -f die
Was soll das denn???
open(lookME, ">", "temp1.txt") || die print "Datei konnte nicht erstellt werden!\n";
print lookME $result->content();
close(lookME);
open(IP,"<","temp1.txt") || die print "Datei konnte nicht geoeffnet werden!\n";
@IN = <IP>;
close(IP);
unlink "temp1.txt" || die print "Datei konnte nicht geloescht werden!\n";
Das gleich macht:
Das ist auch weniger Anfällig denn der Zeilentrenner unter Unix ist "\n" unter Windows "\r\n" Perl beachtet das per Default. Internetseiten müssen aber nicht immer mit "\r\n" bzw "\n" formatiert sein.
User since
2006-07-10
2611
Artikel
BenutzerIn
ungetestet:
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
#!/usr/local/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
print "\nWEBWORD gestartet!\n\n";
print "\nBitte Adresse angeben: (http://beispiel.de) ";
chomp(my $input_address = <STDIN>);
print "\nName der Wordlist: ";
chomp(my $name = <STDIN>); # auch hier das entfernen des "\n" nicht vergessen!
$name .= ".txt";
my $agent = new LWP::UserAgent;
my $request = HTTP::Request->new('GET',$input_address);
$result = $agent->request($request);
my $words=$result->content();
$words =~s/[\r\n]+/ /gs; # Zeilenumbrüche entfernen
$words =~s/<.+?>/ /g; # sehr anfällig. Löscht unter Umständen zu viel / zu wenig
$words =~s/{.+?}/ /g; # wofür ist das? CSS??
$words =~tr/\W\S//d; # Sonderzeichen entfernen
my @word_list=split(/\s+/,$words); # Wörter aufteilen und in Array schreiben.
open(OUT,">",$name) or die "Konnte ($name) nicht oeffnen ($!)\n";
print OUT join("\n",@word_list);
close(OUT);
Das Script sollte so ziemlich das selbe machen wie deines nur mit weniger unnötigen Aktionen. Dein Problem liegt an den ständigen schreiben und lesen von Dateien ohne auf die System spezifischen Zeilenumbrüche zu achten. Weißt du nicht wie man Splittet / mit Arrays bearbeitet?