tcpdump抓包命令

目录:

  • 命令格式
  • 选项
  • expression表达式
  • 示例

 

【命令格式】

man手册显示如下

 1 tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]
 2                [ -c count ]
 3                [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
 4                [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
 5                [ --number ] [ -Q|-P in|out|inout ]
 6                [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]
 7                [ -W filecount ]
 8                [ -E spi@ipaddr algo:secret,...  ]
 9                [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
10                [ --time-stamp-precision=tstamp_precision ]
11                [ --immediate-mode ] [ --version ]
12                [ expression ]

 

【选项】

-A        以ASCII码打印报文(不包括链路层的头),方便分析网页
-c        抓取多少数据包后退出
-C        用于判断-w选项写入将报文写入的文件大小是否超过此值,如果超过就新建文件(文件名后缀1、2、3递增)
-d        将匹配信息包的编译代码以人类易读的方式输出至stdout
-dd       将匹配信息包的代码作为C语言程序段格式给出
-ddd      将匹配信息包的代码以十进制格式给出
-D        列出当前可用于抓包的网卡名称和对应编号。网卡名称和对应编号可用于-i选项
-e        打印链路层的头部信息,如MAC地址
-f        以数字形式打印外部ip地址
-F        从文件中读取过滤表达式,忽略命令行上的其它表达式
-G        每隔多少秒重新存储数据包至文件(-w选项指定的文件,需带时间),用法如tcpdump  -i ens35 -G 3 -w  packets_%H%M%S.pcap
-i        抓取指定网卡的数据流。若不指定,则使用最小编号(-D)的网卡;any参数抓取所有网卡的数据流
-K        不尝试计算IP、TCP、UDP校验和
-l        使标准输出变为缓冲形式(小写L);tcpdump -l | tee dat或者tcpdump -l > dat & tail -f dat,实现边写入文件边标准输出
-L        列出数据连接类型
-n        显示ip而不是主机名
-nn       显示端口号,而不是端口名
-N        不列出全域名
-#        打印数据包的行号
-p        非混杂模式,不能与host或broadcast一起使用
-q        快速输出,显示较少信息
-Q|-P     选择抓取某个方向的数据包,参数可以是in、out、inout(默认)
-r        从文件中读取数据包
-S        使用绝对值,而非相对值,打印tcp序列号
-s        抓到每一个数据包的截取字节数,默认68字节。参数0表示不截断,抓取完整数据包。
-T        将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议)
-t        不打印时间戳
-tt       打印时间戳秒数,自1970/0/0 00:00:00开始
-ttt      打印当前行和上一行的时间差
-tttt     打印标准时间戳格式,如2019-06-21 14:10:49.314665
-ttttt    打印当前行和第一行的时间差
-v        打印比较详细的信息
-vv       打印更加详细的信息
-vvv      打印非常详细的信息
-w        将数据包写入文件中,同时能使用-r选项恢复打印
-X        输出包的头部信息,以16进制和ASCII两种方式同时输出
-XX       详细输出包的头部信息,以16进制和ASCII两种方式同时输出
expression    过滤表达式,筛选输出的数据包

 

【expression表达式】

tcpdump表达式由一个或多个"单元"组成,每个单元一般包含ID的修饰符和一个ID(数字或名称)
基本格式为:proto    dir    type
三种修饰符:
proto:协议类型
常用的协议有tcp/udp/arp/ip/ether/icmp等。
若未给定协议类型,则匹配所有可能的类型。例如"tcp port 21","udp portrange 7000-7009";
dir:指定ID的方向
可以给定的值包括src/dst/src or dst/src and dst,默认为src or dst。
例如,"src foo"表示源主机为foo的数据包,"dst net 128.3"表示目标网络为128.3的数据包,"src or dst port 22"表示源或目的端口为22的数据包;
type:指定ID的类型
可以给定的值有host/net/port/portrange。例如"host foo","net 128.3","port 20","portrange 6000-6008"。默认的type为host;
除了修饰符和ID组成表达式单元,还有关键字表达式单元(gateway,broadcast,less,greater)和算术表达式
表达式单元之间可以使用操作符" and / && / or / || / not / ! "进行连接,如"host foo and not port ftp and not port ftp-data"
同样的修饰符可省略,"tcp dst port ftp or ftp-data or domain"与"tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain"意义相同
使用括号"()"可以改变表达式的优先级,但需要注意的是括号会被shell解释,所以应该使用反斜线"\"转义为"\(\)",在需要的时候,还需要包围在引号中。
常用端口和名字的对应关系可在linux系统中的/etc/services文件中找到

 

【示例】

查询端口ens32的数据包

# tcpdump -i ens32 -w ens32.pcap

查询所有端口数据包,并写入文件

# tcpdump -i any -w any.pcap

边显示边写入文件

# tcpdump -i ens32 -l |tee ens32.pcap

抓取与132服务器交互的数据包

# tcpdump -i ens35 -q -n -nn net 192.168.237.132

抓取来自132的数据包(默认会抓取src or dst)

# tcpdump -i ens35 -q -n -nn src host 192.168.237.132
# tcpdump -i ens35 -q -n -nn src net 192.168.237.132

抓取与132服务器交互的数据包,但排除22端口

# tcpdump -i ens35 -q -n -nn net 192.168.237.132  and not port 22

抓取端口80上与132服务器交互的数据包

# tcpdump -i ens35 -q -n -nn -tttt net 192.168.237.132 and tcp port 80

抓取端口范围10-80上来自132的数据包,同时排除22端口

# tcpdump -i ens35 -q -n -nn src net 192.168.237.132 and tcp portrange 10-80 and not port 22

Tips:proto协议不能修饰host和net,只能修饰port或portrange

 

转载于:https://www.cnblogs.com/MrReboot/p/11073075.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度Ueditor编辑器wordimage踩坑

背景 改造公司老项目后台编辑器,使用百度的Ueditor做替换。 发现问题 1、ue编辑器初始化后部分参数无法覆盖ueditor.config.js中的选项。2、wordimage(word图片转存)始终是灰色,无法使用。解决办法 1、将ueditor.config.js中的inp…

IntelliJ IDEA 配置JDK

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 IDEA配置JDK 1、点击File -->Project Structure; 2、点击左侧标签页SDKs选项,再点击左上角“”,…

get和post 两种基本请求方式的区别

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出…

无论是工作还是生活都要记住这些话

1.如果你不喜欢现在的工作,要么辞职不干,要么就闭嘴不言。初出茅庐,往往眼高手低,心高气傲,大事做不了,小事不愿做。不要养成挑三拣四的习惯。不要雨天烦打伞,不带伞又怕淋雨,处处表…

苏嵌第一天,shell中一些基础知识

一、常用环境变量 1、HOME变量 Linux系统中的每个用户都有一个相关的称作HOME的目录。 2、PATH变量 包含一列用冒号定界的目录的路径名字,便于可执行程序的搜索。 3、PS1变量 PS1变量包含了shell提示符,$符号 4、LOGNAME变量 包含用户的注册名字…

Java异常处理001:Maven clean package时Failed to clean project: Failed to delete

Java异常处理001:Maven打包时Failed to clean project: Failed to delete 异常日志: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.6.1:clean (default-clean) on project fmk-web: Failed to clean project: Failed …

Weekly Contest 141

做了第一道后,看了下中间两道题目,没怎么看懂就先放着,做完最后一道,然后就没时间了。 1089. Duplicate Zeros Given a fixed length array arr of integers, duplicate each occurrence of zero, shifting the remaining element…

IntelliJ IDEA 中配置、使用 SVN

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1.配置svn 如下图: file -- setting -- version control -- subversion -- 选择 SVN安装路径 -- apply -- OK 2.直接检出…

切记!职场邮件需注意的细节

电子邮件是如今工作场所重要的通信工具之一,但不是每个人都知道如何很好地使用这个工具。工作邮件也是人际沟通的一种方式,和打电话、面谈一样,有很多学问讲究,所以在发送邮件之前一定要深思熟虑。 【发送,抄送&…

李洋疯狂C语言之初

1.sizeof 是看数据类型所占空间大小,这个大小是以 字节(B)为单位 char 是C语言的字符数据类型 %d 用在printf 中表示往屏幕打印一个数字 printf ("char: %d\n", sizeof(char)); 数据类型之间的关系,shor…

时时流量查看工具-ifsta,nload,iftop

为什么80%的码农都做不了架构师?>>> 1、ifstat 是一个网络流量监测程序。能查看网卡的流出和流入的字节. 概要:ifstat就像iostat/vmstat描述其它的系统状况一样,是一个统计网络接口活动状态的工具。 参数: -l 监测环路…

10大清宿便排毒方法及简单排毒瘦小腹运动

早上空腹喝水法:每日起床后空腹喝下500C.C.加盐的冷开水。只要是冷的饮料或水分,在肠胃空腹时都有刺激肠胃蠕动的效果,而且越冰刺激效果越好,建议不需加盐,以免高血压患者因盐分中的金属离子造成肾的负担。 优酪乳加绿…

破解 IntelliJ IDEA 、免费注册方法、注册码

1. 找到hosts文件,在此路径下 C:\Windows\System32\drivers\etc 2. 修改hosts 文件,在最后 加一行配置: (此操作需要电脑管理员权限) 0.0.0.0 account.jetbrains.com 3. 从idea 注册码生成网站生成一组注册码。网…

李洋疯狂C语言之冒泡排序法

今天的课后任务是2种排序方式(冒泡排序和选择排序) 冒泡排序法1 原理:从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换他们,一直比较到a[n]。同理对a[1], a[2], ……a[n-1]处理&a…

MySQL水平分区代理Spock Proxy(一)

为什么80%的码农都做不了架构师?>>> MySQL水平分区代理Spock Proxy 水平分区(sharding)将同一数据表中的数据通过特定的算法进行分离,分别保存在不同的数据表中,从而部署到不同的数据库服务器上。 水平分区后,数据拆分…

OO第四单元作业

1.作业的架构设计 (1)对于第一次作业中,要求我们实现关于类图的查询指令。 在这次作业中,主要采用的储存方法是哈希表。 在查询方法上,大多数要求诸如共有多少类等,利用哈希表进行查询即可。 比较困难的一些…

伤钱伤感情 10件不能和亲戚一起干的事儿

关于亲戚和理财,网友小盒总结了下十大别和亲戚干的事儿,干了之后保管既伤钱又伤感情: 1、别帮亲戚炒股 赚了觉得你赚得不如以前吹的那么多,赔了就剩翻脸了,搭时间搭功夫还不落好。 2、别和亲戚一起做生意 道理同…

李洋疯狂C语言之选择排序

选择排序法 原理: 选择法循环过程与冒泡法一致,它还定义了记号mini,然后依次把a[min]同后面的元素比较,若a[min]>a[j],则使kj. 最后看看ki是否还成立,不成立则交换a[k], a[i],这样就比冒泡法省下许多无用的交换&a…

利用 git 提交代码、git 简单使用(拉取、推送、分支、合并)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1.安装 git sudo apt-get install git 2.查看版本: git --version 我的版本信息: 3. 配置用户名和邮箱 : …

如何在android studio中设置sdk path?

为什么80%的码农都做不了架构师?>>> Press F4 into Project StructureLeft > SDKsPress , add another sdk转载于:https://my.oschina.net/itfanr/blog/195714