11-2 Scapy生成报文帧图和ip路由追踪图
前置条件
Linux环境:本课环境Ubuntu24.04。Windows理论上可以但实际各种问题。
root权限:Ubuntu进入桌面时用root/111111登录。
依赖系统软件:将会安装用于图表生成的其它系统软件。添加环境变量。
实验四 生成IP报文帧
Ubuntu登录桌面时以root用户登录,这样打开的pycharm也是root权限。
scapy
安装PyX库
PyX库介绍:用于生成svg、pdf等2D图片格式。

⭐️安装TexLive
网上许多教程在依赖部分止步于安装PyX库,但代码运行后仍然报PyX的import错误,我曾怀疑是虚拟py解释器问题排查了好久。
官方文档提了要安装这个scapy doc/installation/optional ,但说了一句不是很清楚,下面是理清楚后的结果。
Tex:一种排版引擎。精确控制字体、间距、公式。但比较偏底层,真干活要用在其上开发的软件。
Latex:是Tex的宏级,封装了常用操作,使人们关注在内容书写上。写论文。
TexLive:TeX Live是一个tex的发行版,包含了TeX引擎、LaTeX宏集以及所有必要的工具,这个是最终的图形化软件。除此之外有MikTex。
tlmgr:安装TexLive后生成的命令行工具,用于管理TexLive功能。
PyX:充当Python和TexLive之间的中间调用者。所以这个调用形式跟第四章的netmiko库调用GraphViz画图是一样的。
1)安装TexLive。scapy文档推荐在unix上安装Texlive,实际Texlive和Miktex都支持多操作系统,下一个小问题是texlive官方文档快速安装 采用源代码安装并不方便(wget下载 tar解压缩 make编译 安装 生成软链接),实际可以用操作系统的包管理器安装。

安装Texlive后会生成一个叫tlmgr (TexliveManager)的命令行管理工具,用来管理Texlive的功能。
Python Scapy调用PyX库,PyX库调用tlmgr。所以tlmgr所在目录应该添加进操作系统环境变量PATH中,好在apt方式安装的Texlive已经完成这步骤了。
直接验证

新建一个py脚本
运行结果
调用过程:python代码➡️PyX库➡️TexLive(tlmgr)。
🎉成功结果生成IP帧报文图pdf并自动调用系统看图软件打开,这个图比计算机网络课上的图更加精确,告诉我们一个顶层信息如HTTP请求的下层是TCP/IP协议,信息拆分成一个个报文,每个报文的字节是各种信息的组合如源地址、目标地址、协议。

实验四 生成traceroute跟踪图
traceroute:跟踪路由,可以把从客户端到目的地的所有路由器ip都打印出来,客户端电脑➡️教室路由器➡️学校路由器➡️xxx➡️区路由器➡️郑州路由器➡️杭州路由器。可以在终端里随便一试traceroute www.baidu.com ,如果搭配ip地址数据库,可以知道每一跳的地点。
安装scapy。略,前面已经安装。
安装Graphviz。生成图网工图依赖此软件。
代码,新建一个.py脚本
成功结果 🎉成功生成svg图片。
但是root权限运行的Pycharm为了防止自动执行恶意代码而关闭了一些功能,需要从项目目录图片上右键调出菜单》open in》associated application用系统自带的预览看图软件打开。

(如果安装了vpython,可以trace3D()方法生成3D图,运行后会自动打开浏览器并访问服务。但是我尝试的结果是无报错但图像黑,怀疑是虚拟机内图形性能不足,需要在物理机中尝试下。)