arpcap.h
上传用户:gzdtt123
上传日期:2022-01-26
资源大小:88k
文件大小:2k
开发平台:

Visual C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "./Inc/pcap.h"
  4. #pragma comment(lib,"./Lib/wpcap.lib")//#pragma comment(lib,"Iphlpapi.lib")
  5. #pragma comment(lib,"ws2_32.lib")
  6. #define ETH_IP       0x0800//0x0008
  7. #define ETH_ARP      0x0806//0x0608
  8. #define ARP_REQUEST  0x0001//0x0100
  9. #define ARP_REPLY    0x0002//0x0200
  10. #define ARP_HARDWARE 0x0001//0x0100
  11. #pragma pack(push,1)
  12. typedef struct _ETHHDR
  13. {
  14. unsigned char dst_mac[6];
  15. unsigned char src_mac[6];
  16. unsigned short eth_t;
  17. } ETHHDR,*PETHHDR;
  18. typedef struct arphdr
  19. {
  20.     unsigned short  arp_hdr;
  21.     unsigned short  arp_pro;
  22.     unsigned char   arp_hln;
  23.     unsigned char   arp_pln;
  24.     unsigned short  arp_opt;
  25.     unsigned char   arp_sha[6];
  26.     unsigned long   arp_spa;
  27.     unsigned char   arp_tha[6];
  28.     unsigned long   arp_tpa;
  29. } ARPHDR,*PARPHDR;
  30. typedef struct ARPPACK
  31. {
  32. ETHHDR eth;
  33. ARPHDR arp;
  34. } ARPPACK,*PARPPACK;
  35. #pragma pack(push)
  36. /*******变量表******/
  37. char errbuf[2048]; //错误缓冲区
  38. pcap_if_t* device; //设备名
  39. pcap_if_t* alldev; //全部设备
  40. pcap_t* ahandle; //设备句柄
  41. ARPPACK arp;
  42. /*
  43. char DestIP[100]={0}; //目标IP
  44. char SurcIP[100]={0}; //源IP
  45. char DestHard[6]={0}; //目标MAC;
  46. char SurcHard[6]={0}; //源MAC;
  47. char ethDest[6]={0}; //实际目标
  48. char ethSrc[6]={0}; //实际源
  49. */
  50. int Ip = 0;
  51. /*******函数表******/
  52. //初始化设备
  53. void InitDevice();
  54. //结束释放
  55. void FreeDevice();
  56. //构造数据包
  57. void InitPacket();
  58. //写入MAC地址
  59. void WriteHard(unsigned char *Hard,char* Src);
  60. //十六进制转换
  61. char Hex(char Src);