Forum Astuces.divers WOL avec netcat

Posté par  .
Étiquettes : aucune
7
28
déc.
2010
Comment faire un Wake-On-LAN sans avoir un logiciel spécifique ?

J'ai accès à un réseau distant via une machine sur laquelle je ne peux rien installer. C'est un boîtier avec un SSD et peu de mémoire. Il n'est pas possible d'exécuter un programme sur /home ni sur /tmp
Et puis je n'ai pas envie de demander à son admin de modifier les choses. Il acceptera sans problème mais je préfère trouver une solution de contournement qui me servira peut-être une autre fois.

Alors avec les moyens du bord, sans etherwake ou wakeonlan ou etc :
MAC='5B:F1:49-10-ED:D5'

CLEANMAC=$(echo "$MAC" | tr --delete ':-' | sed -n 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)/\\x\1\\x\2\\x\3\\x\4\\x\5\\x\6/p')
MSG='\xFF\xFF\xFF\xFF\xFF\xFF'${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}${CLEANMAC}

printf "$MSG" | nc -p 1234 -b -u -q 0 255.255.255.255 1234
La seule ligne intéressante est la dernière. Et elle est triviale :-)

Certaines versions de ping permettent de définir le contenu du paquet comme on le souhaite. Mais généralement c'est limité à un nombre d'octets insuffisant pour le WOL.

Je peux lancer cela depuis une machine à moi via un script SSH. J'ai une icône par machine à démarrer et le tour est joué.

Plus difficile : si le routeur est une machine qui n'a pas netcat ni sed. Par exemple un modem/routeur du commerce. Il n'y a qu'un sh et quelques commandes de base. En général on accède à ces routeurs en tant que root.

--> je cherche une idée pour envoyer un paquet UDP via sh.
Pas de bash, donc pas possible d'utiliser le bashisme /dev/udp/example.com/1234
  • # netcat : udp

    Posté par  . Évalué à -2.

    Avec certaines versions de netcat, l'option -u permet de passer en udp (tcp par default).
  • # ...

    Posté par  . Évalué à 1.

    n'est pas possible d'exécuter un programme sur /home ni sur /tmp
    La protection se fait avec quoi ?
    Option de montage ?

    Dans ce cas "/lib/ld-linux.so.2 /home/program" de permettra de l'executer.

    Sinon ils existent d'autres endroits que /home et /tmp ou tu pourrais tenter d'installer ton programme :
    /dev/shm, /var/tmp/, /var/mail/user, ...

    En général on accède à ces routeurs en tant que root.
    ben dans ce cas tu peux faire ce que tu veux...
    • [^] # Re: ...

      Posté par  (site web personnel) . Évalué à 4.

      La protection se fait avec quoi ?
      Option de montage ?

      Dans ce cas "/lib/ld-linux.so.2 /home/program" de permettra de l'executer.


      Euh ouais, plus depuis quoi ? 10 ans ?
  • # Options de netcat

    Posté par  (site web personnel) . Évalué à 1.

    Chez moi, ni GNU netcat ni OpenBSD netcat n'ont d'options -q ou -b. Que permettent de faire ces options ? Avec quelle version de netcat ?

    Aussi, pourquoi as-tu besoin de préciser le port local à utiliser avec -p ? (du moins, aussi bien GNU nc qu'OpenBSD nc utilisent cette option comme définissant le port local ; comme tu ne sembles pas utiliser ces versions, cette option a peut-être une autre signification chez toi.)
    • [^] # Re: Options de netcat

      Posté par  . Évalué à 2.

      La machine qui me coinçait est une vieille Ubuntu bricolée. Il y a juste indiqué v1.10 lorsqu'on demande l'aide de netcat, je n'en sais pas plus.
      Alors effectivement, sur une Debian plus récent c'est plus... sensé.

      L'option "-q 0" sert à terminer le processus zéro seconde après la fin de stdin. Sinon netcat reste en attente.

      L'option "-b" est pour autoriser les diffusions UDP. Sans ça, impossible d'utiliser x.y.z.255 sans être root.

      Et pour -p ben ça ne fonctionnait pas sans.


      Cette version de netcat a seulement 4 ans. Ca a bien évolué depuis :-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.