利用Scapy解析TTL字段的值
实验指导
实验十利用Scapy解析TTL字段的值
【实验介绍】
1.概述
IP包中的TTL字段由8比特组成,当计算机发送一个IP数据包时,它将TTL值设置为数据包在到达目的地之前所应经过的中继跳的上限值,数据包每经过一个路由设备,TTL值就自减一,如果TTL值到了零,路由器就会丢弃该数据包防止路由无限循环。Linux中的TTL初始值默认为64,Windows中的为128。
2.实验目标
了解TTL值的基本知识,学会使用python编写脚本解析TTL字段的值。
本实验主要要求学生掌握以下几个方面:
(1)了解TTL值的基本知识;
(2)了解TTL值的主要作用;
(3)掌握python编写脚本解析TTL字段的值。
3.实验环境
Windows10操作系统;python3.x。
【实验步骤】
1.打开Windows操作系统
首先,我们需要进入Windows操作系统,界面图如下:
2.验证Python
(1)按住快捷键“Win+R”打开运行窗口,输入cmd,进入命令行窗口。
(2)在命令行窗口输入:python命令,验证是否存在。
3.脚本设计思路
(1)首先,我们要理解TTL字段。TTL字段包含8个bit,有效值0到255。当计算机发送一个IP数据包时,它设置TTL字段为可以到达目的地的最大跳,每个路由设备改变数据包的TTL字段值。
(2)其次,我们建立一个函数testTTL()来嗅探每一个经过的数据包,检查数据包的IP层,抽取IP地址和TTL字段并打印字段在屏幕上。
(3)最后,我们建立一个checkTTL()函数,checkTTL()需要一个IP源地址和对应的TTL值作为输入并输出TTL是否有效的信息。首先,让我们用一个条件与语句快速的消除死人IP地址的数据包(10.0.0.0–10.255.255.255,172.16.0.0–172.31.255.255,和192.168.0.0–192.168.255.255)。为此,我们导入IPy库,为了避免和Scapy的IP类冲突,我们把它作为IPTEST,如果IPTEST(ipsrc).iptype()返回‘PRIVATE‘,我们变忽略检查这个数据包。
我们从相同的源地址收到了不少的独特的数据包,我们只需要检查源地址一次。如果先前我们没看到源地址,让我们构建一个目的地址与源地址相同的IP数据包。此外,我们将制作一个ICMP数据包与目的地址向回应。一旦目标地址回应,我们将TTL值放在字典中,通过IP源地址索引,我们再来检查实际收到的TTL值和原始数据包里面的TTL值。数据包可能会走不同的路线来到达目的地,造成TTL不同,然而,如果跳数的距离相差五跳,我们可以假定,它可能是一个欺骗性的TTL,并打印警告信息在屏幕上。
4.编写准备
(1)我们在编写脚本之前先查看一下本机IP地址。
①按住“Win+R”,打开运行,输入cmd进入命令行窗口,如下如所示:
②在命令行窗口输入ipconfig回车,查看本机IP地址。
5.编写Python脚本
(1)开始着手编写Python脚本。打开Pycharm工具,界面图如下:
(2)我们创建两个函数实现两个功能。第一个功能是利用建立的函数testTTL()来嗅探每一个经过的数据包,检查数据包的IP层,抽取IP地址和TTL字段并打印字段在屏幕上;第二个功能是构建一个目的地址与源地址相同的IP数据包。此外,我们将制作一个ICMP数据包与目的地址向回应。一旦目标地址回应,我们将TTL值放在字典中,通过IP源地址索引,我们再来检查实际收到的TTL值和原始数据包里面的TTL值。
完整代码截图:
运行结果截图:
实验报告
一、实验报告
IP包中的TTL字段由8比特组成,当计算机发送一个IP数据包时,它将TTL值设置为数据包在到达目的地之前所应经过的中继跳的上限值,数据包每经过一个路由设备,TTL值就自减一,如果TTL值到了零,路由器就会丢弃该数据包防止路由无限循环。Linux中的TTL初始值默认为64,Windows中的为128。
1、实验目的
使学生了解TTL值的基本知识,学会使用python编写脚本解析TTL字段的值。
本实验主要要求学生掌握以下几个方面:
(1)了解TTL值的基本知识;
(2)了解TTL值的主要作用;
(3)掌握python编写脚本解析TTL字段的值。
2、实验环境
Windows10操作系统;
Python3.x;
PyCharm编译器。
3、实验准备
了解TTL值的基本知识;了解TTL值的主要作用。
4、实验过程
首先我们安装一个WinPCAP,winpc