Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

WOL network tool in C mit VS-C-Cplusplus08 (wake on lan - magic packet) (remote Rechner starten)

Mitglied: lowbyte1

lowbyte1 (Level 2) - Jetzt verbinden

14.12.2009, aktualisiert 24.08.2010, 10133 Aufrufe, 3 Danke

Open source WOL Tool in C.

XOR-BASE
http://vpn23.homelinux.org

WOL (wake on lan)

Hier ein kleines wake on lan tool in C.
Als input wird eine mac Adresse und eine Broadcast ip Adresse verlangt, danach wird das UDP packet zusammengesetzt
nach http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs ... .
Danach wird das Udp-packet an die Broadcast Adresse des Subnet gesendet.
Nun sollte der gewünschte remote Rechner starten, sofern er darauf konfiguriert ist.(Bios & Netzwerkarten-treiber einstellungen).

Sample:


Wake on Lan - Network - tool by lowbyte


Example: 00:23:54:91:0a:90 or 00-23-54-91-0a-90

Input Mac Adresse:00-23-54-91-0a-90

Input Broadcast IP Adresse:172.16.0.255

WOL Magic Packet gesendet >>>


01.
//========================================================================= 
02.
// 
03.
// File    : WOL - Wake on lan Ver.0.04 
04.
// 
05.
// Author  : Lowbyte 
06.
//                            
07.
// Create  : 03.12.2009, 08:27,  Lon************ 
08.
// 
09.
// Last Up : 13.12.2009, 22:47,  Lon************* 
10.
// 
11.
// Prog.L  : C 
12.
// 
13.
// Project : 0026N 
14.
// 
15.
// Thx     : Jonny ,Felix ,Michaela 
16.
//========================================================================= 
17.
 
18.
#include <stdio.h> 
19.
#include <stdlib.h> 
20.
#include <string.h> 
21.
#include <time.h> 
22.
#include <winsock2.h> 
23.
#include <windows.h> 
24.
#include "console.h" 
25.
 
26.
 
27.
 
28.
#define PRINT_TITLE	system("title Network tools -  by LB"); 
29.
#define I_TIME	40 
30.
#define DEMO_INTERRUPT_TIME		_sleep(I_TIME); 
31.
#define DEMO_ROUNDS	0 
32.
 
33.
 
34.
 
35.
void InitWsa(void); 
36.
int initDemo(void); 
37.
int setColor(int color); 
38.
int check_input(char *str); 
39.
int rem_delim(char *mac_str); 
40.
unsigned char memory_reduction(unsigned char a_ptr ,unsigned char b_ptr); 
41.
unsigned char convchartohex(unsigned char c); 
42.
 
43.
 
44.
 
45.
char *OUTPUT[]={"\n----------------------------------------------------------------------------------\n" 
46.
				"\n Wake on Lan - Network - tool						by lowbyte       \n" 
47.
				"\n----------------------------------------------------------------------------------\n" }; 
48.
 
49.
struct sockaddr_in adr_data; 
50.
 
51.
char wol_mask[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; 
52.
 
53.
int main(void) 
54.
55.
 
56.
	SOCKET sock; 
57.
	int by ,i ,j ,m ,c; 
58.
	int Len = sizeof(BOOL); 
59.
	int Val; 
60.
	char mac[19]; 
61.
	char tmp_mac[6]; 
62.
	char mac_buffer[96]; 
63.
	char msg[103]; 
64.
	char sbn[17]; 
65.
 
66.
 
67.
	system("title WOL - network tools by lowbyte"); 
68.
	setColor(FOREGROUND_GREEN); 
69.
	initDemo(); 
70.
	printf("%s",*OUTPUT); 
71.
 
72.
 
73.
 
74.
	// Check MAC address input ################################# 
75.
	do 
76.
77.
		printf("\n\nExample: 00:23:54:91:0a:90 or 00-23-54-91-0a-90 \n"); 
78.
		printf("\nInput Mac Adresse:"); 
79.
		fgets(mac ,19 ,stdin); 
80.
		mac[strlen(mac)-1]='\0'; 
81.
		fflush(stdin); 
82.
83.
	while( (check_input(mac) != 0) ); 
84.
 
85.
	printf("\nInput Broadcast IP Adresse:"); 
86.
	fgets(sbn ,17 ,stdin); 
87.
	sbn[strlen(sbn)-1]='\0'; 
88.
	fflush(stdin); 
89.
 
90.
 
91.
	// Make WOL Magic Packet ################################### 
92.
 
93.
	// Remove delim's ######## 
94.
	rem_delim(mac); 
95.
 
96.
	// Convert 2 byte char to hex 
97.
	for(j=0,m=0;(j<6);j++) { 
98.
		c = memory_reduction(mac[m] ,mac[m+1]); 
99.
		tmp_mac[j]=c; 
100.
		m +=2; 
101.
102.
 
103.
        //  16 mal aufeinanderfolgend die mac Adresse des Remote Rechners in den Vector kopieren 
104.
	for(i=0;i<16;i++) { 
105.
		memcpy(&mac_buffer[i*6] ,tmp_mac ,6);   
106.
107.
 
108.
        // Kopiere die WOL_MASKE (0xFF,0xFF,0xFF,0xFF,0xFF,0xFF) in den MSG Puffer 
109.
	memcpy(msg ,wol_mask ,6); 
110.
        // Kopiere den mac-Puffer der mac addresen hinter die Maske 
111.
	memcpy(&msg[6] ,&mac_buffer[0] ,96); 
112.
	msg[102]='\0'; 
113.
 
114.
	// Initialisiere WSA ####################################### 
115.
	InitWsa(); 
116.
 
117.
	// Socket anfordern 
118.
	if( (sock = socket(AF_INET ,SOCK_DGRAM ,0)) == INVALID_SOCKET ) { 
119.
		printf("Socket error %i", WSAGetLastError()); 
120.
		WSACleanup(); 
121.
		getchar(); 
122.
		return 0; 
123.
	} else { 
124.
		//printf("Winsock ok ...\n"); 
125.
126.
 
127.
	// Set Broadcast opt 
128.
	setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char*)&Val, Len); 
129.
 
130.
	/* Set (struct SOCKADDR*)adr_data */ 
131.
	memset(&adr_data ,0 ,sizeof(SOCKADDR)); 
132.
	adr_data.sin_family = AF_INET; 
133.
	adr_data.sin_port = htons(9); 
134.
	adr_data.sin_addr.s_addr = inet_addr(sbn); 
135.
 
136.
	/* Send magic packet */ 
137.
	by = sendto(sock ,&msg[0] ,(int)102 ,0 ,(struct sockaddr *)&adr_data ,sizeof(adr_data)); 
138.
 
139.
	if ( by == -1) { 
140.
		printf("\nSendto() failed ...Error nr:%i \n",WSAGetLastError()); 
141.
	} else { 
142.
		printf("\nWOL Magic Packet gesendet >>>"); 
143.
		closesocket(sock); 
144.
		WSACleanup(); 
145.
146.
 
147.
	getchar(); 
148.
 
149.
 
150.
151.
 
152.
 
153.
 
154.
 
155.
 
156.
void InitWsa(void) 
157.
158.
	WSADATA ptr_wsad; 
159.
 
160.
	if( WSAStartup(MAKEWORD(2,2), &ptr_wsad) != -1) { 
161.
		//printf("\nWinsock initialisiert ...\n"); 
162.
	} else { 
163.
		printf("\nWinsock konnte nicht initialisiert werden ...\n"); 
164.
		getchar(); 
165.
		exit(1); 
166.
167.
168.
 
169.
 
170.
 
171.
unsigned char memory_reduction(unsigned char a_ptr ,unsigned char b_ptr) 
172.
173.
	unsigned char a ,b; 
174.
 
175.
	a = convchartohex(a_ptr); 
176.
	b = convchartohex(b_ptr); 
177.
 
178.
	return b|a<<4; 
179.
 
180.
 
181.
182.
 
183.
 
184.
unsigned char convchartohex(unsigned char c) 
185.
186.
 
187.
	if(c >= 'a' && c <= 'f'){ 
188.
		return 10 + (c - 'a'); 
189.
190.
	if(c >= '0' && c <= '9'){ 
191.
		return c - '0'; 
192.
193.
	return 0; 
194.
195.
 
196.
	 
197.
 
198.
int check_input(char *str) 
199.
200.
	int i ,flag=0; 
201.
 
202.
	if(strlen(str)!=17) { 
203.
		cls(); 
204.
		printf("\nInccorect input !\n"); 
205.
		return 1; 
206.
207.
 
208.
	for(i=0;i<17;i++) { 
209.
 
210.
		// check delim 
211.
		if( (i==2) || (i==5) || (i==8) || (i==11) || (i==14) ) { 
212.
			if( (*(str+i)==':') || (*(str+i)=='-') ){ 
213.
214.
			} else { 
215.
				cls(); 
216.
				printf("\nInccorect input !\n"); 
217.
				return 1; 
218.
219.
 
220.
		} else { 
221.
 
222.
			// check alpha 
223.
			if( (*(str+i)>='0' && *(str+i)<='9') || (*(str+i)>='a' && *(str+i)<='f') ){ 
224.
225.
			} else { 
226.
				cls(); 
227.
				printf("\nInccorect input !\n"); 
228.
				return 1; 
229.
230.
231.
232.
 
233.
	return 0; 
234.
 
235.
236.
 
237.
int rem_delim(char *mac_str) 
238.
239.
	char tmp_arr[13]; 
240.
 
241.
	memcpy(&tmp_arr[0] ,mac_str ,2); 
242.
	memcpy(&tmp_arr[2] ,(mac_str+3) ,2); 
243.
	memcpy(&tmp_arr[4] ,(mac_str+6) ,2); 
244.
	memcpy(&tmp_arr[6] ,(mac_str+9) ,2); 
245.
	memcpy(&tmp_arr[8] ,(mac_str+12) ,2); 
246.
	memcpy(&tmp_arr[10] ,(mac_str+15) ,2); 
247.
 
248.
	memcpy(&mac_str[0] ,&tmp_arr[0] ,12); 
249.
	*(mac_str+12)='\0'; 
250.
 
251.
	return 0; 
252.
 
253.
254.
 
255.
 
256.
 
257.
 
258.
 
259.
 
260.
 
261.
 
262.
int initDemo(void) 
263.
264.
	int i,r; 
265.
	char string[100]; 
266.
	char printstring[100]; 
267.
 
268.
	strcpy_s(string  ,10 ,"[LOWBYTE]"); 
269.
	memset(printstring ,' ' ,15); 
270.
	printstring[15]='\0'; 
271.
	strcat(printstring,string); 
272.
 
273.
	for(r=0;(r<=DEMO_ROUNDS);r++) { 
274.
 
275.
		for(i=0;(i<(int)strlen(printstring));i++) { 
276.
 
277.
			puts("\n\n\n"); 
278.
			printf("%40i\n",rand()); 
279.
			printf("%40i\n",rand()); 
280.
			printf("%40i\n",rand()); 
281.
			printf("%40i\n",rand()); 
282.
			setCursor(9, 30); 
283.
			printf("%.15s\t\n\n", (printstring+i)); 
284.
			printf("%40i\n",rand()); 
285.
			printf("%40i\n",rand()); 
286.
			printf("%40i\n",rand()); 
287.
			printf("%40i\n",rand()); 
288.
			DEMO_INTERRUPT_TIME; 
289.
			cls(); 
290.
 
291.
292.
293.
 
294.
	cls(); 
295.
 
296.
	setCursor(9, 30); 
297.
	printf("PRESS [ENTER]"); 
298.
	getchar(); 
299.
	cls(); 
300.
 
301.
	return 0; 
302.
}
Ähnliche Inhalte
C und C++

C-Sharp WPF Binding und Rechnen mit Element.With

Tipp von mayho33C und C++10 Kommentare

Hi @ All Eventuell geht es dem einen oder anderen ähnlich wie mir: WPF ist mächtig, hat aber seine ...

Windows 10

Remote Server Administration Tool (RSAT) für Windows 10 Build 10586

Information von Nemo-GWindows 1013 Kommentare

Mit Datum vom 19.11.2015 stellt MS nunmehr auch ein aktuelles Administrationstool für Windows Server Technical Preview zur Verfügung unter ...

Neue Wissensbeiträge
Cloud-Dienste

Neue Exchange Online und Office 365 Limits ab 01.06.2018

Tipp von decathlon vor 15 StundenCloud-Dienste

Achtung für alle Exchange Online Nutzer die es vielleicht übersehen haben. Ab 01. Juni gilt folgendes neues Limit User ...

Humor (lol)
Meine Variante der DSGVO
Tipp von Henere vor 2 TagenHumor (lol)4 Kommentare

Datenschutzerklärung Jede gute Website braucht eine Datenschutzerklärung? Ok, dann machen Sie sich auf etwas gefasst. Präambel Artikel 12 der ...

Administrator.de Feedback

Entwicklertagebuch: Datenschutzerklärung nach DS-GVO

Information von admtech vor 2 TagenAdministrator.de Feedback

Hallo Administrator User, Wir respektieren eure Privatsphäre und möchten euch daher auf die Möglichkeiten für den Umgang mit euren ...

Voice over IP

Rufnummernblock aufbrechen nun möglich bei DTAG

Tipp von Datenreise vor 2 TagenVoice over IP

Bei der Telekom ist es seit einigen Tagen laut Aussage der Geschäftskunden-Hotline möglich, eine Rufnummernübernahme auch dann durchzuführen, wenn ...

Heiß diskutierte Inhalte
Windows Netzwerk
PCs abschotten, damit keine Dateien rausgehen (Windows 10-CLients auf Windows-Server 2016 Active Directory-Struktur)?
Frage von 1410640014Windows Netzwerk8 Kommentare

Frage: Gibt es Möglichkeiten unter Windows folgende Dinge zu unterbinden - ich meine geben müsste sie sie ja, sonst ...

CPU, RAM, Mainboards
Wieviel Lüfter hat ein HP Elitebook 8730w ?
Frage von -WeBu-CPU, RAM, Mainboards8 Kommentare

Guten Morgen, gestern Abend hat sich bei meinem HP ein/der Lüfter hörbar abgeschaltet oder stark runter geregelt, obwohl das ...

Batch & Shell
Brauche hilf bei einer batch Datei
gelöst Frage von PilllllleBatch & Shell7 Kommentare

hallo, ich versuche mit Hilfe von einer batch- Datei eine bestimmt Zeile aus einer txt- Datei in eine neue ...

Batch & Shell
Brauche Hilfe bei einer batch datai
gelöst Frage von PilllllleBatch & Shell7 Kommentare

hallo ich möchte mithilfe von einer batch datei den aktuell verbundenen Netzwerknamen abfragen lassen für hilfe währe ich sehr ...