哈工大网络安全实验二报告

网络安全实验报告

题 目 捕包软件的使用与实现
专 业 信息安全
指 导 教 师 王彦

一、实验目的
理解捕包程序捕包过程,可以自己编程捕包并从数据包中解析出需要的信息。
二、实验内容

  1. 熟练使用 sniffer 或 wireshark 软件,对协议进行还原(能够找访问网页的四元组);只需要写报告,不需要在实验课检查。
  2. 利用 libpcap 或 winpcap 进行编程,能够对本机的数据包进行捕获分析(比如将本机所有数据包的四元组写到指定文件),按照自己的设想撰写需求分析和详细设计。(实验课检查程序)
    三、实验过程
    (一)使用 wireshark 软件对协议进行还原
    实验基本信息:
    实验环境:Windows10 x64
    WireShark3.4.0
  3. 捕包并分析四元组
    (1) TCP 分析
    在这里插入图片描述

截图中这个 TCP 数据包,源 IP 为 172.20.4.11,目的 IP 为 39.156.66.14,源
端口为 65340,目的端口为 443。
分析:以太网头部:
前 6 个字节 58 69 6c a5 e2 d3 为目的主机 MAC,往后 6 个字节 e8 2a 44 23 0b 00为源主机MAC,
往后 2 个字节为上层协议,0x0800 表示 IPv4 协议;以太网头部结束,现在是 ip 头部:往后 1 个字节 0x45 表示 IP 版本为 4,头部长度为 5,往后 1 个字节为区分服务,0x00 表示默认,
往后 2 个字节为总长度,0x0028 = 40,往后 2 个字节为 id,值为 0x75be,
往后 2 个字节为标志位+片偏移,值为 0x4000,
往后 1 个字节为 ttl,值为 0x80 = 128,
往后 1 个字节为上层协议,0x06 表示 TCP 协议,往后 2 个字节为头部校验和,值为 0x6b48,
往后 4 个字节为源 ip 地址 0xac14040b,转换为 10 进制就是 172.20.4.11,往后4个字节为目的ip地址0x279c420e,转换为10进制就是39.156.66.14;
ip 头部结束:现在是 TCP 头部:
往后 2 个字节为源端口 0xff3c = 65340,往后 2 个字节为目的端口 0x01bb = 443,往后 4 个字节为 seq 9f50644c,往后 4 个字节为 ack 0xbcd895aa,
往后 1 个字节为头部长度 0x50 = 80(其实是 4 位),
往后 1 个字节为标志位(其实是 6 位),
往后 2 个字节为窗口大小 0x0400 = 1024,往后 2 个字节为校验和 0x3af3,
往后 2 个字节为紧急指针 0x0000; TCP 头部结束,接下来是数据。
在这里插入图片描述

截图中这个 UDP 数据包,源 IP 为 172.20.4.11,目的 IP 为 111.161.107.152,
源端口为 4006,目的端口为 8000。
分析:
以太网头部和 ip 头部与 TCP 协议基本相同,直接分析 UDP 头部,从第三行第三个字节开始:
2 个字节源端口 0x0fa6= 4006,
2 个字节目的端口 0x1f40 = 8000,
2 个字节总长度 0x0037 = 55, 2 个字节校验值:0xaeaa;
后面全都是数据。
(二)利用 libpcap 编写捕包软件实验基本信息:
实验环境:Ubuntu16.04 x64
编程语言:C 语言

  1. 需求分析
    本程序需要运用 libpcap 来捕获本机数据包,并获取数据包中的四元组,将其展示给用户。
    程序功能:
    (1)捕获本机数据包;
    (2)逐层解析数据包,获得 IPv4 数据包的源 ip、目的 ip、源端口、目的端口;
    (3)将上述四元组写入文件。
  2. 环境配置
    (1)直接下载需要的数据包:
    apt-get install flex
    apt-get install bison
    wget -c http://www.tcpdump.org/release/libpcap-1.7.4.tar.gz
    (2)对以上安装包逐个使用以下命令来解压安装包:
    tar libpcap-1.7.4.tar.gz
    (3)进入解压后的文件夹后执行以下命令来安装库文件:
    ./configure
    make
    make install
    (4)配置好环境后,将需要的文件移动到usr/include以及usr/lib中,并链接生成程序执行时需要的库文件
    在home/libpcap-1.7.4文件夹下执行:sudo cp -r pcap /usr/include将程序需要的源文件移动到位置
    在usr/lib/x86_64-linux-gnu下执行:sudo cp libpcap.so.0.8 /usr/lib将需要的库移动到指定位置。
    在usr/lib文件夹下执行ln -s libpcap.so.0.8 libpcap.so命令可生成 libpcap.so 文件。
    这样就编译器就可以正常链接到库了,关于 libpcap 的环境配置也就完成了。
  3. 数据结构设计
    由于是逐层解析以太网数据帧,所以需要准备至少三种数据结构:以太网数据帧头、IPv4 数据报头、传输层报文头。具体如下:
    数据结构的定义原则:1 字节数据定义为 u_char,2 字节数据定义为 u_short,其他 2 的倍数字节的数据(MAC 地址和 IP 地址)定义为 u_char 数组(TCP 的序列号和 ack 定义为 u_int,因为它们的表现形式就是一个数字,但地址我们通常是一个一个字节分开解析的)。
    (1) 以太网数据帧头
    在这里插入图片描述

(2) IPv4 数据报头
在这里插入图片描述

(3) TCP 报文头
在这里插入图片描述

(4) UDP 报文头
在这里插入图片描述

  1. 回调函数设计
    在这里插入图片描述

首先捕获网络数据包,捕获到一个将其实际数据内容立即传入pcap_callback回调函数。在回调函数中,首先分析实际数据长度以及其接收时间,再根据数据包特定的数据结构,从中分析出其mac地址,对应的ip信息,tcp或者udp信息。
在这里插入图片描述

  1. 主函数设计
    第一步:获取网络设备。
    第二步:使用 pcap_open_live()函数来获得捕包描述字。
    第三步:如果有过滤条件的话,设置过滤条件。
    第四步:生成本次捕包的pcap文件(save1.pcap)
    第五步:使用 pcap_loop()函数和回调函数pcap_callback()来循环捕包。
  2. 编译运行
    使用下列命令编译:
    gcc -o pcap pcap.c -lpcap
    其中-lpcap 用来链接 pcap 库。
    使用下列命令运行:
    sudo ./pcap
    捕包程序在运行时需要 root 权限,否则无法正常打开。

四、实验结果
(一) 利用 libpcap 编写捕包软件
以下为捕包时部分输出:
在这里插入图片描述

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值