#include<Winsock2.h>
#include<stdio.h>
#include<windows.h>
#pragma comment("Ws2_32.lib")
typedef struct { union { struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { u_short s_w1,s_w2; } S_un_w; u_long S_addr; } S_un;
} IPAddr;
typedef DWORD(*REALSENDARP)(IPAddr DestIP,LONG SrcIP,PULONG pMacAddr,LONG PhyAddrLen);
REALSENDARP SendARP;
void main()
{
HRESULT hr;
IPAddr ipAddr;
ULONG pulMac[2];
ULONG ulLen;
ipAddr = inet_addr ("192.168.25.31");
memset (pulMac, 0xff, sizeof (pulMac));
ulLen = 6;
hr = SendARP (ipAddr, 0, pulMac, &ulLen);
printf ("Return %08x, length %8d\n", hr, ulLen);
size_t i, j;
char * szMac = new char[ulLen*3];
PBYTE pbHexMac = (PBYTE) pulMac;
//
// Convert the binary MAC address into human-readable
//
for (i = 0, j = 0; i < ulLen - 1; ++i) {
j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
}
sprintf (szMac + j, "%02X", pbHexMac[i]);
printf ("MAC address %s\n", szMac);
delete [] szMac;
}
这段代码是在msdn上的,由于vc6没有iphlpapi.lib,所以我就动态调用sendarp,可是前面的inet_addr返回的是ULONG型的值,无法转化成IPAddr,编译老报错!,这是msdn上的代码,怎么回这样呢??请高手帮忙解决!!
[课程]Linux pwn 探索篇!