2023. 10. 19. 20:58
반응형
Wake-on-LAN (WOL)을 사용하여 원격 컴퓨터를 깨웁니다.
아래는 C 언어를 사용한 간단한 WOL 소스 코드입니다.
WOL 패킷을 보내기 위해 "magic packet"을 생성하는 방식입니다. 주의하세요.
이 코드는 고급 네트워킹 라이브러리나 특정 운영체제에 의존하지 않고 단순한 예제일 뿐입니다.
더 복잡한 환경에서는 해당 라이브러리나 기능을 사용하는 것이 더 적합합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/udp.h>
// 사용할 MAC 주소 (대상 컴퓨터의 네트워크 카드 MAC 주소) 입력
unsigned char mac_address[6] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55};
// 함수 선언
void createMagicPacket(unsigned char *mac_address, unsigned char *magic_packet);
int main() {
unsigned char magic_packet[102];
// 매직 패킷 생성
createMagicPacket(mac_address, magic_packet);
// 소켓 초기화
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0) {
perror("Socket error");
exit(1);
}
struct sockaddr_in dest_addr;
bzero(&dest_addr, sizeof(dest_addr));
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(9);
dest_addr.sin_addr.s_addr = inet_addr("255.255.255.255"); // 브로드캐스트 주소
// 매직 패킷 전송
sendto(sockfd, magic_packet, 102, 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
printf("Magic packet sent.\n");
close(sockfd);
return 0;
}
// 매직 패킷 생성 함수
void createMagicPacket(unsigned char *mac_address, unsigned char *magic_packet) {
// 매직 패킷은 6바이트의 0xFF를 반복해서 6바이트로 시작합니다.
for (int i = 0; i < 6; i++) {
magic_packet[i] = 0xFF;
}
// MAC 주소를 16번 반복합니다.
for (int i = 6; i < 102; i += 6) {
memcpy(&magic_packet[i], mac_address, 6);
}
}
|
cs |
이 코드는 주어진 MAC 주소에 대한 WOL 매직 패킷을 생성하고 브로드캐스트 주소로 보냅니다. WOL은 목표 컴퓨터의 네트워크 카드가 이 기능을 지원하고 활성화되어 있어야 합니다. 또한, 컴파일 및 실행하기 전에 필요한 권한을 가지고 있어야 할 수 있습니다.
반응형
콘텐츠 내 자동삽입광고