Advertisement
kernel_memory_dump

Untitled

Jan 24th, 2014
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.56 KB | None | 0 0
  1. /***************
  2.  
  3.  
  4. M-SEARCH * HTTP/1.1
  5. HOST: 239.255.255.250:1900
  6. MAN: ssdp:discover
  7. MX: 10
  8. ST: ssdp:all
  9.  
  10.  
  11. ************/
  12.  
  13. #define SEARCH_REQUEST_STRING "M-SEARCH * HTTP/1.1\r\n"            \
  14.                               "HOST: 239.255.255.250:1900\r\n"     \
  15.                               "MAN: ssdp:discover\r\n"             \
  16.                               "MX: 4\r\n"                          \
  17.                               "ST: ssdp:all\r\n"            \
  18.                               "\r\n"
  19.  
  20. #include <sys/types.h>   /* for type definitions */
  21. #include <winsock2.h>    /* for win socket API calls */
  22. #include <ws2tcpip.h>    /* for win socket structs */
  23. #include <stdio.h>       /* for printf() */
  24. #include <stdlib.h>      /* for atoi() */
  25. #include <string.h>      /* for strlen() */
  26. #include <windows.h>
  27.  
  28. #define MAX_LEN  1024    /* maximum string size to send */
  29. #define MIN_PORT 1024    /* minimum port allowed */
  30. #define MAX_PORT 65535   /* maximum port allowed */
  31.  
  32. /*******************************
  33.  
  34.  
  35. wai am I not getting ANY RESPONSE????
  36. lonely socket :(
  37.  
  38.  
  39. ***************************/
  40. DWORD WINAPI printDevices(void* data) {
  41.     printf("ADSDASDASDdaswewffewfewfewfwe THREADDDD\n");
  42.       int sock2;
  43.   struct sockaddr_in name;
  44.   struct hostent *hp, *gethostbyname();
  45.   char recvline[MAX_LEN];
  46.  
  47.     sock2 = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  48.     name.sin_family = AF_INET;
  49.     name.sin_port = htons(3486);
  50.     name.sin_addr.s_addr = htonl(INADDR_ANY);
  51.     int iResult = bind(sock2, (SOCKADDR *) & name, sizeof (name));
  52.     if (iResult != 0) {
  53.         wprintf(L"bind failed with error %d\n", WSAGetLastError());
  54.         return 1;
  55.     }
  56.  
  57.     while(1){
  58.      recvfrom(sock2,recvline,sizeof(recvline),0,NULL,NULL);
  59.       fputs(recvline,stdout);
  60.     }
  61. }
  62.  
  63.  
  64. int main(int argc, char *argv[]) {
  65.  
  66.   int sock;                   /* socket descriptor */
  67.   char send_str[MAX_LEN] = SEARCH_REQUEST_STRING;    /* string to send */
  68.   char recvline[MAX_LEN*10];
  69.   struct sockaddr_in mc_addr; /* socket address structure */
  70.   int send_len;               /* length of string to send */
  71.   char* mc_addr_str;          /* multicast IP address */
  72.   unsigned short mc_port;     /* multicast port */
  73.   unsigned char mc_ttl=255;     /* time to live (hop count) */
  74.   WSADATA wsaData;            /* Windows socket DLL structure */
  75.   int izbor;
  76.  
  77.   int sock2;
  78.   struct sockaddr_in name;
  79.   struct hostent *hp, *gethostbyname();
  80.  
  81.  
  82.   /* validate number of arguments */
  83.   if (argc != 3) {
  84.     fprintf(stderr,
  85.             "Usage: %s <Multicast IP> <Multicast Port>\n",
  86.             argv[0]);
  87.     exit(1);
  88.   }
  89.  
  90.   mc_addr_str = argv[1];       /* arg 1: multicast IP address */
  91.   mc_port     = atoi(argv[2]); /* arg 2: multicast port number */
  92.  
  93.   /* validate the port range */
  94.   if ((mc_port < MIN_PORT) || (mc_port > MAX_PORT)) {
  95.     fprintf(stderr, "Invalid port number argument %d.\n",
  96.             mc_port);
  97.     fprintf(stderr, "Valid range is between %d and %d.\n",
  98.             MIN_PORT, MAX_PORT);
  99.     exit(1);
  100.   }
  101.  
  102.   /* Load Winsock 2.0 DLL */
  103.   if (WSAStartup(MAKEWORD(2, 0), &wsaData) != 0) {
  104.     fprintf(stderr, "WSAStartup() failed");
  105.     exit(1);
  106.   }
  107.  
  108.   /* create a socket for sending to the multicast address */
  109.   if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
  110.     perror("socket() failed");
  111.     exit(1);
  112.   }
  113.  
  114.   /* set the TTL (time to live/hop count) for the send */
  115.   if ((setsockopt(sock, IPPROTO_IP, IP_MULTICAST_TTL,
  116.       (const char*) &mc_ttl, sizeof(mc_ttl))) < 0) {
  117.     perror("setsockopt() failed");
  118.     exit(1);
  119.   }
  120.  
  121.   /* construct a multicast address structure */
  122.   memset(&mc_addr, 0, sizeof(mc_addr));
  123.   mc_addr.sin_family      = AF_INET;
  124.   mc_addr.sin_addr.s_addr = inet_addr(mc_addr_str);
  125.   mc_addr.sin_port        = htons(mc_port);
  126.  
  127.   printf("Begin typing (return to send, ctrl-C to quit):\n");
  128.    bool bOptVal = true;
  129.     int bOptLen = sizeof(bool);
  130.     int iOptLen = sizeof(int);
  131.   setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char*)&bOptVal, bOptLen);
  132.   /* clear send buffer */
  133.   memset(send_str, 0, sizeof(send_str));
  134.    
  135.  
  136.     send_len = strlen(send_str);
  137.  
  138.  
  139.     HANDLE thread = CreateThread(NULL, 0, printDevices, NULL, 0, NULL);
  140.     /*   */
  141.     //WaitForSingleObject(thread, INFINITE);
  142.  
  143.     while(1){
  144.     /* send string to multicast address */
  145.     if ((sendto(sock, send_str, send_len, 0,
  146.          (struct sockaddr *) &mc_addr,
  147.          sizeof(mc_addr))) != send_len) {
  148.       perror("sendto() sent incorrect number of bytes");
  149.       exit(1);
  150.     }
  151.     Sleep(10000);
  152.     printf("SENNTTT OPET\n\n");
  153.  
  154.     }
  155.  
  156.  
  157.  
  158.   closesocket(sock);  
  159.   WSACleanup();  /* Cleanup Winsock */
  160.  
  161.   exit(0);
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement