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:
- Kræver destinationscomputerens MAC-adresse (kræver muligvis også en SecureOn-adgangskode).
- Giv ikke en leveringsbekræftelse.
- Fungerer muligvis ikke uden for det lokale netværk.
- Kræver hardwareunderstøttelse af Wake-On-LAN på destinationscomputeren.
- 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:
Opret quiz
https://en.wikipedia.org/wiki/Wake-on-LAN