| 12
 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
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 
 | #include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <windows.h>
 
#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "ws2_32.lib")
 
int __cdecl main(int argc, char **argv)
{
    DWORD dwRetVal;
    IPAddr DestIp = 0;
    IPAddr SrcIp = 0;      
    ULONG MacAddr[2];      
    ULONG PhysAddrLen = 6;  
 
    char DestIpString[100];
    int mac;
    char *SrcIpString = 0;
 
    BYTE *bPhysAddr;
    int i;
 
    /////
 
 
    for (char nombre=1 ; nombre<255 ; nombre++)
    {
 
    sprintf (DestIpString,"10.66.255.%d",nombre);
 
    /////
 
     DestIp = inet_addr(DestIpString);
 
     memset(&MacAddr, 0xff, sizeof (MacAddr));
 
      printf("Sending ARP request for IP address: %s\n", DestIpString);
 
 
      dwRetVal = SendARP(DestIp, SrcIp, &MacAddr, &PhysAddrLen);
 
      if (dwRetVal == NO_ERROR) {
           bPhysAddr = (BYTE *) & MacAddr;
            if (PhysAddrLen) {
              for (i = 0; i < (int) PhysAddrLen; i++) {
                   if (i == (PhysAddrLen - 1))
                     printf("%.2X\n", (int) bPhysAddr[i]);
                 else
                       printf("%.2X-", (int) bPhysAddr[i]);
             }
         } else
              printf
                 ("Warning: SendArp completed successfully, but returned length=0\n");
 
     } 
      else {
        printf("Error: SendArp failed with error: %d", dwRetVal);
        switch (dwRetVal) {
        case ERROR_GEN_FAILURE:
            printf(" (ERROR_GEN_FAILURE)\n");
            break;
        case ERROR_INVALID_PARAMETER:
            printf(" (ERROR_INVALID_PARAMETER)\n");
            break;
        case ERROR_INVALID_USER_BUFFER:
            printf(" (ERROR_INVALID_USER_BUFFER)\n");
            break;
        case ERROR_BAD_NET_NAME:
            printf(" (ERROR_GEN_FAILURE)\n");
            break;
        case ERROR_BUFFER_OVERFLOW:
            printf(" (ERROR_BUFFER_OVERFLOW)\n");
            break;
        case ERROR_NOT_FOUND:
            printf(" (ERROR_NOT_FOUND)\n");
            break;
        default:
            printf("\n");
            break;
        }
    }
 
}
    return 0;
 
} | 
Partager