[PHP] envoyer des données directement via adresse MAC ?

envoyer des données directement via adresse MAC ? [PHP] - PHP - Programmation

Marsh Posté le 27-06-2008 à 17:03:09    

Bonjour,
 
J'ai une question qui peut vous paraître ultra bête (bon je suis pas non plus une flèche en PHP, je débute encore)
 
 
Je souhaite faire un petit bout de code PHP me permettant de voir si un ordinateur sur mon réseau local est allumé ou non (si vous avez une petites idées de la manière pour y arriver, je suis preneur), avec un zoli bouton qui me permettrait d'envoyer un "paquet magique". Je précise que le serveur web est sur le même réseau local, et qu'entre les différents PC il n'y a pas de routeur.
 
Pour le moment je m'attaque plutôt à la partie "envoi des paquets magiques"
 
 
Est-il possible d'envoyer un paquet précis sachant que j'ai UNIQUEMENT une adresse MAC ?
Par ailleurs, je suppose qu'il faut créer un socket pour envoyer ce paquet en udp, non ?  
 
/!\ MON SERVEUR EST SOUS FREEBSD /!\
 
 
 
merci pour vos précisions
 
 

Message cité 1 fois
Message édité par schlopa67 le 27-06-2008 à 17:15:51
Reply

Marsh Posté le 27-06-2008 à 17:03:09   

Reply

Marsh Posté le 27-06-2008 à 17:07:49    

Reply

Marsh Posté le 27-06-2008 à 17:09:15    

schlopa67 a écrit :

Est-il possible d'envoyer un paquet précis sachant que j'ai UNIQUEMENT une adresse MAC ?


Si tu n'as pas l'IP, en théorie, tu peux broadcaster. Aprés il faut voir si les hub/switch/routeur que tu as l'accepte....


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 27-06-2008 à 17:10:39    

arghhh mais j'avais pas vu ça !!
 
ça me semble être ce que je cherche
 
merci !! :)

Reply

Marsh Posté le 27-06-2008 à 17:14:22    

Reply

Marsh Posté le 27-06-2008 à 17:21:55    

Citation :

 Pourquoi s'embêter ? => http://www.depicus.com/wake-on-lan [...] n-com.aspx


 
ARF je viens de remarquer un small détail qui a tt son importance : mon serveur est sous FreeBSD alors le VisualBasic ne fait pas parti des languages à utiliser
 

Citation :

Si tu n'as pas l'IP, en théorie, tu peux broadcaster. Aprés il faut voir si les hub/switch/routeur que tu as l'accepte....


 
C'est mon intention.  
 
J'ai déjà testé des logiciels de WakeOnLan qui fonctionne très bien. Donc je suppose que mes switch apachèr sont compatibles  :)  
 

Citation :

 Et ici sans objet COM : http://www.hackernotcracker.com/20 [...] cript.html


 
Je suis déjà tombé dessus. Mais J'ai une erreur lors du lancement du script :  
 

Code :
  1. Warning: socket_set_option() [function.socket-set-option]: unable to set socket option [22]: Invalid argument in /mnt/ad4s2/blabla/wol.php on line 55


 
la ligne en question :  
 

Code :
  1. $opt_ret = socket_set_option($s, 1, 6, TRUE);


 
Donc voilà  
 
 
En plus je ne comprends pas pourquoi il parle d'adresse IP là dedans. Mon ordinateur est éteint et n'a donc pas d'@IP !
 
Et pis j'aurai aimé faire ça moi même si possible (petit satisfaction au bout)

Reply

Marsh Posté le 28-06-2008 à 21:05:05    

Je ne connais rien en php
 
Mais d'après moi travailler au niveau des sockets impose de travailler sur la couche transport (couche 4) or l'adresse Mac se situe au niveau de la couche de liaison (couche 2) donc voila pourquoi l'on parle d'adresse Ip dans les sockets. Et voila pourquoi les sockets ne sont pas appropriées pour ce que tu veux faire.


Message édité par Anonymouse le 28-06-2008 à 21:11:14
Reply

Marsh Posté le 29-06-2008 à 10:05:49    

pas bête du tout comme raisonnement
 
y aurait-il une autre méthode ?
 
[:aelenia]

Reply

Marsh Posté le 29-06-2008 à 10:50:14    

schlopa67 a écrit :

pas bête du tout comme raisonnement
 
y aurait-il une autre méthode ?
 
[:aelenia]


 
Aucune idée :(
 
Faudrait se renseigner sur le fonctionnement des logiciels de Wake On Lan
 
voila un script trouvé sur Ubuntu:
 
http://doc.ubuntu-fr.org/wakeonlan?s=wake%20script
 

Code :
  1. <?
  2.          # Wake on LAN - (c) HotKey@spr.at, upgraded by Murzik
  3.          # Modified by Allan Barizo http://www.hackernotcracker.com
  4.          flush();
  5.        
  6.          function WakeOnLan($addr, $mac,$socket_number) {
  7.            $addr_byte = explode(':', $mac);
  8.            $hw_addr = '';
  9.            for ($a=0; $a <6; $a++) $hw_addr .= chr(hexdec($addr_byte[$a]));
  10.            $msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
  11.           for ($a = 1; $a <= 16; $a++) $msg .= $hw_addr;
  12.           // send it to the broadcast address using UDP
  13.           // SQL_BROADCAST option isn't help!!
  14.           $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
  15.           if ($s == false) {
  16.             echo "Error creating socket!\n";
  17.             echo "Error code is '".socket_last_error($s)."' - " . socket_strerror(socket_last_error($s));
  18.             return FALSE;
  19.             }
  20.           else {
  21.             // setting a broadcast option to socket:
  22.             $opt_ret = socket_set_option($s, 1, 6, TRUE);
  23.             if($opt_ret <0) {
  24.               echo "setsockopt() failed, error: " . strerror($opt_ret) . "\n";
  25.               return FALSE;
  26.               }
  27.             if(socket_sendto($s, $msg, strlen($msg), 0, $addr, $socket_number)) {
  28.               echo "Magic Packet sent successfully!";
  29.               socket_close($s);
  30.               return TRUE;
  31.               }
  32.             else {
  33.               echo "Magic packet failed!";
  34.               return FALSE;
  35.               }
  36.          
  37.             }
  38.           }
  39.         // Port number where the computer is listening. Usually, any number between 1-50000 will do. Normally people choose 7 or 9.
  40.         $socket_number = "9";
  41.         // MAC Address of the listening computer's network device
  42.         $mac_addy = "XX:XX:XX:XX:XX:XX";
  43.         // IP address of the listening computer. Input the domain name if you are using a hostname (like when under Dynamic DNS/IP)
  44.         $ip_addy = gethostbyname("my.dns.domain.com" );
  45.        
  46.         WakeOnLan($ip_addy, $mac_addy,$socket_number)
  47.    
  48.       ?>



Message édité par Anonymouse le 29-06-2008 à 15:42:28
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed