[Net::DHCP::Packets]: Sub option_82 (ra_remote_id)
maudor
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'aimerais créer un sniffer DHCP en perl (Net::DHCP::Packets et Net::DHCP::Constants) pour récupérer les sub option comme l'option_82 comme le "RA_REMOTE_ID".
J'ai essayé en utilisant la sub "getSubOptionRaw" sans succès. J'ai trouvé aucune documentation dessus qui m'aiderait à utiliser cette sub.
Voici le script:
#!/usr/bin/perl
use IO::Socket::INET;
use Net::DHCP::Packet;
#use Net::DHCP::Constants qw(:DEFAULT %REV_DHCP_MESSAGE);
use Net::DHCP::Constants qw(:DEFAULT %RELAYAGENT_CODES %REV_DHCP_MESSAGE);
#use Data::Dumper;
$sock = IO::Socket::INET->new(LocalPort => 67, Proto => "udp", Broadcast => 1)
or die "socket: $@";
while ($sock->recv($newmsg, 4096)) {
$packet = Net::DHCP::Packet->new($newmsg);
$agent = $packet->getSubOptionRaw(DHO_DHCP_AGENT_OPTIONS(), RA_REMOTE_ID);
print STDERR $packet->toString();
print "\n\n";
print STDERR $agent;
print "\n\n";
}
Result:
Can't use string ("çâÖVPRN6221fcc3a0"...) as a HASH ref while "strict refs" in use at /usr/local/lib/perl5/site_perl/5.16/Net/DHCP/Packet.pm line 555.
Line 555: /usr/local/lib/perl5/site_perl/5.16/Net/DHCP/Packet.pm
sub getSubOptionRaw {
my ( $self, $key, $subkey ) = @_;
return $self->{options}->{$key}->{$subkey}
if exists( $self->{options}->{$key}->{$subkey} );
return;
}
paquet DHCP reçu :
Exemple:
op = BOOTREQUEST
htype = HTYPE_ETHER
hlen = 6
hops = 0
xid = 7a0b90b
secs = 0
flags = 0
ciaddr = 0.0.0.0
yiaddr = 0.0.0.0
siaddr = 0.0.0.0
giaddr = x.x.x.x
chaddr = xxxxxxxx
sname =
file =
Options :
DHO_DHCP_MESSAGE_TYPE(53) = DHCPDISCOVER
DHO_DHCP_PARAMETER_REQUEST_LIST(55) = 121 1 3 6 12 15 28
DHO_DHCP_AGENT_OPTIONS(82) = \x01\x04\x00\x00\x00\x15\x02\x06\x00\x10\xE7\xE2\xD6\xC4\x97\x08\x00VDD001\x061fcc3a0a07241e58493f3c335e9fc1eb3@xxxxxxxxxx
padding [1] = 00
J'aimerais créer un sniffer DHCP en perl (Net::DHCP::Packets et Net::DHCP::Constants) pour récupérer les sub option comme l'option_82 comme le "RA_REMOTE_ID".
J'ai essayé en utilisant la sub "getSubOptionRaw" sans succès. J'ai trouvé aucune documentation dessus qui m'aiderait à utiliser cette sub.
Voici le script:
#!/usr/bin/perl
use IO::Socket::INET;
use Net::DHCP::Packet;
#use Net::DHCP::Constants qw(:DEFAULT %REV_DHCP_MESSAGE);
use Net::DHCP::Constants qw(:DEFAULT %RELAYAGENT_CODES %REV_DHCP_MESSAGE);
#use Data::Dumper;
$sock = IO::Socket::INET->new(LocalPort => 67, Proto => "udp", Broadcast => 1)
or die "socket: $@";
while ($sock->recv($newmsg, 4096)) {
$packet = Net::DHCP::Packet->new($newmsg);
$agent = $packet->getSubOptionRaw(DHO_DHCP_AGENT_OPTIONS(), RA_REMOTE_ID);
print STDERR $packet->toString();
print "\n\n";
print STDERR $agent;
print "\n\n";
}
Result:
Can't use string ("çâÖVPRN6221fcc3a0"...) as a HASH ref while "strict refs" in use at /usr/local/lib/perl5/site_perl/5.16/Net/DHCP/Packet.pm line 555.
Line 555: /usr/local/lib/perl5/site_perl/5.16/Net/DHCP/Packet.pm
sub getSubOptionRaw {
my ( $self, $key, $subkey ) = @_;
return $self->{options}->{$key}->{$subkey}
if exists( $self->{options}->{$key}->{$subkey} );
return;
}
paquet DHCP reçu :
Exemple:
op = BOOTREQUEST
htype = HTYPE_ETHER
hlen = 6
hops = 0
xid = 7a0b90b
secs = 0
flags = 0
ciaddr = 0.0.0.0
yiaddr = 0.0.0.0
siaddr = 0.0.0.0
giaddr = x.x.x.x
chaddr = xxxxxxxx
sname =
file =
Options :
DHO_DHCP_MESSAGE_TYPE(53) = DHCPDISCOVER
DHO_DHCP_PARAMETER_REQUEST_LIST(55) = 121 1 3 6 12 15 28
DHO_DHCP_AGENT_OPTIONS(82) = \x01\x04\x00\x00\x00\x15\x02\x06\x00\x10\xE7\xE2\xD6\xC4\x97\x08\x00VDD001\x061fcc3a0a07241e58493f3c335e9fc1eb3@xxxxxxxxxx
padding [1] = 00
A voir également:
- [Net::DHCP::Packets]: Sub option_82 (ra_remote_id)
- Net framework 2.0 - Télécharger - Divers Utilitaires
- Paint net - Télécharger - Dessin & Illustration
- Logo .net - Télécharger - Études & Formations
- Net framework 4.0 - Télécharger - Divers Utilitaires
- Onoffapp net - Forum Vos droits sur internet
1 réponse
Salut maudor,
Je n'ai jamais utilisé ce module et je n'ai jamais fait ce que tu essayes de faire.
Cependant, le message d'erreur se manifeste sur la ligne
Tu passes
Le premier est un appel à une fonction, et j'imagine qu'elle retourne une référence valide existante dans
Par contre, je ne comprends pas le deuxième : RA_REMOTE_ID, c'est un "mot nu" qui ne devrait pas être permis en Perl.
Si tu utilisais
Si c'est une sous clef valide du hash, il faudrait écrire
Passe
Insère aussi
Dal
Je n'ai jamais utilisé ce module et je n'ai jamais fait ce que tu essayes de faire.
Cependant, le message d'erreur se manifeste sur la ligne
$self->{options}->{$key}->{$subkey}car ce que tu passes en arguments de getSubOptionRaw ne correspond pas à une/des référence(s) de hash valides dans la branche options de la structure de données de l'objet créé.
Tu passes
DHO_DHCP_AGENT_OPTIONS()et
RA_REMOTE_ID...
Le premier est un appel à une fonction, et j'imagine qu'elle retourne une référence valide existante dans
$packet(vérifie avec
Dumper()).
Par contre, je ne comprends pas le deuxième : RA_REMOTE_ID, c'est un "mot nu" qui ne devrait pas être permis en Perl.
Si tu utilisais
use strict;et
use warnings;tu aurais un message d'erreur dès la compilation.
Si c'est une sous clef valide du hash, il faudrait écrire
'RA_REMOTE_ID'
Passe
$packet,
DHO_DHCP_AGENT_OPTIONS()et
RA_REMOTE_IDdans Dumper pour voir ce qui ne concorde pas.
Insère aussi
use strict;et
use warnings;et déclare tes variables avec
my.
Dal