web-dev-qa-db-fra.com

Diffuser un message en utilisant nc (netcat)

J'essaie d'envoyer un message de diffusion à l'aide de netcat.

J'ai des pare-feu ouverts et j'envoie un message régulier comme celui-ci:

  Host: nc -l 192.168.1.121 12101
  client: echo "hello" | nc 192.168.1.121 12100

Mais je ne peux pas faire fonctionner quelque chose comme ça.

  Host: nc -lu 0.0.0.0 12101
  client: echo "hello" | nc -u 255.255.255.255 12100

Suis-je en utilisant les bons drapeaux? Remarque, l'hôte est sur Mac et le client sur Linux. Pouvez-vous me donner un exemple qui fonctionne pour diffuser un message?

Merci!

20
Edwin Evans

La version GNU de netcat peut être cassée. (Je ne peux pas travailler de toute façon sous 0.7.1.) Voir http://sourceforge.net/p/netcat/ bugs/8 /

J'ai mis socat au travail. Le code ci-dessous diffuse UDP vers le port 24000.

socat - UDP-DATAGRAM:255.255.255.255:24000,broadcast

(Dans socat-world "-" signifie "stdin".)

20
Robert Calhoun

Vous ne dites pas que vous voulez diffuser, ce qui se fait en utilisant le -b option pour nc/netcat.

nc -h 2>&1 | grep -- -b
-b          allow broadcasts
7
fork2execve

Désolé, si je suppose que c'est faux mais que vous avez mentionné que vos pare-feu sont correctement configurés, donc je suppose que l'hôte et le client ne sont pas sur le même sous-réseau ???

Si tel est le cas et que ce pare-feu agit également comme un routeur (ou si le paquet doit passer par un routeur), il va traiter ce paquet mais il ne le transmettra pas à ses autres interfaces. Si vous voulez que cela se produise, vous devrez envoyer une diffusion dirigée. Par exemple; pour le sous-réseau 192.168.1.0/24, la diffusion dirigée serait 192.168.1.255, la dernière IP du sous-réseau. Ensuite, le pare-feu, en supposant qu'il avait une route vers 192.168.1.0/24 et qu'il est configuré pour transmettre une diffusion dirigée, transmettrait cette diffusion à la destination ou au saut suivant. Configuration de votre appareil pour retransmettre la diffusion dirigée ... vous devez vous référer à sa documentation. Pour Cisco IOS vous taperiez, sous l'interface, "diffusion IP dirigée".

255.255.255.255 est une diffusion limitée et ne réussira pas à transmettre vos routeurs, il est uniquement destiné à la liaison de couche 2 sur laquelle il réside.

Quant à la configuration de netcat:

-l 0.0.0.0 12101, indique à netcat d'écouter sur le port 12101 sur toutes les interfaces actives et avec une adresse IP attribuée. Le -u n'est pas nécessaire car il indique à netcat d'écouter sur une socket de domaine unix, google IPC :) (c'est la principale raison pour laquelle votre scénario ne fonctionne pas.)

Ce qui suit devrait fonctionner pour obtenir une diffusion transmise à un autre réseau via netcat:

 serveur: nc -l 0.0.0.0 12101 
 Hôte: echo "bonjour" | nc 192.168.1.255 12101 

J'espère que cela vous aide, désolé si cela a été de longue haleine ou hors de ce que vous cherchiez :)

3
matak