hping 是命令行的用于生成和解析 TCP/IP 协议数据包汇编分析的开源网络工具.
最新版是 hping3, 支持 TCP/UDP/ICMP 和 RAW-IP 协议, 具有路由跟踪模式, 能够在覆盖的信道之间发送文件以及许多其他功能.
hping3 常用于 tcp ping、安全测试、端口扫描、防火墙测试等工作, hping 优势在于能够定制数据包的各个部分, 因此可以灵活对目标机经行细致的探测.
安装 hping3
# Ubuntu/Debian
apt-get install -y hping3
# CentOS/RHEL
yum install -y hping3
hping3 参数列表
-h --help 显示帮助
-v --version 显示版本
-c --count 限制发送数据包的次数
-i --interval 发送数据包的间隔时间 (uX 表示 X 微秒, 例如 -i u1000)
--fast 等同于 -i u10000 (10个包/秒)
--faster 等同于 -i u1000 (100个包/秒)
--flood 利用主机最大性能发包
-n --numeric 数字形式输出,不进行名称解析
-q --quiet 安静模式 (不输出过程)
-I --interface 指定网卡 (比如 eth0)
-V --verbose 详细模式
-D --debug 调试信息
-z --bind 发出去包的TTL, 绑定ctrl+z快捷键(默认绑定, 按1下TTL值加1, 按2下减1)
-Z --unbind 取消绑定 ctrl+z 快捷键
--beep 每收到一个匹配的数据包就发出蜂鸣声
# Mode 模式选择 (默认模式是 TCP)
-0 --rawip 原始IP模式, hping会发送带数据的IP头
-1 --icmp ICMP 模式
-2 --udp UDP 模式
-8 --scan SCAN 模式 (例如: hping --scan 1-30,70-90 -S www.target.host)
-9 --listen 监听模式
# IP 模式 参数
-a --spoof 伪造源 IP
--rand-dest 随机目标地址(例如: hping3 -I eth0 --rand-dest 192.168.1.x, x 代表 0-255)
--rand-source 使用随机地址伪装自己的地址
-t --ttl 指定 TTL 值 (默认: 64)
-N --id hping 中的 ID 值 (默认 随机)
-W --winid 使用 WINDOWS 的 id 字节顺序 (UNIX/WINDOWS 的回应不同)
-r --rel 相对 id 字段 ID 递减输出
-f --frag 将数据包分片后传输,可以通过薄弱的 acl (访问控制列表)
-x --morefrag 设置更多的分片标记
-y --dontfrag 设置不加分片标记
-g --fragoff 设置分片偏移
-m --mtu 设置虚拟 MTU, 当数据包 > MTU 时, 要使用 –frag 进行分片
-o --tos 指定服务类型 (默认 0x00),可使用 --tos help 查看帮助
-G --rroute 记录 IP 路由,并显示路由缓冲
--lsrr 松散源路由
--ssrr 严格源路由
-H --ipproto 设置 IP 协议,仅在 RAW IP 模式下使用
# ICMP 模式 参数
-C --icmptype 指定 ICMP 类型 (默认 回显请求)
-K --icmpcode 指定 ICMP 代码 (默认 0)
--force-icmp 强制 ICMP 类型 (默认 仅发送支持的类型)
--icmp-gw ICMP 重定向 (默认 0.0.0.0)
--icmp-ts ICMP 时间戳,等同于 --icmp --icmptype 13
--icmp-addr ICMP 子网地址,等同于 --icmp --icmptype 17
--icmp-help ICMP 帮助
# UDP/TCP 模式 参数
-s --baseport 源端口 (默认 随机)
-p --destport 设置目标端口 (默认为0)
-k --keep 保持源端口
-w --win 设置winsize窗口大小 (默认为64)
-O --tcpoff 设置伪造的 TCP 数据偏移量 (取代 TCP 地址长度除以4)
-Q --seqnum 仅显示 TCP 序列号
-b --badcksum 尝试发送带有错误的IP校验和的数据包。许多系统会修复发送数据包的IP校验和, 因此会得到错误的UDP/TCP校验和
-M --setseq 设置 TCP 序列号
-L --setack 设置 TCP 确认号
-F --fin 设置 FIN 标志
-S --syn 设置 SYN 标志
-R --rst 设置 RST 标志
-P --push 设置 PUSH 标志
-A --ack 设置 ACK 标志
-U --urg 设置 URG 标志
-X --xmas 设置 X 未使用标志 (0x40)
-Y --ymas 设置 Y 未使用标志 (0x80)
--tcpexitcode 使用最后一个 tcp->th_flags 作为退出代码
--tcp-mss 使用给定的值启用 TCP MSS 选项
--tcp-timestamp 启用 TCP 时间戳选项以猜测 HZ/uptime
# Common 通用参数
-d --data 发送数据包大小 (默认为0)
-E --file 文件数据
-e --sign 添加'签名'
-j --dump 以十六进制转储数据包
-J --print 转储可打印字符
-B --safe 启用'安全'协议
-u --end 当使用 --file 选项, 到达 EOF 时提示, 并阻止rewind回退
-T --traceroute traceroute 模式 (包含 --bind 和 --ttl 1)
--tr-stop 在 traceroute 模式下, 接收到第一个非 ICMP 数据包时退出
--tr-keep-ttl 保持源 TTL 固定,有助于监视单个跳数
--tr-no-rtt 在 traceroute 模式下不计算/显示 RTT 信息
# ARS 数据包说明 (new, unstable)
--apd-send 使用 APD 描述的数据包发送 (参见 docs/APD.txt)
常用 hping3 命令
- tcp ping
hping3 -S -p 80 <IP地址>
tcp ping 80 端口 端口扫描
hping3 -S --scan 21-500 <IP地址>
扫描 21-500 端口