网络编程工程实训__实验一 使用Libpcap库抓包

一、实验任务:

使用前期搭建好的开发环境(Centos7.0+gcc+libpcap),使用C/C++语言开发一个应用程序,打开虚拟机网卡(与物理主机在同一个子网的)设备,抓取数据包,并打印数据包内容。

二、实验内容:

1.使用libpcap库的pcap_open_live()函数,打开虚拟机网卡,并根据打开成功与否,打印“Hello+你的项目组成员姓名!”(成功)或“Sorry+你的项目组成员姓名!”(失败)
2.使用libpcap库的pcap_open_live()函数,第四个参数使用-1,打开虚拟机网卡,然后使用pcap_next()函数,抓取一个数据包,并根据打开成功与否,打印“Hello+你的项目组成员姓名!”(成功)或“Sorry+你的项目组成员姓名!”(失败)
3.使用libpcap库的pcap_open_live()函数,第四个参数使用0,打开虚拟机网卡,然后使用pcap_next()函数,抓取一个数据包,并根据打开成功与否,打印“Hello+你的项目组成员姓名!”(成功)或“Sorry+你的项目组成员姓名!”(失败)
4.使用libpcap库的pcap_open_live()函数,第四个参数使用1000,打开虚拟机网卡,然后使用pcap_next()函数,抓取一个数据包,并根据打开成功与否,打印“Hello+你的项目组成员姓名!”(成功)或“Sorry+你的项目组成员姓名!”(失败)
实验过程填写要求:观察以上2-4中程序运行有什么不同,写出详细步骤,并抓图放入报告中

三、实验过程:

1.实验内容一
(1)打开CentOS的终端,在home目录下新建文件夹mywork,
(2)在mywork里新建文件open_device.c,编辑如下代码,
使用pcap_open_live()函数,打开虚拟机网卡
网络编程工程实训__实验一 使用Libpcap库抓包_第1张图片
(3)编译、运行代码
在这里插入图片描述

2.实验内容二
(1)新建next.c,编写如下内容
使用libpcap库的pcap_open_live()函数,第四个参数使用-1,打开虚拟机网卡
网络编程工程实训__实验一 使用Libpcap库抓包_第2张图片
网络编程工程实训__实验一 使用Libpcap库抓包_第3张图片
(2)编译、运行代码
网络编程工程实训__实验一 使用Libpcap库抓包_第4张图片
3.实验内容三
(1)修改next.c,使用libpcap库的pcap_open_live()函数,第四个参数使用0,打开虚拟机网卡
(2)编译、运行代码

4.实验内容四
(1)修改next.c,使用libpcap库的pcap_open_live()函数,第四个参数使用1000,打开虚拟机网卡
(2)编译、运行代码

5.总结:

  1. 函数pcap_open_live(char *device ,int snaplen ,int promisc ,int to_ms,char *errbuf)
    第一个参数是设备;
    第二个参数是对于每个数据包,从开头要抓多少个字节;
    第三个0表示非混杂模式,任何其他值表示混合模式;
    第四个为等待时间。 -1 不等待,有包就返回一个包,没报返回null,0就无限等待。整数就等待整数个毫秒;
    第五个参数是出错信息

  2. pcap_open_live()第三个参数为0需要网卡的阻塞支持,收不到包时不返回,此时可以使用pcap_loop()函数,其功能是捕获数据包,不会响应pcap_open_live()函数设置的超时时间
    pcap_loop()函数的第一个参数是设备;第二个参数cnt为-1,就一直抓包,
    pcap_loop的最后一个参数user是留给用户使用的,当callback被调用的时候这个值会传递给callback的第一个参数(也叫user)

你可能感兴趣的:(操作部分,笔记类,网络编程工程实训,C语言)