IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> tcpdump命令个人笔记 -> 正文阅读

[网络协议]tcpdump命令个人笔记

Tcpdump

一、命令构成
tcpdump:
tcpdump是一款常用抓包工具,类似于wireshark。
tcpdump的主程序会抓取当前全部网卡的全部数据包,条件允许的情况下,完全可以直接运行tcpdump抓取一个巨大的文件,然后传输到电脑上,使用图形化抓包软件来查看报文。但是实际操作上,并不可能允许你用tcpdump抓取所有报文。包括不限于:①设备性能瓶颈,很多微小型设备抓取全部报文可能会出错。②业务流量巨大,核心交换机一秒就能抓取几百上千个报文。③不方便传输数据包,有时候抓包只是想简单看一眼报文,还得抓取下来再传输很麻烦。
此时需要使用到tcpdump参数来过滤,使你只捕捉你想要获取的数据。

tcpump常用过滤条件:
tcpdump的参数构成较为复杂,大体分为4类:
tcpdump + proto + dir + type + option
这四类参数可以同时使用,不分先后,从而构成详细的过滤条件。

proto 类过滤器:根据协议进行过滤,可识别的关键词有:
ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx, or netbeui
如,想抓取icmp的包:tcpdump icmp
想抓取抓ipv4的包:tcpdump ip

type 类过滤器:可识别的关键词有:host, net, port, portrange,这些词后边需要再接参数值。
host 可以基于ip地址过滤,参数值为ip地址:tcpdump host 192.168.1.10
net 可以基于网段过滤,参数值为ip网段:tcpdump net 192.168.1.10/24
port 可以基于端口过滤,参数值为ip网段:tcpdump port 7070多个端口同时过滤时使用:tcpdump port 7070 or 800
portrange 如果想要抓取的端口很多可以这样写:tcpdump portrange 0-500 or 4000-8000

direction 类过滤器:根据数据流向进行过滤。
可识别的关键字有:src, dst

option 可选参数:和过滤无关的附加选项。
提升速度:
-n:不把ip转化成域名,直接显示 ip,避免执行 DNS lookups 的过程,速度会快很多
-nn:不把协议和端口号转化成名字,速度也会快很多。
-N:不打印出host 的域名部分.。比如,,如果设置了此选现,tcpdump 将会打印’nic’ 而不是 ‘nic.ddn.mil’.
读取数据包(看包):
-r 后接一个以 .pcap 后缀命令的文件名
控制输出:
-v:产生详细的输出. 比如包的TTL,id标识,数据包长度,以及IP包的一些选项。同时它还会打开一些附加的包完整性检测,比如对IP或ICMP包头部的校验和。
-vv:产生比-v更详细的输出. 比如NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码。(摘自网络,目前我还未使用过)
-vvv:产生比-vv更详细的输出。比如 telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,其相应的图形选项将会以16进制的方式打印出来(摘自网络,目前我还未使用过)
控制时间的显示:
-t:在每行的输出中不输出时间
-tt:在每行的输出中会输出时间戳
-ttt:输出每两行打印的时间间隔(以毫秒为单位)
-tttt:在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观)
显示数据包的头部:
-x:以16进制的形式打印每个包的头部数据(但不包括数据链路层的头部)
-xx:以16进制的形式打印每个包的头部数据(包括数据链路层的头部)
-X:以16进制和 ASCII码形式打印出每个包的数据(但不包括连接层的头部),这在分析一些新协议的数据包很方便。
-XX:以16进制和 ASCII码形式打印出每个包的数据(包括连接层的头部),这在分析一些新协议的数据包很方便。
过滤指定网卡的数据包:
-i:指定要过滤的网卡接口,如果要查看所有网卡,可以 -i any
过滤特定流向的数据包:
-Q: 选择是入方向还是出方向的数据包,可选项有:in, out, inout,也可以使用 --direction=[direction] 这种写法
其他常用的一些参数:
-A:以ASCII码方式显示每一个数据包(不显示链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据
-l : 基于行的输出,便于你保存查看,或者交给其它工具分析
-q : 简洁地打印输出。即打印很少的协议相关信息, 从而输出行都比较简短.
输出到文件:
-w 后接一个以 .pcap 后缀命令的文件名。tcpdump -w ./zhuabao.pcap
-c : 捕获 count 个包 tcpdump 就退出
-s : tcpdump 默认只会截取前 96 字节的内容,要想截取所有的报文内容,可以使用 -s number, number 就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。
-S : 使用绝对序列号,而不是相对序列号
-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)
-W:和-C配合使用,表示抓取多少个文件
-F:使用file 文件作为过滤条件表达式的输入, 此时命令行上的输入将被忽略.
对输出内容进行控制的参数:
-D : 显示所有可用网络接口的列表
-e : 每行的打印输出中将包括数据包的数据链路层头部信息
-E : 揭秘IPSEC数据
-L :列出指定网络接口所支持的数据链路层的类型后退出
-Z:后接用户名,在抓包时会受到权限的限制。如果以root用户启动tcpdump,tcpdump将会有超级用户权限。
-d:打印出易读的包匹配码
-dd:以C语言的形式打印出包匹配码.
-ddd:以十进制数的形式打印出包匹配码

tcpump过滤组合规则:
and:所有的条件都需要满足,也可以表示为 &&
or:只要有一个条件满足就可以,也可以表示为 ||
not:取反,也可以使用 !
想需要抓一个来自10.5.2.3,发往任意主机的3389端口的包:
tcpdump src host 192.168.1.10 and dst port 3389

当你在使用多个过滤器进行组合时,有可能需要用到括号,而括号在 shell 中是特殊符号,因为你需要使用引号将其包含。例子如下:
tcpdump src ‘192.168.1.10 and (dst port 3389 or 3390)’

而在单个过滤器里,常常会判断一条件是否成立,这时候,就要使用下面两个符号
=:判断二者相等
==:判断二者相等
!=:判断二者不相等

当你使用这两个符号时,tcpdump 还提供了一些关键字的接口来方便我们进行判断,比如
if:表示网卡接口名、
proc:表示进程名
pid:表示进程 id
svc:表示 service class
dir:表示方向,in 和 out
eproc:表示 effective process name
epid:表示 effective process ID

比如要过滤来自进程名为 nc 发出的流经 en0 网卡的数据包,或者不流经 en0 的入方向数据包,可以这样子写
tcpdump '(if==en0 and proc == nc) or (if != en0 and dir = in)

其他过滤器:
过滤指定大小的数据包,也是可以的
tcpdump less 32
tcpdump greater 62
tcpdump <= 128
根据 mac 地址进行过滤
tcpdump ether 11:22:33:44:55:66
过滤通过指定网关的数据包
tcpdump gateway 192.168.1.254

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 13:04:03  更:2021-11-11 13:06:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/3 8:15:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码