hallöchen,
ich versuch mir gerade eine sammlung ip-tools zu schreiben, um mehr über perl zu lernen und weil mir nichts besseres als programmierprojekt eingefallen ist....:-)
ein teil dieser tools ist ein portscanner:
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
#!/usr/bin/perl
use warnings;
use strict;
package IPToolCollection;
use IO::Socket;
use Thread;
#-----------------------------------------------------------------------#
# subroutines # #-----------------------------------------------------------------------#
sub scanPorts() {
our ($remoteHost, $protocol, $startPort, $stopPort) = @_;
my %portStatusH = ();
sub scanSinglePort() {
my $remotePort = shift;
my $portStatusB = "open";
my $socket = new IO::Socket::INET (
PeerAddr => $remoteHost,
PeerPort => $remotePort,
Proto => $protocol,
Type => SOCK_STREAM
);
$portStatusB = "closed" if(!defined($socket));
return ($remotePort,$portStatusB);
}
for my $i ($startPort..$stopPort) {
my $scanPortThread = Thread->new (
\&scanSinglePort,$i
);
}
for my $t (Thread->list()) {
my ($port, $portStatusB) = $t->join();
$portStatusH{$port} = $portStatusB;
}
return %portStatusH;
}
#-----------------------------------------------------------------------#
# main script #
#-----------------------------------------------------------------------#
my %resultH = &scanPorts("127.0.0.1", "TCP", 0, 100);
while(my ($k,$val) = each(%resultH)) {
print "port $k is $val \n";
}
das problem ist nun das die threads überhaupt nichts zurückgeben, mein hash also nach dem durchlaufen immer noch komplett leer ist.
als ausgabe krieg ich:
Use of uninitialized value in concatenation (.) or string at ./portscanner.pl line 72.
port closed is
Use of uninitialized value in concatenation (.) or string at ./portscanner.pl line 72.
port open is
versteh ich nicht, im hash müsste doch auf jeden fall was stehen, oder hab ich beim thread-erzeugen irgendwas falsch gemacht?
danke für jede hilfe
p.s.: sorry wegen der codeformatierung, der ist eigentlich ordentlich eingerückt, aber die code-tags vom board zerstören meine formatierung regelmässig.......:-(