/*=========================================================================
工程名称: 01-libpcap-demo
组成文件: 01-libpcap-demo(接收一个数据包).c
功能描述: 通过捕获一个网络数据包,然后对其进行数据的解析分析
维护记录:
2015-04-02 v1.0 add by Mike
=========================================================================*/
#include <stdio.h>
#include <pcap.h>
#include <arpa/inet.h>
#include <time.h>
#include <stdlib.h>
struct ether_header
{
unsigned char ether_dhost[6]; //目的mac
unsigned char ether_shost[6]; //源mac
unsigned short ether_type; //以太网类型
};
#define BUFSIZE 1514
/*=========================================================================
函数名称:int main(int argc,char *argv[])
功能描述:通过使用libpcap接收一个数据包,然后对数据包进行解析
参数传递:无
返回数据:无
维护记录:
2015-04-02 v1.0 add by Mike
=========================================================================*/
int main(int argc,char *argv[])
{
pcap_t * pcap_handle = NULL;
char error_content[100] = ""; // 出错信息
const unsigned char *p_packet_content = NULL; // 保存接收到的数据包的起始地址
unsigned char *p_mac_string = NULL; // 保存mac的地址,临时变量
unsigned short ethernet_type = 0; // 以太网类型
char *p_net_interface_name = NULL; // 接口名字
struct pcap_pkthdr protocol_header;
struct ether_header *ethernet_protocol;
//获得接口名
p_net_interface_name = pcap_lookupdev(error_content);
if(NULL == p_net_interface_name)
{
perror("pcap_lookupdev");
exit(-1);
}
//打开网络接口
pcap_handle = pcap_open_live(p_net_interface_name,BUFSIZE,1,0,error_content);
p_packet_content = pcap_next(pcap_handle,&protocol_header);
printf("------------------------------------------------------------------------\n");
printf("capture a Packet from p_net_interface_name :%s\n",p_net_interface_name);
printf("Capture Time is :%s",ctime((const time_t *)&protocol_header.ts.tv_sec));
printf("Packet Lenght is :%d\n",protocol_header.len);
/*
*分析以太网中的 源mac、目的mac
*/
ethernet_protocol = (struct ether_header *)p_packet_content;
p_mac_string = (unsigned char *)ethernet_protocol->ether_shost;//获取源mac
printf("Mac Source Address is %02x:%02x:%02x:%02x:%02x:%02x\n",*(p_mac_string+0),*(p_mac_string+1),*(p_mac_string+2),*(p_mac_string+3),*(p_mac_string+4),*(p_mac_string+5));
p_mac_string = (unsigned char *)ethernet_protocol->ether_dhost;//获取目的mac
printf("Mac Destination Address is %02x:%02x:%02x:%02x:%02x:%02x\n",*(p_mac_string+0),*(p_mac_string+1),*(p_mac_string+2),*(p_mac_string+3),*(p_mac_string+4),*(p_mac_string+5));
/*
*获得以太网的数据包的地址,然后分析出上层网络协议的类型
*/
ethernet_type = ntohs(ethernet_protocol->ether_type);
printf("Ethernet type is :%04x\t",ethernet_type);
switch(ethernet_type)
{
case 0x0800:printf("The network layer is IP protocol\n");break;//ip
case 0x0806:printf("The network layer is ARP protocol\n");break;//arp
case 0x0835:printf("The network layer is RARP protocol\n");break;//rarp
default:printf("The network layer unknow!\n");break;
}
pcap_close(pcap_handle);
return 0;
}
![avatar](https://profile-avatar.csdnimg.cn/3f57ce18e9e145979c85c2ffe7810c9d_tennysonsky.jpg!1)
Mike江
- 粉丝: 5276
- 资源: 107
最新资源
- Simulink仿真下的四有源桥电路解耦控制:模型预测控制方法与多种工作模式切换,高精度动态响应及理论推导文件,Simulink仿真实现四有源桥电路解耦控制:模型预测控制下的多模式输出控制,高精度动态
- 基于TypeScript实现的宝霆公共应用API设计源码
- 基于Vue框架的人力资源管理项目Vue2-ihrm设计源码
- PLL锁相环与CMOS模拟集成电路设计教程:初学者快速上手指南,涵盖Verilog模型、Testbench电路与仿真设计文档,初学者必备的PLL锁相环与CMOS模拟集成电路设计资料:涵盖Verilog
- Comsol相场模拟:锂枝晶多核生长的各向异性与温度场效应,Comsol相场模拟:锂枝晶多核生长的各向异性与温度场效应,comsol相场枝晶生长模拟,comsol 锂枝晶生长过程中施加温度场,锂枝晶生
- 基于阿里云SDK与ThinkPHP6的域名分发系统设计源码
- Abaqus静动力学仿真与风振响应分析:光伏支架模态及脉动风模拟研究,Abaqus静动力学仿真与风振响应分析:光伏支架模态及风致振动研究,abaqus静力学动力学仿真分析,风振响应分析,脉动风模拟,光
- 基于Kotlin语言的KotlinFitnessServer运动器械从机服务端设计源码
- 基于COMSOL的锂枝晶生长模型:融合电势场、浓度场与流场,探究电压模式对枝晶形貌的影响,Comsol多场耦合下锂枝晶生长模拟:电势、浓度与流场影响形貌及随机形核研究,comsol 锂枝晶加流动耦合电
- 基于元胞自动机与相场模型的枝晶生长模拟:考虑对流、多物理场与溶质富集的分析研究,利用元胞自动机与LBM模拟枝晶生长:角度自由、物理场多元融合,观察枝晶生长细节与溶质富集动态,C++程序,基于元胞自动机
- 永磁同步电机矢量控制C代码详解:涵盖FOC控制算法、弱磁、母线电流估算及SVPWM技术等多功能实现,永磁同步电机矢量控制C代码详解:涵盖FOC控制算法、弱磁、母线电流估算及SVPWM等技术 这是一个涵
- 基于Vue框架的family_education家教项目设计源码
- 基于Vue2+ElementUI+VueCli的当当书城前端项目设计源码
- 基于Html和Java的桃园中学维修工单与打卡系统设计源码
- 四轮转向汽车Carsim与Simulink联合仿真滑模控制模型详解:涵盖驾驶员模型、二自由度车辆模型、文献及技术支持,四轮转向汽车Carsim与Simulink联合仿真滑模控制模型研究(含文献文档及全
- Simulink模型库:全面解析各类电机模型的应用与搭建方法,基于Simulink技术的多类型电机模型构建与应用,Simulink搭建的各种电机模型 ,电机模型; Simulink; 搭建; 模型模拟
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)