#说明
本文是将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];

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

被折叠的 条评论
为什么被折叠?



