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

tcpdump命令个人笔记相关推荐

  1. tcpdump命令---Linux学习笔记

    嗅探器(Sniffer): 介绍: 嗅探器是利用计算机的网络接口截获目的地位其他计算机的数据报文的一种技术.它工作在网络的底层,把网络传输的全部数据记录下来.嗅探器可以帮助网络管理员查找网络漏洞和检测 ...

  2. Tcpdump命令的使用与示例——linux下的网络分析

    顾名思义,TcpDump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的 ...

  3. c#sort升序还是降序_Linux排序命令sort笔记

    很多时候Linux需要对文本相对比较规范的文本数据进行排序,这时候可以使用Linux系统下的sort命令进行处理. 语法格式:sort [-ntkr] filename 常用参数: -n 根据数字进行 ...

  4. linux命令行大全 笔记,分享|4 个 Linux 下的命令行笔记程序

    这些工具可以让你在 Linux 命令行下简单而有效地记录笔记和保存信息. 当你需要保存代码段或 URL.想法或引用时,可能会启动文本编辑器或使用桌面或基于 Web 的笔记记录工具.但那些不是你唯一的选 ...

  5. linux dump用法,Linux命令之tcpdump命令用法介绍

    Linux tcpdump命令用于倾倒网络传输数据. 执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员. 语法 tcpdump [-adeflnN ...

  6. Linux下的命令总结笔记(二)

    说在前面的话: 本文是以笔记的形式呈现,那么其内容也将会有一个更新的过程.其命令也为亲测内容,大家可以放心使用(蓝色字体部分除外,蓝色部分为未测试或测试后未验证).如果有一些什么问题,可以给我留言. ...

  7. 【Linux】一步一步学Linux——tcpdump命令(185)

    00. 目录 文章目录 00. 目录 01. 命令概述 02. 命令格式 03. 常用选项 04. 参考示例 05. 总结 06. 附录 01. 命令概述 tcpdump命令是一款sniffer工具, ...

  8. linux之awk命令学习笔记

    Linux之awk命令学习笔记 前言 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具. 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, ...

  9. linux的tcpdump命令详解,tcpdump命令

    tcpdump命令是一款sniffer工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析. 语法tcpdump(选项) 选项-a:尝试将网络和广播地 ...

最新文章

  1. python文件读写1
  2. LeetCode 37. Sudoku Solver--数独求解(回溯法)--Java 3ms,Python 80ms 解法
  3. cmw500综合测试仪使用_大屏幕真彩色互感器综合特性测试仪功能特点
  4. 二叉树 —— 中序遍历结点的后继
  5. PE结构绑定导入实现
  6. ELK 企业级日志分析系统
  7. 在AD中恢复误删除的对象
  8. 50个Web设计师超便利的工具
  9. 历史上有关人工智能的七个片段
  10. 解决XShell连接时无法root用户登录问题【Linux】
  11. Meidapipe 3D手势姿态跟踪算法,手机端实时检测 ,多个手势同时捕捉
  12. android toolbar源码解析,深入理解Android 5.0中的Toolbar
  13. sql server序列_SQL Server中的Microsoft时间序列
  14. [转载] lstm时间序列预测_pytorch入门使用PyTorch进行LSTM时间序列预测
  15. java 遍历 List 的六种方式 学习笔记
  16. PG数据库表及表注释查询语句
  17. python表格绘制斜线表头_Excel表格绘制斜线表头的三种方法,懂得这些技巧就够了...
  18. Spark独到见解--Action算子总结
  19. [Azure - SLA] 在微软云中的服务级别协议SLA
  20. [SV]SystemVerilog Structured Procedures --- always_comb、always_ff、always_latch

热门文章

  1. 龙测案例-拼多多小程序
  2. Java并发编程:volatile关键字详解
  3. 论文投稿指南——中文核心期刊推荐(经济管理)
  4. ucl计算机教授汪军,UCL汪军教授开课:带你入坑多智能体机器学习(免费)!
  5. Unity2020使用Steam VR开发HTC VIVE Cosmos
  6. 加拿大移民局将采用以客户为中心的服务方法
  7. 搭建一个私人云(群晖)
  8. ProE模型导入Adams视频教程大集合【转载龙之殿网站】
  9. 申通快递机器人上岗_申通快递机器人上岗 物流机器人在中国会是个大生意
  10. 计算机实验word42,Word2010计算机实验报告--.docx