Mausezahn - 网络流量生成与测试工具(支持从链路层到应用层的协议模拟)

Mausezahn 是一个 网络流量生成与测试工具,主要用于模拟各种网络协议行为、测试网络设备性能、验证安全策略或进行故障排查。它支持从底层链路层(如 Ethernet、VLAN)到高层应用层(如 HTTP、DNS)的协议模拟,常用于网络工程师、安全研究人员和开发人员测试网络环境的健壮性。


核心功能

1. 多协议支持

  • 链路层:Ethernet II、802.3 SNAP、VLAN(802.1Q)、STP、CDP 等。
  • 网络层:IPv4/IPv6、ICMP、ARP、RIP、OSPF、BGP 等。
  • 传输层:TCP、UDP、SCTP。
  • 应用层:HTTP、DNS、DHCP、SIP、FTP、Telnet 等。
  • 自定义协议:支持构造任意协议字段(如修改 TCP 标志位、IP TTL 等)。

2. 流量生成模式

  • 持续发送:以固定速率或随机间隔发送数据包。
  • 突发模式:模拟短时间高流量(如 DDoS 攻击测试)。
  • 响应式发送:根据接收到的数据包动态生成响应(如 ARP 回复、ICMP Echo)。

3. 高级特性

  • 随机化字段:可随机化 MAC/IP/端口等字段,模拟真实流量。
  • 负载填充:支持自定义数据内容(如文本、二进制或随机数据)。
  • 时间控制:精确控制数据包发送时间(微秒级精度)。
  • 多线程/多接口:支持多网卡同时发送流量。

4. 典型应用场景

  • 网络设备测试:验证交换机、路由器、防火墙的吞吐量、延迟和丢包率。
  • 安全测试:模拟恶意流量(如端口扫描、SYN Flood、DNS 放大攻击)。
  • 协议验证:测试自定义协议实现或第三方设备的协议兼容性。
  • 故障排查:重现网络问题(如 CRC 错误、MTU 不匹配)。

    基本用法

    1. 发送 ICMP Echo 请求(Ping)
    mausezahn eth0 icmp -A 192.168.1.1 -B 192.168.1.254 -c 10
    • -A:源 IP。
    • -B:目标 IP。
    • -c:发送 10 个包。
    2. 发送 UDP 洪水(模拟 DDoS)
    mausezahn eth0 udp -A 192.168.1.1 -B 192.168.1.254 -p 53 -D "RANDOM_DATA" -f 1000 -i 0.001
    • -p:目标端口(DNS 默认 53)。
    • -D:负载内容(随机数据)。
    • -f:每秒 1000 包。
    • -i:包间隔(毫秒)。
    3. 构造自定义 TCP 包(修改标志位)
    mausezahn eth0 tcp -A 192.168.1.1 -B 192.168.1.254 -S 12345 -D 80 --tcp-flags SYN,ACK
    • -S:源端口。
    • -D:目标端口。
    • --tcp-flags:设置 TCP 标志位(如 SYN,ACK)。
    4. 模拟 HTTP GET 请求
    mausezahn eth0 tcp -A 192.168.1.1 -B 8.8.8.8 -S 54321 -D 80 -T "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"
    • -T:指定 HTTP 请求内容。

    与同类工具对比

    工具定位优势
    Mausezahn全协议层流量生成支持底层到高层的协议模拟,灵活性强,适合复杂场景测试。
    Scapy交互式数据包构造Python 接口,适合脚本化测试,但性能较低。
    hping3网络探测与攻击模拟专注 TCP/IP 层攻击(如端口扫描、防火墙绕过),但协议支持较少。
    iperf3带宽测试专注于 TCP/UDP 吞吐量测试,不支持协议细节构造。

    注意事项

    1. 权限要求:需 root 权限(直接操作网卡)。
    2. 网络影响:高流量测试可能影响生产环境,建议在隔离网络中使用。
    3. 协议兼容性:部分协议(如 BGP、OSPF)需深入理解协议细节才能有效测试。
    4. 替代方案:若需更简单的流量生成,可考虑 tcpreplay(重放 PCAP 文件)或 nmap(端口扫描)。

     一、安装前准备

    1. 安装Git和基础工具
      用于从GitHub克隆源码:

      sudo yum install -y git gcc-c++ make
    2. 配置国内Yum源(可选)
      解决依赖包下载慢的问题,推荐阿里云或清华源:

      sudo yum install -y wget
      sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
      sudo yum clean all && sudo yum makecache

    3. 下载安装包 #git clone https://github.com/uweber/mausezahn.git

     二、安装依赖包

    Mausezahn编译依赖以下开发库:

    sudo yum install -y cmake libpcap-devel libnet-devel libcli-devel

    注意:若提示libcli-devel找不到,需更换Yum源(如阿里云/清华源)12。


    三、源码编译与安装

    1. 克隆源码仓库

      git clone https://github.com/uweber/mausezahn.git
      cd mausezahn
    2. 编译安装
      执行编译三部曲:

      cmake .      # 生成Makefile ( 注意:cmake 空格 点)
      make         # 编译源码(忽略告警)
      sudo make install  # 安装到系统

      cmake失败,检查依赖包是否全部安装成功12。

    安装依赖#  sudo yum install -y cmake libpcap-devel libnet-devel libcli-devel

    cmake .      # 生成Makefile
     make         # 编译源码(忽略告警)

     2060  cmake .
     2061  make 
     2064  make install
     2065  mz --help

    # mz --help
    mz: invalid option -- '-'mz/getopts: Option -c requires an argument.Invalid command line parameters!Mausezahn 0.40 - (C) 2007-2010 by Herbert Haas - http://www.perihel.at/sec/mz/
    |
    | USAGE: mz [options] [interface] keyword | arg_string | hex_string
    |
    | Short option description (see doc or manpage for more information):
    |  -h                    Prints this information.
    |  -4		     IPv4 mode (default)
    |  -6		     IPv6 mode
    |  -c <count>            Send the packet count times (default: 1, infinite: 0).
    |  -d <delay>            Apply delay between transmissions. The delay value can be
    |                        specified in usec (default, no additional unit needed), or in
    |                        msec (e. g. 100m or 100msec), or in seconds (e. g. 100s or 100sec).
    |  -r                    Multiplies the specified delay with a random value.
    |  -p <length>           Pad the raw frame to specified length (using random bytes).
    |  -a <Src_MAC|keyword>  Use specified source mac address, no matter what has
    |                        been specified with other arguments. Keywords see below.
    |                        Default is own interface MAC.
    |  -b <Dst_MAC|keyword>  Same with destination mac address.
    |                        Keywords are: 
    |          rand            use a random MAC address
    |          bc              use a broadcast MAC address
    |          own             use own interface MAC address (default for source MAC)
    |          stp             use IEEE 802.1d STP multicast address
    |          cisco           use Cisco multicast address as used for CDP, VTP, or PVST+
    |  -A <Src_IP>           Use specified source IP address (default is own interface IP).
    |  -B <Dst_IP|DNS_name>  Send packet to specified destination IP or domain name.
    |  -P <ASCII Payload>    Use the specified ASCII payload.
    |  -f <filename>         Read the ASCII payload from a file.
    |  -F <filename>         Read the hexadecimal payload from a file.
    |  -Q <[CoS:]vlan>       Specify 802.1Q VLAN tag and optional Class of Service. You can
    |                        specify multiple 802.1Q VLAN tags (QinQ...) by separating them
    |                        via a comma or a period (e. g. '5:10,20,2:30').
    |  -t <packet_type>      Specify packet type for autobuild (you don't need to care for
    |                        encapsulations in lower layers. Most packet types allow/require
    |                        additional packet-specific arguments in an arg_string.
    |                        Currently supported types: arp, bpdu, cdp, ip, icmp, udp, tcp,
    |                        dns, rtp, syslog, lldp.
    |                        For context-help use 'help' as arg_string!
    |  -T <packet_type>      Specify packet type for server mode. Currently only rtp is supported.
    |                        Enter -T help or -T rtp help for further information.
    |  -M <MPLS label>       Insert a MPLS label. Enter '-M help' for a syntax description.
    |  -v|V                  Verbose and more verbose mode
    |  -q                    Quiet mode, i. e. even omit 'important standard short messages'.
    |  -S                    Simulation mode: DOES NOT put anything on the wire. This is
    |                        typically combined with one of the verbose modes (v or V).

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如若转载,请注明出处:http://www.pswp.cn/pingmian/87337.shtml
    繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87337.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    08-three.js Textures

    Three.js Journey — Learn WebGL with Three.jsThe ultimate Three.js course whether you are a beginner or a more advanced developerhttps://threejs-journey.com/?c=p3 使用原生 JavaScript 首先是静态页面的放置位置,如果使用Vite模版配置,可以直接放在 /static/ …

    git 仓库取消合并的分支

    要取消 Git 仓库中某次特定的分支合并(例如第一次合并),同时保留其他分支的合并,需要通过 Git 的版本控制功能来操作。以下是具体的步骤和方法,假设你想撤销某次合并(例如某个提交),并确保其他合并不受影响: 背景假设 你有一个 Git 仓库,主分支(例如 main)上已经合…

    【从历史数据分析英特尔该如何摆脱困境】

    与大多数其他分析师不同&#xff0c;自2013年以来&#xff0c;笔者就一直在积极强调英特尔未来将遭遇冰山&#xff0c;最终我们预测英特尔将在试图执行其之前的战略时破产。尽管我们更愿意采用与英特尔不同的代工厂方法&#xff08;即与台积电成立合资企业&#xff09;&#xf…

    【PyTorch】PyTorch中张量(Tensor)微分操作

    PyTorch深度学习总结 第六章 PyTorch中张量(Tensor)微分操作 文章目录 PyTorch深度学习总结前言一、torch.autograd模块二、主要功能和使用方法1. 张量的 requires_grad 属性2. backward() 方法3. torch.no_grad() 上下文管理器三、函数总结前言 上文介绍了PyTorch中张量(Ten…

    Rust 项目实战:Flappy Bird 游戏

    Rust 项目实战&#xff1a;Flappy Bird 游戏 Rust 项目实战&#xff1a;Flappy Bird 游戏理解 Game loop开发库&#xff1a;bracket-libbracket-terminalCodepage 437导入 bracket-lib 创建游戏游戏的模式添加玩家添加障碍最终效果项目源码 Rust 项目实战&#xff1a;Flappy Bi…

    Gin 中间件详解与实践

    一、中间件的核心概念 定义 中间件是Web开发中非常重要的概念&#xff0c;它可以在请求到达最终处理函数之前或响应返回客户端之前执行一系列操作。Gin 框架支持自定义和使用内置的中间件&#xff0c;让你在请求到达路由处理函数前进行一系列预处理操作。 它是介于请求与响应处…

    非接触式DIC测量系统:助力汽车研发与测试的创新技术应用

    近年来&#xff0c;随着新能源汽车品牌的快速崛起&#xff0c;新车发布的节奏加快&#xff0c;层出不穷的新产品&#xff0c;给消费者带来了全新的使用体验。与此同时&#xff0c;变革的产品体验也让一些过往的汽车测试和评价标准变得不再适用&#xff0c;尤其是与过往燃油车型…

    FOC学习笔记(7)锁相环(PLL)原理及其在电机控制中的应用

    1. 锁相环(PLL)概述 锁相环&#xff08;Phase-Locked Loop, PLL&#xff09;是一种闭环控制系统&#xff0c;用于使输出信号的相位与输入参考信号的相位同步。PLL广泛应用于通信、电机控制、频率合成、时钟恢复等领域。在电机无传感器控制&#xff08;Sensorless Control&…

    鸿蒙自定义相机的拍照页面

    1、权限申请 "requestPermissions": [{"name": "ohos.permission.CAMERA","reason": "$string:reason_camera","usedScene": {"abilities": ["EntryAbility"]}},{"name": "oh…

    greenplum7.2并行备份及恢复

    1.并行备份 pg_dump -Fd --gp-syntax -U gpadmin -p 5432 -h 172.19.0.2 -d postgres -j 4 -f /opt/greenplum/data/postgres_backup_$(date %Y-%m-%d) 参数 含义 -Fd 使用 directory 格式&#xff08;支持并行&#xff09; --gp-syntax 使用 Greenplum 特定语法&#xff08;…

    备赛2025年初中古诗文大会:练习历年真题,吃透知识点(0703)

    初中古诗文大会的比赛内容古诗词、文言文各占比50%左右&#xff0c;从历年的比赛来看&#xff0c;中考语文的古诗文部分&#xff08;35分&#xff09;涉及到的古诗词、文言文知识点都在初中古诗文大会中考过。这些知识点掌握了&#xff0c;对于将来高中、高考也有直接的帮助。 …

    BRAKER:真核微生物cds和蛋白注释

    https://github.com/Gaius-Augustus/BRAKER 安装 # 第一次打开会pull这个docker docker run --user 1000:100 --rm -it teambraker/braker3:latest bash bash /opt/BRAKER/example/docker-tests/test3.sh braker.gtf&#xff1a;BRAKER 的最终基因集。 braker.codingseq&am…

    基于 Three.js 与 WebGL 的商场全景 VR 导航系统源码级解析

    本文面向Web前端开发者、WebGL/Three.js 爱好者、对VR/AR应用开发感兴趣的技术人员、智慧商场解决方案开发者。详细介绍如何利用 WebGL (Three.js框架) 构建高性能的商场全景VR环境&#xff0c;并实现精准的室内定位与3D路径规划导航功能。 如需获取商场全景VR导航系统解决方案…

    AWS CloudFormation部署双可用区VPC网络架构 - 完整指南

    一、模板概述 本CloudFormation模板用于在AWS上快速部署一个高可用的双可用区VPC网络架构,包含公有子网和私有子网。该架构是构建云原生应用的基础,特别适合生产环境使用。 二、完整模板代码 AWSTemplateFormatVersion: 2010-09-09 Description: Customizable dual-AZ VPC…

    2025汽车声学升级:高透音汽车喇叭网成高端车型新标配

    随着消费者对车载音质和静谧性要求的提升&#xff0c;高透音汽车喇叭网正成为高端车型的差异化配置。传统冲压金属网因声学损耗大、设计单一逐渐被淘汰&#xff0c;而新一代蚀刻工艺通过微孔结构优化&#xff0c;实现了声学性能与美学设计的双重突破。以下是技术趋势与市场前景…

    决策树(Decision tree)算法详解(ID3、C4.5、CART)

    文章目录 一、决策树介绍1.1 决策树的结构特征1.2 决策树的构建三步骤1.3 决策树构建例子 二、ID3决策树&#xff1a;基于信息增益的决策模型2.1 信息增益的公式与符号解析2.2 信息增益的意义2.3 ID3决策树案例演示&#xff1a;贷款申请分类2.4 ID3决策树缺陷 三、C4.5决策树&a…

    python基础-网络的TCP、UDP协议操作

    1.tcp基本语法 # ### TCP协议 客户端 import socket # 1.创建一个socket对象 sk socket.socket() # 2.与服务端建立连接 sk.connect( ("127.0.0.1" , 9000) ) # 3.收发数据的逻辑 """发送的数据类型是二进制字节流""" ""&q…

    基于spark的航班价格分析预测及可视化

    基于spark的航班价格分析预测及可视化 项目概况 [&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;] 点这里,查看所有项目 [&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&…

    每日算法刷题Day41 6.28:leetcode前缀和2道题,用时1h20min(要加快)

    5. 523.连续的子数组和(中等,学习) 523. 连续的子数组和 - 力扣&#xff08;LeetCode&#xff09; 思想 1.给你一个整数数组 nums 和一个整数 k &#xff0c;如果 nums 有一个 好的子数组 返回 true &#xff0c;否则返回 false&#xff1a; 一个 好的子数组 是&#xff1a;…

    拉取vue-element-admin

    这个错误表明 npm 在尝试通过 SSH 克隆 GitHub 仓库时遇到了权限问题&#xff0c;根本原因是系统无法正确处理中文用户名路径下的 SSH 配置。以下是详细的解决方案&#xff1a; 解决方案 1&#xff1a;使用 HTTPS 代替 SSH&#xff08;推荐&#xff09; 修改 Git 全局配置&…