IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

[Socket] [Thread] Scan port UDP , erreur inconnu :s


Sujet :

Programmation et administration système Perl

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 13
    Points
    13
    Par défaut [Socket] [Thread] Scan port UDP , erreur inconnu :s
    Bonjour merci d'avoir porter de l'importance a mon topic ^^

    bon voila je vous explique j'essaye de scaner une rangé d'ip sur un certain port par exemple de 192.168.0.0 a 192.168.255.255 en testant le port 161 qui est basé sur le service SNMP utilisant le protocole UDP

    donc voila enfaite j'envoye un simple datagramme sur l'ip et le port et si je recois un ICMP Unreachable c'est bon j'affiche l'ip et je l'entre dans un fichier .txt

    j'utilise un systeme de threading pour un scan + rapide

    le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
     
     
        #!/usr/bin/perl
     
        use Net::IP;
    	use Net::Ping;
    	use IO::Select;
    	use IO::Socket::INET;
        use Term::ANSIColor;
        use vars qw( $PROG );
        ( $PROG = $0 ) =~ s/^.*[\/\\]//;
        #Utilisation
        if ( @ARGV == 0 ) {
                print "Utilisation : perl $PROG.pl [Debut de la ranger] [Fin de la ranger] [Port] [Threads] [Delay] [Fichier.txt]\n";
            exit;
        }
        my $threads  = $ARGV[3];
        my @ip_team  = ();
        $|= 1;
        my $ip   = new Net::IP ("$ARGV[0] - $ARGV[1]") or die "Erreur ranger d adresse IP Invalide.". Net::IP::Error() ."\n";
     
     
        #on fork ^^
        while ($ip) {
        push @ip_team, $ip++ ->ip();
        if ( $threads == @ip_team ) { Scan(@ip_team); @ip_team = () }
        }
        Scan(@ip_team);
     
        #Scan
        sub Scan
        {
        my @Pids;
     
                foreach my $ip (@_)
                {
                my $pid        = fork();
                die "Fork impossible! $!\n" unless defined $pid;
     
                        if  (0 == $pid)
                        {
                                        alarm 1;
     
     
    									# temps d'attente du  "destination unreachable" packet
    my $icmp_timeout=2;
    # creation d'un icmp socket pour  "destination unreachable" packets
    $icmp_sock = new IO::Socket::INET(Proto=>"icmp");
    $read_set = new IO::Select();
    $read_set->add($icmp_sock);
     
    # le buffer a envoyer en UDP
    my $buf="hello";
     
     
     
     
          # crée un socket udp pour l'ip et le port
        my $sock = new IO::Socket::INET(PeerAddr=>$ip,
        PeerPort=>$ARGV[2],
        Proto=>"udp",
    	Timeout => $ARGV[4]);
         #on envoye le buffer et ferme le socket
        $sock->send("$buf");
        close($sock);
     
          # attente de recevoir les packets
        ($new_readable) = IO::Select->select($read_set, undef, undef, $icmp_timeout);
          # arrivé des flags
        $icmp_arrived = 0;
          # pour tout les socket on a recu un packet (seulement - icmp_socket)
        foreach $socket (@$new_readable)
        {
               # si nous avons reussi ce qui est probable nosu avons  "destination unreachable"
             if ($socket == $icmp_sock)
             {
                    # met le flags et nettoye le buffer et sockets
                  $icmp_arrived = 1;
                  $icmp_sock->recv($buffer,50,0);
             }
        }
     
     
     
     
     
                                        open (MYFILE, ">>$ARGV[5]");
                                if ( $icmp_arrived == 0 ) {
                        print MYFILE "$ip\n";
                         print "IP TROUVER  :  $ip\n";
                        close (MYFILE);}
                        exit
                        }
                        else
                        {
                        push @Pids, $pid
                        }
                }
     
        foreach my $pid (@Pids) { waitpid($pid, 0) }
        }
    Désolé d'avance pour l'organisation du code j'ai un gros probleme avec sa


    voila j'ai un serveur son ip = 37.59.250.17

    j'ai install SNMP et fait un nmap -sU -p 161 37.59.250.17 pour voir si le port est bien ouvert et oui il est open

    mais quand je scan de par exemple de 37.59.250.10 a 37.59.250.30 sa m'affiche aucune IP alors que le port de ma machine est bien Open

    Merci d'avance pour vos reponses

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    J'ai pas compris ta logique, si tu reçoit un ICMP unreachable, tu dis que la machine à un port ouvert ? C'est cela ?

    Si oui, c'est complètement faux.
    • Si tu reçoit un ICMP port unreachable, c'est que le service n'est pas actif
    • Si tu reçoit un ICMP host unreachable, c'est qu'il n'y a pas de machine
    • Si tu reçoit un ICMP net unreachable, c'est qu'il n'y a pas de réseau
    • Si tu ne reçoit rien, il est probable (mais pas sûr) qu'il y ait effectivement un serveur SNMP



    Autre chose, je ne sais pas comment réagit un serveur SNMP quand on lui envoie une trame avec "hello". A mon avis, soit il ignore la trame (le plus probable), soit il te retourne une injure (probable aussi) soit il peut aussi se crasher (ça, c'est pour les serveurs SNMP codés avec les 2 pieds gauches )
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. pb: erreur inconnue! (thread? command action?)Bluetooth
    Par corseb-delete dans le forum Java ME
    Réponses: 1
    Dernier message: 12/03/2007, 12h57
  2. erreur inconnue en VBA
    Par rapace dans le forum Access
    Réponses: 3
    Dernier message: 06/10/2005, 14h42
  3. [Socket] Trouver un port libre rapidemment
    Par chicorico dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 20/05/2005, 15h49
  4. erreur inconnue
    Par naw dans le forum Bases de données
    Réponses: 5
    Dernier message: 02/02/2005, 08h51
  5. Chat (sockets + thread)
    Par raf_gug dans le forum MFC
    Réponses: 4
    Dernier message: 14/01/2004, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo