tcpdump 筛选抓包
安装
$ sudo yum install tcpdump
常用参数
-i interface: 设置抓取的网卡名(可以使用-i any抓取所有网卡的数据包)
tcpdump -i eth0
-D: 列出可用的网卡列表
$ sudo tcpdump -D
1.eth0
2.nflog (Linux netfilter log (NFLOG) interface)
3.nfqueue (Linux netfilter queue (NFQUEUE) interface)
4.usbmon1 (USB bus number 1)
5.any (Pseudo-device that captures on all interfaces)
6.lo
-w file: 把捕获的包数据写入到文件中(可以使用-w -输出到标准输出)
tcpdump -i eth0 -w debug.cap
-C size: 使用-w写入文件时,限制文件的最大大小,超出时新开一个文件(单位是 1,000,000 bytes)
$ sudo tcpdump -i eth0 -w debug.cap -C 1
$ ls debug* -l
-rw-r--r-- 1 tcpdump tcpdump 1000956 Jan 14 10:16 debug.cap
-rw-r--r-- 1 tcpdump tcpdump 1000323 Jan 14 10:32 debug.cap1
-rw-r--r-- 1 tcpdump tcpdump 1000017 Jan 14 10:51 debug.cap2
-rw-r--r-- 1 tcpdump tcpdump  970705 Jan 14 11:08 debug.cap3
-r file: 从文件中读取包数据
tcpdump -r debug.cap
-v: 启用 verbose output,抓包时输出包的附加信息(可以使用多个-v:-v,-vv,-vvv多个v会显示更多更详细的信息)
tcpdump -v
tcpdump -vv
-A: 以 ASCII 码方式显示每一个数据包(不会显示数据包中链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据-x: 打印每个包的头部数据, 同时会以16进制打印出每个包的数据(但不包括连接层的头部)-xx: 打印每个包的头部数据, 同时会以16进制打印出每个包的数据, 其中包括数据链路层的头部-X: 打印每个包的头部数据, 同时会以16进制和 ASCII 码形式打印出每个包的数据(但不包括连接层的头部)-XX: 打印每个包的头部数据, 同时会以16进制和 ASCII 码形式打印出每个包的数据, 其中包括数据链路层的头部-c count: 设置抓取到多少个包后就退出
tcpdump -i eth0 -c 100
-n: 不要把地址转换为主机名(直接显示 ip 不要解析为域名)
tcpdump -n
-nn: 不要把转换协议和端口号(直接显示协议和端口号,不要转换为协议名称,比如 http)
tcpdump -nn
-s snaplen: 设置 tcpdump 的数据包抓取长度为 snaplen , 为 0 时表示让 tcpdump 自动选择合适的长度来抓取数据包.
tcpdump -s 0
-S: 打印TCP 数据包的顺序号时, 使用绝对的顺序号, 而不是相对的顺序号.
tcpdump -S
-Z user: 使tcpdump 放弃自己的超级权限(如果以root用户启动tcpdump, tcpdump将会有超级用户权限), 并把当前tcpdump的用户ID设置为user, 组ID设置为user首要所属组的ID
sudo tcpdump -Z user2
常用的参数组合:
sudo tcpdump -i eth0 -nnS -s 0 -c 100 -Avvv [<expression>]
sudo tcpdump -i eth0 -nnS -s 1024 -c 100 -Avvv [<expression>]
sudo tcpdump -i eth0 -nnS -s 1024 -C 10 -c 10000 -v -w debug.cap [<expression>]
默认 tcpdump 会抓取所有的数据,可以通过指定过滤规则来过滤数据包。
过滤筛选
网卡过滤
指定eth1网卡
tcpdump -i eth1
所有网卡
tcpdump -i any
主机过滤
要获取指定 IP 的数据包,不管是作为源地址还是目的地址,使用下面命令:
tcpdump host 192.168.3.7
要指定 IP 地址是源地址或是目的地址则使用:
tcpdump src 192.168.1.100
tcpdump dst 192.168.1.100
或者
tcpdump src host 192.168.1.100
tcpdump dst host 192.168.1.100
网段过滤
tcpdump -i eth1 net 192.168
tcpdump -i eth1 src net 192.168
tcpdump -i eth1 dst net 192.168
端口过滤
tcpdump port 22
tcpdump src port 22
tcpdump dst port 22
端口范围过滤
tcpdump portrange 22-125
协议过滤
tcpdump -i eth1 arp
tcpdump -i eth1 ip
tcpdump -i eth1 tcp
tcpdump -i eth1 udp
tcpdump -i eth1 icmp
常用表达式
非 : ! or "not" (去掉双引号)
且 : && or "and"
或 : || or "or"
我们还可以使用“与” (and,&&)、“或” (or,|| ) 和“非”(not,!) 来将两个条件组合起来。当我们需要基于某些条件来分析网络报文是非常有用。
写入读取文件
将捕获的包写入文件
tcpdump -i eth1 -w file.cap
读取tcpdump写入的文件
tcpdump -r file.cap
当然,一般都是下载下来使用Wireshark查看
具体案例
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
参考:
tcpdump 筛选抓包的更多相关文章
- Android 下使用tcpdump网络抓包方法
		
Android 下使用tcpdump网络抓包方法 抓包需要tcpdump以及Root权限,tcpdump在本文后有下载. 首先把tcpdump传进手机,用adb命令(放SD卡有时会有问题,我一次可以用 ...
 - tcpdump+wireshark抓包分析
		
上一篇文章中,我们介绍了tcpdump如何抓包. tcpdump是命令行下便捷的抓包和分析工具,但使用方式不够友好, wireshark是带图形化界面的抓包和分析工具,操作简便,但需要主机有显示器. ...
 - Linux使用tcpdump命令抓包并使用wireshark分析
		
Linux使用tcpdump命令抓包并使用wireshark分析 介绍 有时分析客户端和服务器网络交互的问题时,为了查找问题,需要分别在客户端和服务器上抓包,我们的客户端一般是windows上的,抓包 ...
 - 【测试工具】tcpdump + wireshark 抓包实践
		
Tcpdump + Wireshark 抓包实践 工具介绍 Tcpdump 看到dump大家应该有所意识吧,就是下载数据,抓数据.tcpdump是linux下的一个抓取tcp包的命令 Usage: t ...
 - tcpdump 进行抓包
		
tcpdump 进行抓包是怎么回事? tcp抓包是怎么搞的?
 - adb+tcpdump手机抓包过程出现的报错及解决方法
		
tcpdump下载:https://www.androidtcpdump.com/android-tcpdump/downloads 1.夜神模拟器连接不上adb D:1手机木马取证\android- ...
 - Linux使用tcpdump命令抓包保存pcap文件wireshark分析
		
[root@ok Desktop]# yum search tcpdump Loaded plugins: fastestmirror, refresh-packagekit, security Lo ...
 - CentOS下使用tcpdump网络抓包
		
tcpdump是Linux下的截获分析网络数据包的工具,对优化系统性能有很大参考价值. 安装 tcpdump不是默认安装的,在CentOS下安装: yum install tcpdump 在Ubunt ...
 - Linux系统-tcpdump常用抓包命令
		
主要语法 过滤主机/IP: tcpdump -i eth1 host 172.16.7.206 抓取所有经过网卡1,目的IP为172.16.7.206的网络数据 过滤端口: tcpdump -i e ...
 
随机推荐
- mapreduce 变量共享
			
mapreduce 全局变量共享 在编写MapReduce程序时,经常会遇到这样的问题,全局变量如何保存?如何让每个处理都能获取保存的这些全局变量?使用全局变量是不可避免的,但是 在MapRdeuce ...
 - sqlException  使用relace 替换单引号
			
我们从前端输入数据的时候,可能会输入一些 单引号 ,的字符 导致直接进行执行sql 语句保存的时候出现错误 如: 输入的有 单引号 保存按钮小代码 <asp:Button ID="bt ...
 - ReentrantLock 的公平锁源码分析
			
ReentrantLock 源码分析 以公平锁源码解析为例: 1:数据结构: 维护Sync 对象的引用: private final Sync sync; Sync对象继承 AQS, Syn ...
 - Intellij IDEA 中的 Debug 控制台输出窗口不见了的解决办法
			
在 Debug 工具窗口,如图点击左侧重置布局图标,你的console窗口就还原了.
 - Scala2.12 从入门到精通实战高端视频课程(含网盘下载地址)
			
Scala快速入门到精通 下载地址链接:https://pan.baidu.com/s/1bTSZSlWftFYaLQL6lVH62A 提取码:ohfk 下载后使用视频中自带的专用播放器打开视频就能看 ...
 - ubuntn18 docker zabbix+grafana安装和使用
			
在ubuntu docker inflxudb(安装 使用 备份 还原 以及python编码) telegraf Grafana我采用telegraf采集数据, 本文计划采用zabbix来才采集数据, ...
 - k8s部署nacos之二 nfs
			
1.在linux服务器下载nacos 首先安装git命令 yum install git git clone https://github.com/nacos-group/nacos-k8s.git ...
 - 300iq Contest 1 简要题解
			
300iq Contest 1 简要题解 咕咕咕 codeforces A. Angle Beats description 有一张\(n\times m\)的方阵,每个位置上标有*,+,.中的一种. ...
 - FileChannel详解
			
经过前两篇文章的学习,相信对Channel有了一定的整体性认识.接下来通过学习本篇文章,更进一步认识Channel,学习FileChannel的细节 用途 特点 api 原理 一.用途 传统IO中的F ...
 - 论文笔记:LightGBM: A Highly Efficient Gradient Boosting Decision Tree
			
引言 GBDT已经有了比较成熟的应用,例如XGBoost和pGBRT,但是在特征维度很高数据量很大的时候依然不够快.一个主要的原因是,对于每个特征,他们都需要遍历每一条数据,对每一个可能的分割点去计算 ...