hping3的介绍与安装请参考上一篇文章:《网络测试工具hping3安装与简单使用》

1.hping3 的本质

        hping3 是一个命令行下的原始套接字(raw socket)数据包生成器,它允许用户在用户空间直接构造和发送几乎任意类型的网络数据包,绕过操作系统的 TCP/IP 协议栈常规处理流程。

2.hping3常用功能

        软件功能非常强大,在这里只进行常用功能举例,有兴趣去的可以通过hping3 -h查看该工具的帮助手册。

        软件支持多种模式:

Mode
  default mode     TCP    #默认tcp
  -0  --rawip      RAW IP mode  #自定义模式
  -1  --icmp       ICMP mode  #icmp
  -2  --udp        UDP mode #udp
  -8  --scan       SCAN mode.  #扫描
                   Example: hping --scan 1-30,70-90 -S www.target.host
  -9  --listen     listen mode  #监听模式

     默认模式是tcp模式,当我直接hping3一个地址时,对端收到一条随机源端口号发来的tcp包

hping3 -c 1 192.168.1.1

1. icmp ping

        -c 指定次数,-1采用icmp包,在对端可以接收到一条icmp数据包,也可以增加选项-i增加间隔时间 

hping3 -1 -c 1 192.168.1.1

hping3 -1 -c 1  -i 2 192.168.1.1  #指定间隔时间

        也可以对icmp头部进行定制: 

# ICMP 类型和代码
-C, --icmptype <type>   设置ICMP类型
-K, --icmpcode <code>   设置ICMP代码

# 常用ICMP类型:
# 0 = Echo Reply, 8 = Echo Request
# 3 = Destination Unreachable
# 11 = Time Exceeded
# 13、14  时间戳请求与英达

        例如时间戳请求:

hping3 -1 -C 13 -K 0 192.168.1.1

2.TCP ping

        使用tcp syn包进行ping,-s使用syn包 -s指定源端口 -p 指定目的端口

hping3 -S -s 1500 -p 80 -c 3 192.168.1.1

        tcp syn扫描(半开放),扫描对端80端口是否打开,如果flags返回SA表示端口开放

hping3 -S 192.168.1.1 -p 80

        tcp头部定制:

# TCP 标志位控制(可以组合使用)
-S, --syn               SYN=1(建立连接)
-A, --ack               ACK=1(确认)
-R, --rst               RST=1(重置)
-F, --fin               FIN=1(结束)
-P, --push              PSH=1(推送)
-U, --urg               URG=1(紧急)

# TCP 序号控制
-M, --tcpseq <seq>      设置TCP序列号
-L, --tcpack <ack>      设置TCP确认号
-Q, --seqnum            显示原始序列号

# 窗口大小和数据偏移
-w, --win <size>        设置窗口大小(默认64)
-O, --tcpoff <offset>   设置数据偏移(默认5)

示例1:发送Xmas扫描

hping3 -S -A -F -P -R -U -p 80 192.168.1.1

示例2:发送特定TCP序列号的包

hping3 -S -p 80 -M 0x12345678 -L 0 192.168.1.1

3.自定义模式   

-0 或 --rawip 模式是 hping3 中最底层、最灵活的操作模式,它允许你直接构造和发送原始IP数据包,完全绕过传输层(TCP/UDP/ICMP等)协议头。

常规网络数据包结构:
┌─────────────────────────────────┐
│  应用层数据 (Payload)                                                │
├─────────────────────────────────┤
│  传输层头部 (TCP/UDP/ICMP头)                                │ ← 普通模式操作这一层
├─────────────────────────────────┤
│  网络层头部 (IP头)                                                      │ ← -0模式从这一层开始构造
├─────────────────────────────────┤
│  数据链路层头部 (以太网头)                                        │
└─────────────────────────────────┘

-0 模式的数据包结构:
┌─────────────────────────────────┐
│  自定义数据                                                                 │
├─────────────────────────────────┤
│  IP头部(包含自定义协议号)                                    │ ← 从这里开始完全控制
├─────────────────────────────────┤
│  数据链路层头部                                                          │
└─────────────────────────────────┘

明天继续写

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐