Linux ARP请求组包工具 C语言socket

该博客介绍了一个C语言编写的ARP请求包发送工具,允许用户自定义源IP、目标IP和源MAC地址。工具在Kali Linux环境下测试,支持两种参数输入模式。代码展示了如何创建和发送ARP请求包,包括解析IP和MAC地址,以及利用socket接口进行通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#说明

本文是将Linux socket发送ARP请求包 C语言中的功能模块进一步编写成为了工具

使得可以修改ARP请求包中的源IP地址、目标IP地址以及源MAC地址

测试平台是kali


#使用演示

程序有两种参数输入模式,一种是包含源IP目标IP源MAC以及网卡设备名;另一种省略源AMC,即默认使用网卡真实MAC地址。

输入模式1

运行结果

抓包结果

输入模式2

运行结果(MAC为网卡真实MAC)

抓包结果


#代码

#include <stdio.h> 
#include <stdlib.h>  
#include <string.h>
#include <unistd.h>

#include <sys/socket.h>     
#include <sys/ioctl.h>      
#include <arpa/inet.h>      

#include <linux/if.h>
#include <linux/if_packet.h> 
#include <linux/if_ether.h>     
#include <linux/if_arp.h>       

#define buffer_len 60   //ARP请求包大小为60B,,抓包时会抓到一些42B的包,这是抓包软件没有显示18B的Padding字段,Padding全0填充在包的末尾

/*ARP包结构*/
/*字段顺序不可更改,发包时是直接将buffer发出*/
struct arp_head
{
    unsigned short hardware_type;   //硬件类型#1:Ethernet
	unsigned short protocol_type;   //协议类型#0x0800:IPv4
    unsigned char hardware_size;    //MAC地址长度#6
    unsigned char protocol_size;    //IP地址长度#4
    unsigned short opcode;          //ARP类型#1:request;2:reply
    unsigned char sender_mac[ETH_ALEN];     //源MAC地址
    unsigned char sender_ip[4];             //源IP地址
    unsigned char target_mac[ETH_ALEN];     //目标MAC地址
    unsigned char target_ip[4];             //目标IP地址
};

int main(int argc, char* argv[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值