tcpdump用法
2022/1/28 7:07:31
本文主要是介绍tcpdump用法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ]
[ -s snaplen ] [ -w file ] [ expression ]
参数:
抓包选项: -c : 捕获 count 个包 tcpdump 就退出 -i interface:指定tcpdump需要监听的接口。默认会抓取第一个网络接口,如果要查看所有网卡,可以 -i any -n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。 -nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。 -P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。 -s : tcpdump 默认只会截取前 96 字节的内容,要想截取所有的报文内容,可以使用 -s number, number 就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。 -S : 使用绝对序列号,而不是相对序列号 -Q: 选择是入方向还是出方向的数据包,可选项有:in, out, inout,也可以使用 --direction=[direction] 这种写法 -C:file-size,tcpdump 在把原始数据包直接保存到文件中之前, 检查此文件大小是否超过file-size. 如果超过了, 将关闭此文件,另创一个文件继续用于原始数据包的记录. 新创建的文件名与-w 选项指定的文件名一致, 但文件名后多了一个数字.该数字会从1开始随着新创建文件的增多而增加. file-size的单位是百万字节(nt: 这里指1,000,000个字节,并非1,048,576个字节, 后者是以1024字节为1k, 1024k字节为1M计算所得, 即1M=1024 * 1024 = 1,048,576) 输出选项: -e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。 -q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。 -x:以16进制的形式打印每个包的头部数据(但不包括数据链路层的头部) -xx:以16进制的形式打印每个包的头部数据(包括数据链路层的头部) -X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。 -XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。 -v:产生详细的输出. 比如包的TTL,id标识,数据包长度,以及IP包的一些选项。同时它还会打开一些附加的包完整性检测,比如对IP或ICMP包头部的校验和。 -vv:产生比-v更详细的输出. 比如NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码。 -vvv:产生比-vv更详细的输出。比如 telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,其相应的图形选项将会以16进制的方式打印出来 -t:在每行的输出中不输出时间 -tt:在每行的输出中会输出时间戳 -ttt:输出每两行打印的时间间隔(以毫秒为单位) -tttt:在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观) -d:打印出易读的包匹配码 -dd:以C语言的形式打印出包匹配码. -ddd:以十进制数的形式打印出包匹配码 其他功能性选项: -D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。 -F:从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。 -L :列出指定网络接口所支持的数据链路层的类型后退出 -Z:后接用户名,在抓包时会受到权限的限制。如果以root用户启动tcpdump,tcpdump将会有超级用户权限。 -w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。 -r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。
tcpdump 的输出
Flags 标识符
使用 tcpdump 抓包后,会遇到的 TCP 报文 Flags,有以下几种:
- [S] : SYN(开始连接)
- [P] : PSH(推送数据)
- [F] : FIN (结束连接)
- [R] : RST(重置连接)
- [.] : 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG)
常规过滤规则
1.基于IP地址过滤:host
使用 host 就可以指定 host ip 进行过滤
tcpdump host 192.168.10.100
数据包的 ip 可以再细分为源ip和目标ip两种
# 根据源ip进行过滤 tcpdump -i eth2 src 192.168.10.100 # 根据目标ip进行过滤 tcpdump -i eth2 dst 192.168.10.200
2.基于网段进行过滤:net
若你的ip范围是一个网段,可以直接这样指定
tcpdump net 192.168.10.0/24
网段同样可以再细分为源网段和目标网段
# 根据源网段进行过滤 tcpdump src net 192.168 # 根据目标网段进行过滤 tcpdump dst net 192.168
3.基于端口进行过滤:port
使用 port 就可以指定特定端口进行过滤
tcpdump port 8088
端口同样可以再细分为源端口,目标端口
# 根据源端口进行过滤 tcpdump src port 8088 # 根据目标端口进行过滤 tcpdump dst port 8088
同时指定两个端口
tcpdump port 80 or port 8088 # 简写 tcpdump port 80 or 8088
抓取端口段。
tcpdump portrange 8000-8080 tcpdump src portrange 8000-8080 tcpdump dst portrange 8000-8080
对于一些常见协议的默认端口,直接使用协议名,而不用具体的端口号
比如 http == 80,https == 443 等
tcpdump tcp port http
4.基于协议进行过滤:proto
常见的网络协议有:tcp, udp, icmp, http, ip,ipv6 等
只想查看 icmp 的包
tcpdump icmp
protocol 可选值:ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx, or netbeui
5.基本IP协议的版本进行过滤
IPv4 的 tcp 包,数字 6 表示的是 tcp 在ip报文中的编号、
tcpdump 'ip proto tcp' tcpdump ip proto 6 tcpdump 'ip protochain tcp' tcpdump ip protochain 6
IPv6 的 tcp 包
tcpdump 'ip6 proto tcp' tcpdump ip6 proto 6 tcpdump 'ip6 protochain tcp' tcpdump ip6 protochain 6
Reference
tcpdump详细教程
tcpdump详解
这篇关于tcpdump用法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享