www.pudn.com > 5.rar > 5.Cpp
#include"stdafx.h" #include#include #include #include #include #include "Packet32.h" #include"Ntddndis.h" #pragma comment(lib,"Packet.lib") typedef struct DLCHeader { unsigned char DesMAC[6]; unsigned char SrcMAC[6]; unsigned short Ethertype; } DLCHEADER; typedef struct ARPFrame { unsigned short HW_Type; unsigned short Prot_Type; unsigned char HW_Addr_Len; unsigned char Prot_Addr_Len; unsigned short Flag; unsigned char Send_HW_Addr[6]; unsigned char Send_Prot_Addr[4]; unsigned char Targ_HW_Addr[6]; unsigned char Targ_Prot_Addr[4]; unsigned char padding[18]; }ARPFRAME; typedef struct ARPPacket { DLCHEADER dlcHeader; ARPFRAME arpFrame; }*PARPPACKET; ARPPacket ARPPACKET; #include #include #include"h.h" int transIP(char *,unsigned char *); int transMAC(char *,unsigned char *); LPADAPTER lpAdapter; LPPACKET lpPacket; bool Send(); void main(int argc,char *argv[]) { if(argc!=6) { cout<<"输入格式错误"< '9')&&ip[i]!='.') { cout<<"输入ip:"< 3) { cout<<"输入ip:"< 3) { cout<<"输入ip:"< '9') j++; a[i]=(unsigned char)atoi(ip+j); while(*(ip+j)>='0'&&*(ip+j)<='9') j++; } return 1; } int transMAC(char *argv,unsigned char *b) { char mac[18]; int i=0,j=0,k=0; strcpy(mac,argv); int m=strlen(argv); for(i=0;i ':'&&mac[i]<'A')||(mac[i]>'Z'&&mac[i]<'a')||mac[i]>'z') { cout<<"shuru mac:"< 2) { cout<<"shuru mac:"< 5) { cout<<"shuru mac:"< ='0'&&*(mac+j)<='9') b[i]=(unsigned char)(*(mac+j)-'0'); if(*(mac+j)>='a'&&*(mac+j)<='z') b[i]=(unsigned char)(*(mac+j)-'a'+10); if(*(mac+j)>='A'&&*(mac+j)<='Z') b[i]=(unsigned char)(*(mac+j)-'A'+10); j++; b[i]*=16; if(*(mac+j)>='0'&&*(mac+j)<='9') b[i]+=(unsigned char)(*(mac+j)-'0'); if(*(mac+j)>='a'&&*(mac+j)<='z') b[i]+=(unsigned char)(*(mac+j)-'a'+10); if(*(mac+j)>='A'&&*(mac+j)<='Z') b[i]+=(unsigned char)(*(mac+j)-'A'=10); j++; } return 1; } bool Send() { char AdapterNameA[8192]; char AdapterNameU[2*sizeof(AdapterNameA)]; unsigned long AdapterALength=sizeof(AdapterNameA); unsigned long AdapterULength=2*sizeof(AdapterNameA); DWORD dwVersion=GetVersion(); DWORD dwWindowsMajorVersion=(DWORD)(LOBYTE(LOWORD(dwVersion)));; if(!(dwVersion>=0x80000000&&dwWindowsMajorVersion>=4)) { if(PacketGetAdapterNames(AdapterNameU,&AdapterULength)==FALSE) { cout<<"无法得到网卡列表!"< hFile==INVALID_HANDLE_VALUE) { cout<<"无法得到网卡,错误码:"<