одним хорошеньким весенним деньком я сидел на табуретке и вдруг захотел написать сканер портов это мой первый релиз так что не бейте ногами реализован на IO Socket Code: #!/usr/bin/perl use Socket; $ARGC = @ARGV; if ($ARGC < 2 ) { print "Port Scanner \n"; print "CODED BY Satana \n"; print "Use : $0 <host> <protocol> \n"; exit; } $protoc = $ARGV[1]; print "\nStarting Scan.. \n"; print "Target : $ARGV[0] \n"; for ($port_in = 0; $port_in <= 6000; $port_in++) { $iaddr = inet_aton($ARGV[0]) || die "Error to connect on Host.($!)"; $paddr = sockaddr_in($port_in, $iaddr); $proto = getprotobyname($protoc); socket(SOCK, AF_INET, SOCK_STREAM, $proto); if (connect(SOCK, $paddr)) { $servico = getservbyport($port_in, 'tcp'); print "$port_in - $servico - open \n"; close(SOCK); } } print "Scan completed... \n\n"; exit; /me запостил что бы у него появилась наконец то батарейка
1. Запомни для себя use warnings use strict и use diagnostics 2. Для получения аргументов таки удобнее и читаемее юзать чтонить в духе my $target = shift || usage;
ногами бить не будем Code: $ARGC = @ARGV; Количество аргументов можно получить более лёгким способом Code: $#ARGV+1 scalar @ARGV надеюсь это опечатка Code: print 'CODED BY Satana \n'; Так как при одинарных кавычках не происходит интерполяция , это значит что интерпретатор не обратит внимание на твою эскейп последовательность \n Code: print "CODED BY Satana \n"; Code: for ($port_in = 0; $port_in <= 6000; $port_in++) { Как-то не продуманы номера портов ..
лучше бы сделал так чтобы диапазон портов мона была указывать в аргументах. да и почитай для начала perl underground. для тебя будет полезно да и каждый в принципе может сесть и написать такой простеньки цикл который устанавливает соединение с сервером и проверяет соединяется ли с конкретным портом прога или нет. и чо? мне щас сесть и написать аналог этого на Си или на РНР, да?