资源简介
Linux 网络编程—— libpcap 详解,相关教程链接如下:
http://blog.csdn.net/tennysonsky/article/details/44811899
代码片段和文件信息
/*=========================================================================
工程名称: 01-libpcap-demo
组成文件: 01-libpcap-demo(接收一个数据包).c
功能描述: 通过捕获一个网络数据包,然后对其进行数据的解析分析
维护记录:
2015-04-02 v1.0 add by Mike
=========================================================================*/
#include
#include
#include
#include
#include
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 argcchar *argv[])
功能描述:通过使用libpcap接收一个数据包,然后对数据包进行解析
参数传递:无
返回数据:无
维护记录:
2015-04-02 v1.0 add by Mike
=========================================================================*/
int main(int argcchar *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_nameBUFSIZE10error_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;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3400 2015-04-02 19:24 libpcap 详解源码\01-libpcap-demo(接收一个数据包).c
文件 3267 2015-04-02 19:28 libpcap 详解源码\02-libpcap-demo(接收多个数据包).c
文件 1301 2012-04-28 20:26 libpcap 详解源码\03-demo(设置过滤规则).c
目录 0 2015-04-02 20:07 libpcap 详解源码\
相关资源
- TCP/IP网络编程 [韩] 尹圣雨 带目录完整
- UNIX网络编程卷1第三版中文
- Windows网络编程之Delphi篇——完整版
- UNIX 网络编程第2版(高清PDF中文版)
- UNIX网络编程第2卷.pdf
- 网络编程汇总第一到第七章
- VS2010聊天室的开发
- QQ聊天室 包括私聊功能
- Windows网络编程第二版真正的高清带书
- UNIX网络编程第2卷-进程间通信第2版
- unix网络编程第2卷高清PDF
- 网络编程与开发技术.(西安交大.殷肖
- Linux网络编程 宋敬彬 孙海滨 PDF书 P
- 《Windows网络编程技术》高清PDF版+随书
- Windows网络编程第二版 中文、英文版(
- UNIX网络编程卷2:进程间通信第2版.
- 《iOS网络编程与云端应用最佳实践》
- WinSock网络编程经络高清PDF和随书源码
- 图解TCP/IP(第5版)
- UNIX网络编程 卷1:套接字联网API第3版
- TCPIP 网络编程 韩国 尹圣雨
- 《UNIX网络编程卷1:套接字联网API第
- UNIX网络编程卷2
- Qt超炫日历
- UNIX网络编程 卷2 进程间通信(第2版)
- TCP_IP网络编程(任泰明 著) 超高清晰
- 黑马程序员-Linux网络编程课件
- UNIX网络编程卷1(第三版 英文版)
- LINUX网络编程_宋敬彬_孙海滨(pdf&代码
- TCP/IP网络编程 尹圣雨源代码+PDF书籍
评论
共有 条评论