Program til fjerntænding af en pc over internettet ved hjælp af Wake-on-LAN-protokollen.

Wake-on-LAN (WoL) er en Ethernet- eller tokenring-computernetværksstandard, der gør det muligt for en computer at blive tændt eller vækket af en netværksmeddelelse. 

  • Meddelelsen sendes normalt til målcomputeren af ​​et program, der udføres på en enhed, der er tilsluttet det samme lokale netværk, såsom en smartphone.
  • Det er også muligt at starte beskeden fra et andet netværk ved at bruge subnet-dirigerede udsendelser eller en WOL-gateway-tjeneste.
  • Tilsvarende termer omfatter vække ved WAN fjernaktivering tændt ved LAN opstart ved LAN genoptage ved LAN genoptage på LAN og vågne op på LAN.

Funktionsprincip  

  • Wake-on-LAN ('WOL') implementeres ved hjælp af en specialdesignet pakke kaldet en magisk pakke, som sendes til alle computere i et netværk, blandt dem computeren, der skal vækkes.
  • Den magiske pakke indeholder destinationscomputerens MAC-adresse, et identifikationsnummer indbygget i hvert netværkskort ('NIC') eller andre ethernet-enheder i en computer, som gør det muligt at blive entydigt genkendt og adresseret på et netværk.
  • Slukkede eller slukkede computere, der er i stand til Wake-on-LAN, vil indeholde netværksenheder, der er i stand til at 'lytte' til indgående pakker i lavenergitilstand, mens systemet er slukket.
  • Hvis der modtages en magisk pakke, der er dirigeret til enhedens MAC-adresse, signalerer NIC computerens strømforsyning eller bundkort for at starte systemets opvågning meget på samme måde, som et tryk på tænd/sluk-knappen ville gøre.
  • Den magiske pakke sendes på datalinklaget (lag 2 i OSI-modellen), og når den sendes, udsendes den til alle tilsluttede enheder på et givet netværk ved hjælp af netværksbroadcast-adressen; IP-adressen (lag 3 i OSI-modellen) bruges ikke.

For at Wake-on-LAN skal fungere, skal dele af netværksgrænsefladen forblive tændt. Dette bruger en lille mængde standby-strøm meget mindre end normal driftsstrøm. Deaktivering af wake-on-LAN, når det ikke er nødvendigt, kan derfor variere en smule, reducere strømforbruget på computere, der er slukket, men stadig tilsluttet en stikkontakt.

Magisk pakkestruktur  
Den magiske pakke er en broadcast-ramme, der hvor som helst inden for dens nyttelast indeholder 6 bytes af alle 255 (FF FF FF FF FF FF i hexadecimal) efterfulgt af seksten gentagelser af målcomputerens 48-bit MAC-adresse til i alt 102 bytes. 
Da den magiske pakke kun scannes for strengen ovenfor og faktisk ikke parses af en fuld protokolstak, kan den sendes som enhver netværks- og transportlagsprotokol, selvom den typisk sendes som et UDP-datagram til port 0 7 eller 9 eller direkte over Ethernet som EtherType 0x0842.

En standard magisk pakke har følgende grundlæggende begrænsninger:   

  1. Kræver destinationscomputerens MAC-adresse (kræver muligvis også en SecureOn-adgangskode).
  2. Giv ikke en leveringsbekræftelse.
  3. Fungerer muligvis ikke uden for det lokale netværk.
  4. Kræver hardwareunderstøttelse af Wake-On-LAN på destinationscomputeren.
  5. De fleste 802.11 trådløse grænseflader opretholder ikke et link i laveffekttilstande og kan ikke modtage en magisk pakke.

Wake-on-LAN-implementeringen er designet til at være meget enkel og til hurtigt at blive behandlet af kredsløbet på netværksinterfacekortet med minimalt strømbehov. Da Wake-on-LAN fungerer under IP-protokollaget, er MAC-adressen påkrævet og gør IP-adresser og DNS-navne meningsløse.

C
   // C program to remotely Power On a PC over the   // internet using the Wake-on-LAN protocol.   #include         #include         #include         #include         #include         #include          #include         #include         int     main  ()   {      int     i  ;      unsigned     char     toSend  [  102  ]  mac  [  6  ];      struct     sockaddr_in     udpClient       udpServer  ;      int     broadcast     =     1     ;      // UDP Socket creation      int     udpSocket     =     socket  (  AF_INET       SOCK_DGRAM       0  );      // Manipulating the Socket      if     (  setsockopt  (  udpSocket       SOL_SOCKET       SO_BROADCAST        &  broadcast       sizeof     broadcast  )     ==     -1  )      {      perror  (  'setsockopt (SO_BROADCAST)'  );      exit  (  EXIT_FAILURE  );      }      udpClient  .  sin_family     =     AF_INET  ;      udpClient  .  sin_addr  .  s_addr     =     INADDR_ANY  ;      udpClient  .  sin_port     =     0  ;      //Binding the socket      bind  (  udpSocket       (  struct     sockaddr  *  )  &  udpClient       sizeof  (  udpClient  ));      for     (  i  =  0  ;     i   <  6  ;     i  ++  )      toSend  [  i  ]     =     0xFF  ;      // Let the MAC Address be ab:cd:ef:gh:ij:kl      mac  [  0  ]     =     0xab  ;     // 1st octet of the MAC Address      mac  [  1  ]     =     0xcd  ;     // 2nd octet of the MAC Address      mac  [  2  ]     =     0xef  ;     // 3rd octet of the MAC Address      mac  [  3  ]     =     0  xgh  ;     // 4th octet of the MAC Address      mac  [  4  ]     =     0  xij  ;     // 5th octet of the MAC Address      mac  [  5  ]     =     0  xkl  ;     // 6th octet of the MAC Address      for     (  i  =  1  ;     i   <=  16  ;     i  ++  )      memcpy  (  &  toSend  [  i  *  6  ]     &  mac       6  *  sizeof  (  unsigned     char  ));      udpServer  .  sin_family     =     AF_INET  ;      // Broadcast address      udpServer  .  sin_addr  .  s_addr     =     inet_addr  (  '10.89.255.255'  );      udpServer  .  sin_port     =     htons  (  9  );      sendto  (  udpSocket       &  toSend       sizeof  (  unsigned     char  )     *     102       0        (  struct     sockaddr  *  )  &  udpServer       sizeof  (  udpServer  ));      return     0  ;   }   

Produktion: 

 This program will power on the switched-off PC   
whose MAC Address is used in this program (the
PC and the Host computer must be connected over
LAN).

Reference:  
https://en.wikipedia.org/wiki/Wake-on-LAN
 

Opret quiz