tcpdump 是一款功能强大的网络抓包工具,可以用来分析网络数据包。通过对抓包命令的参数进行详细了解,可以更好地应用tcpdump工具。
基本语法
tcpdump [选项] [表达式]
常用选项
选项 | 说明 |
i 接口名 | 指定抓取的网络接口,如 eth0、wlan0 等 |
n | 不解析主机名和端口名,直接显示 IP 地址和端口号 |
X | 以十六进制和 ASCII 码显示数据包内容 |
s 抓取数据包大小 | 指定抓取的数据包大小,默认为 65535 字节 |
c 抓取数据包数量 | 指定抓取的数据包数量,达到指定数量后停止抓取 |
v | 显示详细信息,包括数据包的协议类型、源 IP、目标 IP、源端口、目标端口等 |
w 输出文件名 | 将抓取到的数据包保存到指定的文件中,使用 pcapng 格式 |
r 输入文件名 | 从指定的文件中读取数据包进行分析或过滤 |
F 过滤表达式 | 根据过滤表达式抓取符合条件的数据包 |
G 设置抓包文件的组 ID | 用于在多用户环境下设置抓包文件的组 ID,避免权限问题 |
W 设置抓包文件的写权限掩码 | 用于在多用户环境下设置抓包文件的写权限掩码,避免权限问题 |
Z 设置抓包文件的粘滞位 | 用于在多用户环境下设置抓包文件的粘滞位,避免其他用户删除文件 |
C 设置抓包文件的创建时间戳 | 用于在多用户环境下设置抓包文件的创建时间戳,避免权限问题 |
q 静默模式,不显示任何信息 | |
tttt 设置时间显示格式,如 hh:mm:ss.sss | |
e 设置数据链路层协议类型 | 可以指定所抓取的数据包的数据链路层协议类型,如 arp、rarp、ip、icmp、igmp、udp、tcp、raw 等 |
E 设置以太网帧头部类型 | 可以指定所抓取的数据包的以太网帧头部类型,如 arp、rarp、ip、arpwatch、llmnr 等 |
y 输出数据包时使用绝对时间戳 | 而不是相对时间戳 |
Q inet | 仅抓取 inet 协议的数据包 |
q inet6 | 仅抓取 inet6 协议的数据包 |
V 显示版本信息并退出 |
过滤表达式
tcpdump 支持丰富的过滤表达式,可以根据源 IP、目标 IP、源端口、目标端口、协议类型等条件进行过滤。以下是一些常用的过滤表达式:
表达式 | 说明 |
host IP地址 | 抓取与指定 IP 地址相关的数据包 |
net IP地址/子网掩码 | 抓取与指定 IP 地址和子网掩码相关的数据包 |
port 端口号 | 抓取与指定端口号相关的数据包 |
src IP地址[!]dst IP地址 | 抓取源 IP 地址为指定值或非指定值的数据包 |
src host IP地址[!]dst host IP地址 | 抓取源主机 IP 地址为指定值或非指定值的数据包 |
src port[!]dst port[!]protocol | 抓取源端口号为指定值或非指定值,目标端口号为指定值或非指定值,以及协议类型为指定值或非指定值的数据包 |
tcp[flags] = value[!]value | 抓取 tcp flags(标志位)为指定值或非指定值的数据包 |
tcp[flags] & value[!]value | 抓取 tcp flags(标志位)与指定值或非指定值进行按位与操作后结果为真(非零)的数据包 |
tcp[flags] != value[!]value | 抓取 tcp flags(标志位)与指定值或非指定值进行按位异或操作后结果为真(非零)的数据包 |
tcp[((offset)>>field_length):field_length] & mask[!]mask | 根据 tcp flags(标志位)的偏移量和长度,以及掩码进行按位与操作或按位异或操作后的结果进行过滤 |
protocol[!]protocol[^]port[!]port[^]ip[!]ip[^]host IP地址[!]host IP地址[^]net IP地址/子网掩码[!]net IP地址/子网掩码 | 根据协议类型、端口号、IP 地址和主机 IP 地址进行过滤,可以使用 ^(逻辑非)和 !(逻辑非)进行组合过滤 |
通过掌握基本语法和常用选项,以及灵活运用过滤表达式,您可以更好地利用 tcpdump 工具进行网络数据包的分析和过滤。如果您对 tcpdump 抓包命令的更多参数用法感兴趣,可以查阅相关文档或进行深入学习。
希望本文对您有所帮助,并能带来更多关于网络抓包和数据包分析的思考。如果您有任何问题或者对其他相关主题感兴趣,欢迎在评论区留言,让我们一起交流和探讨。
感谢您的阅读,希望能得到您的关注、点赞和分享,同时也期待您的评论和意见。谢谢!
评论留言