【报文构造】构造一个异常的IPV6报文,测试设备可靠性
构造一个异常的IPV6报文,测试设备可靠性
文章目录
- 构造一个异常的IPV6报文,测试设备可靠性
- 前言
- 一、构造报文的核心思路
- 1.1 明确需求与场景
- 1.2 工具使用
- 二、使用Scapy构造报文
- 2.1编写代码构造报文
- 2.2 抓包验证
- 三、xcap构造报文
- 3.1 了解报文结构
- 3.2 使用xcap构建报文
- 3.3 发送报文
- 总结
前言
提示:本文仅对内部网络设备测试做教学使用,请遵守相关法律法规!
本文分享作者在近期工作中接到的一个小任务,主要是根据已知市场问题,某设备收到异常的IPV6报文后导致设备挂机。为了验证新品设备是否存在问题,需要构造以下报文来验证设备的可靠性。
已知信息:故障现场给的异常报文内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、构造报文的核心思路
构造报文的本质是 “按规则填字段”,需围绕 “协议规范” 和 “业务需求” 展开,步骤如下:
1.1 明确需求与场景
首先确定报文的用途和目标,不同场景对报文的要求不同(如是否需要符合校验规则、是否允许异常字段),需提前明确。例如:
- 功能测试:验证服务端对特定请求的响应(如 HTTP GET 请求);
- 协议调试:排查自定义协议的字段解析问题;
- 安全测试:模拟异常报文(如 TCP SYN Flood 攻击报文);
- 通信交互:与设备 / 服务按协议格式正常通信(如物联网设备的 MQTT 报文)。
本文主要介绍安全测试,验证设备收到异常的报文能够正常处理,保障设备不挂机。
1.2 工具使用
- 发包工具:xcap、scapy、PC(带有有线网卡、无线网卡)
- 辅助工具:wireshark(抓包使用,验证发送报文正确)
二、使用Scapy构造报文
2.1编写代码构造报文
scapy安装和使用教程:https://blog.csdn.net/Himan21/article/details/149858432?spm=1001.2014.3001.5501
from scapy.all import *# 假设原始数据包已加载(此处用Raw层模拟)
from scapy.layers.l2 import Etherpkt = Ether(b'\xcc\xd8\x1f\x5d\x3d\x62\x00\x01\xc6\x30\x8a\x11\x86\xdd\x60\x07' b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')pkt.show() //查看报文结构
hexdump(pkt) //查看报文hex格式while True:sendp(pkt, iface="WLAN1", count=1000)
打印如下:
###[ Ethernet ]### dst = cc:d8:1f:5d:3d:62src = 00:01:c6:30:8a:11type = IPv6
###[ Raw ]### load = '`\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'0000 CC D8 1F 5D 3D 62 00 01 C6 30 8A 11 86 DD 60 07 ...]=b...0....`.
0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040 00 00 00 00 00 00 00 00 00 00 00 00 ............
.
Sent 1 packets.
2.2 抓包验证
为了保证设备收到我们构造的报文,需要在设备上抓取报文,查看报文内容如下(下面演示linux系统抓包):
#tcpdump -i eth0 -w ipv6.pcap -s0
tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
^C0 packets captured
16 packets received by filter
0 packets dropped by kernel
#tftp -p -l ipv6.pcap x.x.x.x
三、xcap构造报文
3.1 了解报文结构
使用wirehark打开异常报文,查看每个字段的值,了解报文结构和内容。
3.2 使用xcap构建报文
步骤一:打开xcap软件,启用网络接口,即使用那个网卡发包就启用哪个接口。启动成功后图标会变成绿色。
步骤二:右键点击创建报文组,选择创建报文组。
步骤三:创建报文,输入报文名称;
步骤四:双击创建的报文,编辑报文内容;
步骤五:修改报文源MAC地址、目的MAC地址、报文类型为IPV6;
步骤六:修改报文源IP地址、目的IP地址、Flow Label、Hop Limit、Next header;
步骤七:查看构建好的报文,和原报文做对比;
3.3 发送报文
选中报文和接口后,发送报文,可设置时间间隔。
总结
构造报文的核心是 “吃透协议规范”,再根据场景选择工具:简单文本协议用xcap;复杂或自定义协议用 Scapy / 编程语言;调试分析用 Wireshark。实际操作中,建议先抓包分析标准报文,再逐步调整字段验证效果。