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 端口