资源简介
计算机网络高级软件编程技术第3章 ARP协议获得局域网内活动主机物理地址程序源代码
代码片段和文件信息
#include “arp.h“
#include “StdAfx.h“
#pragma comment(lib “wpcap“)
extern string strSelDeviceName;
extern unsigned char* bLocalMac;
extern pcap_if_t* pDevGlobalHandle;
extern int nThreadSignal;
extern int GetMacSignal;
char* IpToStr(unsigned long ulIP)
{
static char output[IPTOSBUFFERS][3 * 4 + 3 + 1];
static short which;
unsigned char* chIP;
chIP = (unsigned char*)&ulIP;
which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);
sprintf(output[which] “%d.%d.%d.%d“ chIP[0] chIP[1] chIP[2] chIP[3]);
return output[which];
}
char* MacToStr(unsigned char* chMAC)
{
static unsigned char uMac[18];
for(int i=0; i < 17; i++)
{
if ((i+1) % 3)
{
if (!(i % 3))
{
if ((chMAC[i/3] >> 4) < 0x0A)
{
uMac[i] = (chMAC[i/3] >> 4) + 48;
}
else
{
uMac[i] = (chMAC[i/3] >> 4) + 55;
}
if ((chMAC[i/3] & 0x0F) < 0x0A)
{
uMac[i+1] = (chMAC[i/3] & 0x0F) + 48;
}
else
{
uMac[i+1] = (chMAC[i/3] & 0x0F) + 55;
}
}
}
else
{
uMac[i] = ‘-‘;
}
}
uMac[17] = ‘\0‘;
return (char*)uMac;
}
char* DelSpace(char* in)
{
int strLen = 0;
while(in[strLen++] != ‘\0‘);
static char chTemp[10240];
if(10240 {
MessageBox(NULL“Over Flow ““Error“MB_OK|MB_IConerror);
return NULL;
}
int i = 0;
int j = 0;
while(in[i] != ‘\0‘)
{
if(in[i] != ‘ ‘)
{
chTemp[j++] = in[i++];
}
else
{
chTemp[j++] = in[i++];
while(in[i] == ‘ ‘)i++;
}
}
chTemp[j] = ‘\0‘;
return chTemp;
}
unsigned char* BuildArpRequestPacket(unsigned char* source_mac unsigned char* arp_sha unsigned long chLocalIP unsigned long arp_tpa int PackSize)
{ //封装ARP请求包
static arp_packet arpPackStru;
static const arp_packet arpDefaultPack= {ETH_HRD_DEFAULTARP_HRD_DEFAULT};
memcpy(&arpPackStru&arpDefaultPacksizeof(arpDefaultPack));
memcpy(arpPackStru.eth.source_macsource_mac6);
memcpy(arpPackStru.arp.sour_addrarp_sha6);
arpPackStru.arp.sour_ip=chLocalIP;
arpPackStru.arp.dest_ip=arp_tpa;
return (unsigned char *)&arpPackStru;
}
unsigned char* GetSelfMac(char* pDevName unsigned long chLocalIP)
{ //获得自己的MAC
pcap_t* pAdaptHandle; //打开网卡适配器时用
char errbuf[PCAP_ERRBUF_SIZE + 1];
if((pAdaptHandle = pcap_open_live(pDevName 60 1 100 errbuf)) == NULL)
{
MessageBox(NULL “无法打开适配器,可能与之不兼容!“ “Note“ MB_OK);
return NULL;
}
struct pcap_pkthdr *header;
const u_char *pkt_data;
int res;
unsigned short arp_op;
static unsigned char arp_sha[6];
unsigned long arp_spa = 0;
unsigned long arp_tpa = 0;
unsigned char source_mac[6] = {000000};
unsigned char* arp_packet_for_self;
arp_packet_for_self = BuildArpRequestPacket(source_mac source_mac SPECIAL chLocalIP 60);
while(!GetMacSignal)
{
pcap_sendpacket(pAdaptHandle arp_packet_for_self 60);
Sleep(10);
res = pcap_next_ex(pAdaptHa
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7233 2007-06-28 18:55 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\arp.cpp
文件 826 2007-06-28 09:20 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\arp.h
文件 37892 2007-06-28 09:23 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\ArpByWinpcap.aps
文件 2071 2007-05-08 15:02 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\ArpByWinpcap.cpp
文件 1390 2006-10-19 08:00 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\ArpByWinpcap.h
文件 158720 2007-06-29 19:28 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\ArpByWinpcap.ncb
文件 1126 2006-10-25 08:00 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\ArpByWinpcap.plg
文件 913 2006-11-01 08:00 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\ArpByWinpcap.sln
文件 8704 2007-06-29 19:28 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\ArpByWinpcap.suo
文件 6426 2007-06-28 09:26 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\ArpByWinpcap.vcproj
文件 8743 2007-06-29 19:39 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\ArpByWinpcapDlg.cpp
文件 1654 2007-06-28 09:05 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\ArpByWinpcapDlg.h
文件 3687 2006-10-19 08:00 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\ReadMe.txt
文件 1058 2006-10-25 08:00 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\resource.h
文件 214 2006-10-19 08:00 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\StdAfx.cpp
文件 3187 2007-06-28 08:53 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\StdAfx.h
文件 17414 2005-08-02 08:00 第3章 ARP协议获得局域网内活动主机物理地址程序\Code\wpcap.lib
文件 237568 2007-06-29 19:41 第3章 ARP协议获得局域网内活动主机物理地址程序\Exe\ArpByWinpcap.exe
文件 67584 2007-06-28 09:46 第3章 ARP协议获得局域网内活动主机物理地址程序\使用说明.doc
文件 119 2010-05-20 15:07 第3章 ARP协议获得局域网内活动主机物理地址程序\我的空间.url
文件 125 2010-05-20 15:08 第3章 ARP协议获得局域网内活动主机物理地址程序\说明.url
目录 0 2010-05-20 15:07 第3章 ARP协议获得局域网内活动主机物理地址程序\Code
目录 0 2010-05-20 15:07 第3章 ARP协议获得局域网内活动主机物理地址程序\Exe
目录 0 2010-05-20 15:08 第3章 ARP协议获得局域网内活动主机物理地址程序
----------- --------- ---------- ----- ----
566654 24
评论
共有 条评论