Scaner port

Discussion in 'PHP' started by satana8920, 30 Apr 2008.

  1. satana8920

    satana8920 Палач Античата

    Joined:
    22 Sep 2006
    Messages:
    396
    Likes Received:
    138
    Reputations:
    6
    одним хорошеньким весенним деньком я сидел на табуретке и вдруг захотел написать сканер портов
    это мой первый релиз так что не бейте ногами

    реализован на 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 запостил что бы у него появилась наконец то батарейка :rolleyes: :)
     
    #1 satana8920, 30 Apr 2008
    Last edited: 30 Apr 2008
  2. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    1. Запомни для себя use warnings use strict и use diagnostics
    2. Для получения аргументов таки удобнее и читаемее юзать чтонить в духе
    my $target = shift || usage;
     
  3. demonoid

    demonoid Banned

    Joined:
    12 Jan 2007
    Messages:
    101
    Likes Received:
    111
    Reputations:
    27
    ногами бить не будем :)

    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++) {
    Как-то не продуманы номера портов .. :)
     
  4. zythar

    zythar Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    лучше бы сделал так чтобы диапазон портов мона была указывать в аргументах.
    да и почитай для начала perl underground. для тебя будет полезно

    да и каждый в принципе может сесть и написать такой простеньки цикл который устанавливает соединение с сервером и проверяет соединяется ли с конкретным портом прога или нет. и чо? мне щас сесть и написать аналог этого на Си или на РНР, да?
     
    #4 zythar, 30 Apr 2008
    Last edited: 30 Apr 2008
  5. sairo

    sairo New Member

    Joined:
    8 Jun 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    изобретатель вилосепеда=)