• 大小: 203KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: 其他
  • 标签: ARP  协议  获得  

资源简介

计算机网络高级软件编程技术第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


评论

共有 条评论