Tcpdump用法详解

Tcpdump介绍



Tcpdumph会打印输出一个满足条件的网络接口上数据包内容。 它也可以用-w标志运行,这样它将数据信息保存到一个文件中供以后分析,或使用-r标志,从保存的文件中读取数据。它也可以用-V标志运行,使其读取已保存的数据包文件列表。 在任何情况下,只有匹配表达式的数据包才会被tcpdump处理。

如果Tcpdump没有指定-c选项,它将不断捕获数据包,直到它被一个SIGINT信号(例如,通过输入中断字符,通常为control+c)或一个SIGTERM信号(通常由kill (1)命令)中断。如果使用-c标志运行,它将捕获数据包,直到数据包数量到-c为止。

在支持SIGINFO信号的平台上,比如大多数BSD(包括Mac OS X)和Digital / Tru64 UNIX,它会在接收到SIGINFO信号(例如,通过输入“status”字符 ,通常是control-T,尽管在一些平台上,比如Mac OS X,“status”字符默认没有设置,所以你必须设置stty(1)才能使用它),并继续捕获数据包。

Tcpdump命令格式



tcpdump [ -AbdDefhHIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]

[ -C file_size ] [ -G rotate_seconds ] [ -F file ]

[ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]

[ -P in|out|inout ]

[ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]

[ -W filecount ]

[ -E [email protected] algo:secret,...  ]

[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]

[ expression ]

虽然上面这么多参数看着都让人头疼,其实总结出来很简单:tcpdump option filter,其中option表示选项,而filter则表示过滤条件,你要对什么进行过滤,filter可以是单个条件(tcp、src、host xxx),也可以将这些单一的参数进行组合,比如:dst port 3306 and src port 58895

Tcpdump选项



-i 选项:表示tcpdump监听端口,如果不指定,那么会搜索所有的网络接口

~ ]# tcpdump -i ens33            # 在ens33这个网络接口监听

~ ]# tcpdump -i ens33            # linux 2.2以上支持 -i ens33,可以监听所有端口

-n 选项:不要把ip转换为主机名

~ ]#tcpdump -i ens33 -n

-w -选项,-w为把内容write到某个地方, -表示标准输出  也就是输出到标准输出中,下面是一个超级有用的命令,把包的数据,用字符展示出来。

~ ]# tcpdump -i ens33 -w - | strings

~ ]# tcpdump -w test.cap                    # 把抓包结果写入test.cap中,方便wireshark分析

-C num选项:如果test.cap 超过num大小,则新开一个文件,  -C fileSize , 单位是MB

~ ]# tcpdump  -C 1  -w test.cap

-r 选项: 从某个文件读取

~ ]# tcpdump -n -r test.cap

-X 选项:以十六进制以及ASCII的形式打印数据内容。

~ ]# tcpdump -X

~ ]# tcpdump -x     # 除了打印出header外,还打印packet里面的数据(十六进制的形式)

~ ]# tcpdump -xx   # 以十六进制的形式打印header, data内容

- A 选项,把每一个packet都用以ASCII的形式打印出来

~ ]# tcpdump -i ens33 -A host www.itshouce.com.cn

-c # 表示收到 # 个packet就退出

~ ]# tcpdump -i ens33 -A -c 3  172.18.14.55         # 接收三个包就退出

-D 选项:看目前机器上有哪些网络接口

~ ]# tcpdump -D

1.nflog (Linux netfilter log (NFLOG) interface)

2.nfqueue (Linux netfilter queue (NFQUEUE) interface)

3.usbmon1 (USB bus number 1)

4.usbmon2 (USB bus number 2)

5.ens33

6.ens34

7.ens33 (Pseudo-device that captures on all interfaces)

8.lo

-e 选项:把连接层的头打印出来

~ ]# tcpdump -i ens33 -e

16:49:14.658811 78:e3:b5:82:39:1b (oui Unknown) > 00:0c:29:66:59:95 (oui Unknown), ethertype IPv4 (0x0800), length 60: 172.18.14.200.59324 > node1.ssh: Flags [.], ack 40028648, win 2, length 0

-j 选项,修改时间格式

~ ]# tcpdump -i ens33 -j timestamp type          # 可以修改输出的时间格式,

~ ]# tcpdump -J

# 显示支持的时间格式 : List the supported time stamp types for the interface and exit.  If the time stamp  type  cannot  be  set  for  the interface, no time stamp types are listed。

-l 选项:把stdout bufferd住,当你既想在屏幕上看结果,又想把结果输出到文件中时,比较有用

~ ]# tcpdump -l

# 可以配合tee命令,在屏幕上显示dump内容,并把内容输出到dump.log中,如下

~ ]# tcpdump -l |tee dump.log                               # or下面这种写法

~ ]# tcpdump -l > dump.log &tail -f dump.log

-q 选项: 就是quiect output, 静默输出,尽量少的打印一些信息

~ ]# tcpdump -q

-S 选项:打印真实的,绝对的tcp seq no

~ ]# tcpdump -i ens33 -S

-s 选型:指定包大小,默认抓取包长度是65535,

~ ]# tcpdump                    # capture sieze 65535l

~ ]# tcpdump -s  256        # 我们设置为256 该参数目的:减少抓包文件的大小

-t 选项:不要打时间戳,

~ ]# tcpdump -i ens33 -t

-tt 选项:打出timstamp,从1970-1-1 以来的秒数,以及微秒数。

~ ]# tcpdump -i ens33 -tt

-v 选项:verbose,即打印详细信息。

~ ]# tcpdump -i ens33 -v      # 打印出详细结果,如ttl值

~ ]# tcpdump -i ens33 -vv    # 打印出更加详细的结果  如window, checksum等

Tcpdump过滤项



下面所有测试中都有 -i ens33的选项,表示抓取ens33网络接口上的包,只是为了让测试方便。你可以指定所有端口:-i any。

# 抓取arp协议的包,然后host为192.168.199.*  测试时需要在另一个session,做一个ifconfig指令。arp可以换为tcp,udp等。

~ ]# tcpudmp -i ens33 -n arp host 192.168.199

22:39:58.991043 ARP, Request who-has 192.168.199.125 tell 192.168.199.1, length 28

22:39:58.991059 ARP, Reply 192.168.199.125 is-at a4:5e:60:dc:d0:d9, length 28

# 抓取访问destination 80端口的包,然后我们做一个curl www.baidu.com的操作。

~ ]# tcpdump -i ens33 -n dst port 80

22:53:06.041382 IP 192.168.199.125.63161 > 119.75.219.45.80: Flags [F.], seq 0, ack 1, win 65535, length 0

# 抓取源上端口是80的包

~ ]# tcpdump -i ens33 -n src port 80

22:57:48.343422 IP 112.80.248.73.80 > 192.168.199.125.63275: Flags [.], seq 38478:39918, ack 78, win 193, length 1440

# 抓取源或者目标端口都是80的包

~ ]# tcpdump -i ens33 -n port 80

22:58:51.165333 IP 112.80.248.74.80 > 192.168.199.125.63298: Flags [F.], seq 100439, ack 79, win 193, length 0

# 表示抓取destination prot 在1到80之间的端口的数据

~ ]# tcpdump -i ens33 -n dst portrange 1-80

# 抓取源的端口是20-80的包

~ ]# tcpdump -i ens33 -n src portrange 20-80

# 抓取端口是20-80的包,不考虑源

~ ]# tcpdump -i ens33 -n portrange 20-80

# 抓取destination为www.baidu.com的包

~ ]# tcpdump -i ens33 dst www.baidu.com

# 在另外的session中ping www.baidu.com ,以及 在浏览器中访问www.baidu.com

# 抓取destination为192.168.14.55的包

~ ]# tcpdump -i ens33 dst 192.168.14.55

# 抓取destination为192.168.1.[0-255]的包

~ ]# tcpdump -i ens33 dst 192.168.1    # 也可以指定范围

# 抓取source为192.168.*.*的包, 使用-n 则只是为了显示ip,而不是主机名,

~ ]# tcpdump -i ens33 -n src 192.168

22:30:50.490355 IP 192.168.199.125.61086 > *.*.*.*.341: Flags [.], ack 56, win 8185, options [nop,nop,TS val 1239157627 ecr 1580310986], length 0

# 抓取192.168的包(不管是source还是destination )

~ ]# tcpdump -i ens33 -n host 192.168

22:38:07.580567 IP *.*.*.*.34186 > 192.168.199.125.61086: Flags [P.], seq 787907565:787907668, ack 871423065, win 126, options [nop,nop,TS val 1580748123 ecr 1239593243], length 103

# 抓取包长度小于800的包

~ ]# tcpudmp -i ens33 -n less 800

21:09:17.687673 IP 192.168.199.1.50150 > *.*.*.*.1900: UDP, length 385

# 抓取包长度大于800的包

~ ]# tcpdump -i ens33 -n greater 800

21:13:21.801351 IP 192.168.199.125.64826 > *.*.*.*.80: Flags [P.], seq 2155:3267, ack 44930, win 8192, length 1112

# 只抓取tcp包

~ ]# tcpdump -i ens33 -n tcp

1:21:18.777815 IP 192.168.199.125.50249 > *.*.*.*.443: Flags [.], ack 75, win 4093, options [nop,nop,TS val 1269008649 ecr 44997038], length 0

# 只抓取udp包

~ ]# tcpdump -i ens33 -n udp

21:22:48.434449 IP 192.168.199.1.50150 > *.*.*.*.1900: UDP, length 385

# 只抓取icmp的包,internet控制包

~ ]# tcpdump -i ens33 -n icmp

21:25:42.550374 IP 192.168.199.1 > 192.168.199.125: ICMP *.*.*.* unreachable - need to frag (mtu 1480), length 556

时间: 2024-10-13 10:56:03

Tcpdump用法详解的相关文章

53 kvm及libvirt、使用virsh管理kvm虚拟机、网络虚拟化技术基础、网络名称空间netns用法详解

01 kvm及libvirt [[email protected] ~]# yum install libvirt libvirt-client python-virtinst virt-manager virt-install -y [[email protected] ~]# yum -y install qemu-kvm [[email protected] ~]# systemctl start libvirtd.service #创建桥 [[email protected] ~]# v

js的offsetParent属性用法详解

js的offsetParent属性用法详解:此属性是javascript中较为常用的属性,对于它的良好掌握也是非常有必要的,下面就通过代码实例介绍一下它的用法,希望能够给需要的朋友带来一定的帮助.一.基本介绍:此属性可以返回距离指定元素最近的采用定位(position属性值为fixed.relative或者absolute)父级元素,如果父级元素中没有采用定位的元素,则返回body对象的引用.语法结构: obj.offsetParent 二.代码实例: <!DOCTYPE html> <

python处理word文件:win32com用法详解

目标:用python处理doc文件 方法:引入win32com模块 ************************************************************************** 一.安装 ************************************************************************** 首先要先下载安装win32com模块(起先在linux下装不成功,后在windows下面成功了...) 下载地址:http

jQuery 事件用法详解

jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jquery中文文档 简介 jquery 之所以成为最受欢迎的前端库,很大一部分是得益于它的事件具有良好的语义,优秀的兼容性,并且便于管理和扩展. 在这里我会介绍 jquery 事件的一些比较基础的用法. 实现原理 jquery 事件脱胎于浏览器的 addEventListener (W3) 和 attac

(转)ProgressDialog用法详解

转载自: ProgressDialog用法详解 ProgressDialog的基本用法 ProgressDialog为进度对话框.android手机自带的对话框显得比较单一,我们可以通过ProgressDialog来自己定义对话框中将要显示出什么东西. 首先看看progressDialog里面的方法 setProgressStyle:设置进度条风格,风格为圆形,旋转的.  setTitlt:设置标题  setMessage:设置提示信息:  setIcon:设置标题图标:  setIndeter

BigDecimal用法详解(转)

BigDecimal用法详解    http://www.cnblogs.com/linjiqin/p/3413894.html 一.简介Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数进行运算和处理.float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal.BigDecimal所创建的是对象

mapminmax的用法详解 _MATLAB

============外一篇 有关mapminmax的用法详解 by faruto==================================转自:http://www.ilovematlab.cn/thread-47224-1-1.html几个要说明的函数接口:[Y,PS] = mapminmax(X)[Y,PS] = mapminmax(X,FP)Y = mapminmax('apply',X,PS)X = mapminmax('reverse',Y,PS) 用实例来讲解,测试数据

Nmap用法详解

nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息.nmap支持很多扫描技术,例如:UDP.TCP connect().TCP SYN(半开扫描).ftp代理(bounce攻击).反向标志.ICMP.FIN.ACK扫描.圣诞树(Xmas Tree).SYN扫描和null扫描.从扫描类型一节可以得到细节.nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫

CSS中伪类及伪元素用法详解

原文:CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的读者可以自己尝试: :active  大致效果为用鼠标点击时,元素增加特效,鼠标松开时,特效消失.多用在按钮的点击上. 写法: 这里id为box的是一div块,在css中首先设置了他的基本样式,下面为加入:active伪类后需要修改的样式. 未点击时: 点击之后: :active.:hover.: