【报文构造】构造一个异常的IPV6报文,测试设备可靠性

构造一个异常的IPV6报文,测试设备可靠性



前言

提示:本文仅对内部网络设备测试做教学使用,请遵守相关法律法规!

本文分享作者在近期工作中接到的一个小任务,主要是根据已知市场问题,某设备收到异常的IPV6报文后导致设备挂机。为了验证新品设备是否存在问题,需要构造以下报文来验证设备的可靠性。

已知信息:故障现场给的异常报文内容。

异常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 Ether

pkt = 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:62
  src       = 00:01:c6:30:8a:11
  type      = 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软件,启用网络接口,即使用那个网卡发包就启用哪个接口。启动成功后图标会变成绿色。

启用xcap接口

步骤二:右键点击创建报文组,选择创建报文组。

创建报文组

步骤三:创建报文,输入报文名称;

创建报文

步骤四:双击创建的报文,编辑报文内容;

编辑报文内容

步骤五:修改报文源MAC地址、目的MAC地址、报文类型为IPV6;

编辑报文

步骤六:修改报文源IP地址、目的IP地址、Flow Label、Hop Limit、Next header;

原报文
编辑报文
步骤七:查看构建好的报文,和原报文做对比;
wireshark查看报文
查看报文

3.3 发送报文

选中报文和接口后,发送报文,可设置时间间隔。

发送报文


总结

构造报文的核心是 “吃透协议规范”,再根据场景选择工具:简单文本协议用xcap;复杂或自定义协议用 Scapy / 编程语言;调试分析用 Wireshark。实际操作中,建议先抓包分析标准报文,再逐步调整字段验证效果。

类型:国产 软件授权:免费 软件更新:2024-03-07 环境:Windows11,Windows10,Windows8,Windows7 xcap(网络发包工具)是目前互联网上最优秀功能最强大的一款免费的以太网发包工具,xcap软件拥有构造报文和发送报文两大主要功能,其中支持构造常见的以太网报文,包括arp、rarp、ipv4、ipv6、icmpv4、icmpv6、igmp、udp、tcp、pim、ospf、rip、snmp、ppp、pppoe、ipsec(ah/esp)等等;而发送报文需要借助于WinPcap软件,xcap发包工具能从系统中读取处所有的网络接口,也可以从指定的接口发送构造报文,支持两种简单的发送策略,一是发送选中的(用鼠标选中),二是循环发送复选框选中的报文,有需要的朋友不要错过哦! 注意:第一次使用请先安装压缩包中附带的WinPcap_4_0_2.exe,否则会提示缺少dll文件。 软件功能 1、构造报文。 2、发送报文。 3、IP分片。 4、响应ARP/NDP查询。 5、响应ICMP Echo Request。 6、TCL控制发送-支持中文、英文界面。 7、提供WinPcap格式的文件浏览,可以和WireShark结合使用。 8、抓包,报文分析。 9、具体功能见软件帮助。 注意事项 1、最大支持64K长度的报文,软件中没有做长度检查,超过该长度,有可能导致软件异常退出。 2、抓包功能没有对内存使用做限制,如果抓包数量过多,会导致软件异常退出,抓包功能仅仅是为了简单的测试以及TCL脚本使用,对于大数据量或者复杂的功能,建议使用专用的抓包软件,如Wireshark等。 3、最大支持16个网络接口。 xcap https://www.32r.com/soft/21200.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值