您的位置:首页 > 理论基础 > 计算机网络

ARPSpoofing教程(二) - 获取网络设备中的详细地址信息

2014-05-07 09:01 369 查看
WinPcap中文APIhttp://www.ferrisxu.com/WinPcap/html/index.html
#include"pcap.h"
#include<WinSock.h>
#defineIPTOSBUFFERS12
char*iptos(u_longin){
staticcharoutput[IPTOSBUFFERS][3*4+3+1];
staticshortwhich;
u_char*p=(u_char*)∈
which=(which+1==IPTOSBUFFERS?0:which+1);
sprintf(output[which],"%d.%d.%d.%d",p[0],p[1],p[2],p[3]);
returnoutput[which];
}
char*ip6tos(structsockaddr*sockaddr,char*address,intaddrlen){
socklen_tsockaddrlen=sizeof(sockaddr_in6);
if(getnameinfo(sockaddr,sockaddrlen,address,addrlen,NULL,0,NI_NUMERICHOST)!=0)
address=NULL;
returnaddress;
}
voidifprint(pcap_if_t*d){
charip6str[128];
//devicename
printf("DeviceName:%s\n",d->name);
printf("Description:%s\n",d->description);
//loopbackaddress
if(d->flags&&PCAP_IF_LOOPBACK)
printf("loopback:yes\n");
else
printf("loopback:yes\n");
for(pcap_addr_t*a=d->addresses;a;a=a->next){
printf("AddressFamily:%d\n",a->addr->sa_family);
switch(a->addr->sa_family){
caseAF_INET:
printf("AddressFamily:AF_INTET\n");
if(a->addr)
printf("Address:%s\n",iptos(((structsockaddr_in*)a->addr)->sin_addr.s_addr));
if(a->netmask)
printf("Netmask:%s\n",iptos((((structsockaddr_in*)a->netmask)->sin_addr.s_addr)));
if(a->broadaddr)
printf("BroadcastAddress:%s\n",iptos(((structsockaddr_in*)a->broadaddr)->sin_addr.s_addr));
if(a->dstaddr)
printf("DestinationAddress:%s\n",iptos(((structsockaddr_in*)a->dstaddr)->sin_addr.s_addr));
break;
caseAF_INET6:
printf("AddressFamilyName:AF_INET6\n");
if(a->addr)
printf("Address:%s\n",ip6tos(a->addr,ip6str,sizeof(ip6str)));
break;
default:
printf("AdressFamilyName:Unknown\n");
break;
}
}
}
intmain(){
pcap_if_t*all_devs,*d;
charerrBuf[PCAP_ERRBUF_SIZE+1],source[PCAP_ERRBUF_SIZE+1];
printf("Enterthedeviceyouwanttolist:\n");
printf("rpcap://==>listinterfaceintthemachine\n");
printf("rpcap://hostname:port==>listinterfaceinaremotemachine\n");
printf("file://foldname==>listallpcapfilesinthegivefolder\n");
printf("Enteryourchoice:");
fgets(source,PCAP_ERRBUF_SIZE,stdin);
source[PCAP_ERRBUF_SIZE]='\0';
//getlocaldevicelist\n
if(pcap_findalldevs_ex(source,NULL,&all_devs,errBuf)==-1){
fprintf(stderr,"ERROR:%s\n",errBuf);
exit(1);
}
//printlist
for(pcap_if_t*d=all_devs;d;d=d->next){
ifprint(d);
}
//fianllyfreeanyresource
pcap_freealldevs(all_devs);
}

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

试验结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: