linux下抓包

首先用ifconfig去查询本机的网卡,然后在主函数中修改
在这里插入图片描述这里的enp9s0就是我们需要的

/* capture_packet.c - 截获所有以太网帧数据并进行具体分析 */

/* 常用函数的头文件   */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>  
#include <strings.h>
#include <unistd.h>  
#include <signal.h>

/* 与网络相关的头文件 */
#include <netinet/ip_icmp.h> 
#include <net/if_arp.h>
#include <sys/socket.h>  
#include <netinet/in.h>  
#include <arpa/inet.h>   
#include <netinet/ip.h>  
#include <netdb.h>  
#include <netinet/tcp.h>  
#include <netinet/udp.h> 
#include <signal.h>  
#include <net/if.h>  
#include <sys/ioctl.h>  
#include <sys/stat.h>  
#include <fcntl.h>  
#include <linux/if_ether.h> 
#include <net/ethernet.h>
#include <linux/igmp.h>
#include <netinet/tcp.h>
/* 全局变量结构的结构体原型 - 包含要记录的任何全局信息 */
struct global_info {
   
	unsigned int bytes;		/* 网卡接收的总字节数     */
	unsigned int packet_num;        /* 网卡接受的帧的总数量,帧其实就是分片   */
	
	unsigned int packet_arp;        /* 接收到的arp包的数量    */
	
	
	int print_flag_frame;		/* 是否打印帧头信息标志, 1表示打印, 0表示不打印 flag是国旗标志的意思,frame是框架结构画面的意思 */
	int print_flag_arp;		/* 是否打印arp头信息标志  */
	
};


/* 定义一个全局变量,用于存储全局信息 */
struct global_info global;

struct ip_pair {
   
	unsigned int source_ip;//源ip地址
	unsigned int dest_ip;//目的ip地址
	unsigned int count;//?我不知道
};

/* 定义一个用于存储ip对的结构体数组 这个数组应该是用来存储抓到的ip包的地址*/
struct ip_pair ip_pair[10000];

/* 一个用于初始化全局信息的函数 */
void init_global( struct global_info  * var );//这里定义了一个无类型的初始化函数,利用了global_info结构体来定义了一个名为var的指针

/* 一个用于打印全局信息的函数   */
void print_global( struct global_info var );//这里和上面又不一样,它是定义了一个global_info结构体的实例

/* 打印一个错误,并退出 		*/
void error_and_exit( char * msg, int exit_code );//char * msg这里是定义了一个字符类型的指针msg

/* 设置网卡成混杂模式	        */
int set_card_promisc( char * interface_name, int sock );//同样的道理,这里是定义了一个字符类型的指针interface_name

/* 把mac地址转换一个字符串      */
void mac_to_str( char * buf, char * mac_buf );

/* 用于打印帮助信息 		*/
void 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值