bonjour;

j'ai l'impression que ma question a une réponse évidente, mais je ne parviens pas à en trouver...en gros, supposons que j'utilise le module Net::Pcap, j'ouvre mon interface, j'obtiens un handler etc. et j'arrive dans ma fonction de traitement des paquets qui reçoit 3 arguments, dont le dernier correspondant au paquet que je viens de récupérer sur le réseau. Pour ma fonction, il s'appelle $packet.
Ce que je souhaite, c'est modifier les 6 premiers octets (pour ceux qui connaissent, il s'agit des 6 octets de l'adresse mac destination de la trame traitée) afin qu'elle ait une autre valeur.
Là où je bloque un peu, c'est, supposons que je récupère la nouvelle adresse mac en lisant sur stdin (genre $newmac = <STDIN> puis je fais un chomp pour virer le \n), j'ai donc $newmac qui contient une représentation en ascii (enfin, human readable) de mon adresse mac, alors que si ça se trouve, chaque octet n'est pas forcément représentable à l'écran. Alors à base de hex() et de pack() j'ai bien réussi à convertir chaque partie de l'adresse mac saisie dans sa représentation réelle (genre convertir "d0" en 0xd0 quoi), mais je ne vois pas comment faire pour plusieurs octets à la suite.
Si quelqu'un a des idées, ça m'intéresse fortement.

PS: en C, j'avais fait ça en convertissant ma chaine de caractère contenant mon adresse mac en struct ether_addr en utilisant la fonction ether_aton() puis en faisant un memcpy() vers mon u_char *c contenant mon paquet. voilà ce que je veux faire en perl, pour ceux qui comprennent le C et qui n'auraient pas compris ma question.