Skip to content

Instantly share code, notes, and snippets.

@atr000
Created December 18, 2010 08:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save atr000/746309 to your computer and use it in GitHub Desktop.
Save atr000/746309 to your computer and use it in GitHub Desktop.
wol
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main( int argc, char **argv )
{
int i,x,sockfd,an=1;
long n;
char buffer[201];
char mac[102];
char macpart[2];
char test[103];
struct sockaddr_in serverAddress;
//(struct protoent *) protocol;
//protocol=getprotobyname("udp");
if (argc<3) {printf("Zu wenige Argumente !\n");
printf("Format : wol IP MAC\n");
printf("Beispiel : wol 192.168.1.1 00:05:45:12:3e:ab\n");
exit(1);}
if ( (sockfd = socket( AF_INET, SOCK_DGRAM,17)) < 0 ) {
perror( "socket" );
exit(1);
}
setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&an,sizeof(an));
bzero( &serverAddress, sizeof(serverAddress) );
serverAddress.sin_family = AF_INET;
serverAddress.sin_port = htons( 9 );
inet_pton( AF_INET, argv[1], &serverAddress.sin_addr );
//printf("Eingabegroesse %d \n",sizeof(argv[2]));
for (i=0;i<6;i++) mac[i]=255;
for (i=1;i<17;i++) {
macpart[0]=argv[2][0];
macpart[1]=argv[2][1];
mac[6*i]=strtol(macpart,&x,16);
macpart[0]=argv[2][3];
macpart[1]=argv[2][4];
mac[6*i+1]=strtol(macpart,&x,16);
macpart[0]=argv[2][6];
macpart[1]=argv[2][7];
mac[6*i+2]=strtol(macpart,&x,16);
macpart[0]=argv[2][9];
macpart[1]=argv[2][10];
mac[6*i+3]=strtol(macpart,&x,16);
macpart[0]=argv[2][12];
macpart[1]=argv[2][13];
mac[6*i+4]=strtol(macpart,&x,16);
macpart[0]=argv[2][15];
macpart[1]=argv[2][16];
mac[6*i+5]=strtol(macpart,&x,16);
}
for (i=0;i<103;i++) test[i]=mac[i];
test[102]=0;
printf("Magic-Packet an IP : %s Port 9 udp \n",argv[1]);
//printf("Packet : %s \n",test);
sendto(sockfd,&mac,102,0,(struct sockaddr *)&serverAddress,sizeof(serverAddress));
close(sockfd);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment