tcpdump用法

  • tcpdump
    • 一、什么是tcpdump
    • 二、命令格式与参数
    • 三、参数列表
    • 四、过滤规则组合
      • 逻辑运算符
      • 过滤器
      • 关键字
      • 理解 Flag 标识符
    • 五、常用例子

tcpdump

一、什么是tcpdump

二、命令格式与参数

  1. option 可选参数:将在后边一一解释。

  2. proto 类过滤器:根据协议进行过滤,可识别的关键词有: tcp, udp, icmp, ip, ip6, arp, rarp,ether,wlan, fddi, tr, decnet

  3. type 类过滤器:可识别的关键词有:host, net, port, portrange,这些词后边需要再接参数。

  4. direction 类过滤器:根据数据流向进行过滤,可识别的关键字有:src, dst,同时你可以使用逻辑运算符进行组合,比如 src or dst

三、参数列表

设置不解析域名提升速度
-n不把ip转化成域名,直接显示 ip,避免执行 DNS lookups 的过程,速度会快很多
-nn不把协议和端口号转化成名字,速度也会快很多。
-N不打印出host 的域名部分.。比如,,如果设置了此选现,tcpdump 将会打印’nic’ 而不是 ‘nic.ddn.mil’.
过滤指定网卡的数据包
-i指定要过滤的网卡接口,如果要查看所有网卡,可以 -i any
过滤特定流向的数据包
-Q选择是入方向还是出方向的数据包,可选项有:in, out, inout,也可以使用 --direction=[direction] 这种写法
常用的一些参数
-A以ASCII码方式显示每一个数据包(不显示链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据
-l基于行的输出,便于你保存查看,或者交给其它工具分析
tcpdump -nn -A -s1500 -l
通过 egrep 可以同时提取用户代理和主机名(或其他头文件)
-q简洁地打印输出。即打印很少的协议相关信息, 从而输出行都比较简短
-c捕获 count 个包 tcpdump 就退出
-stcpdump 默认只会截取前 96 字节的内容,要想截取所有的报文内容,可以使用 -s numbernumber 就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。
-S使用绝对序列号,而不是相对序列号
-Cfile-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)
-F使用file 文件作为过滤条件表达式的输入, 此时命令行上的输入将被忽略.
过滤结果输出到文件
-w使用 -w 参数后接一个以 .pcap 后缀命令的文件名,就可以将 tcpdump 抓到的数据保存到文件中。使用 wireshark 打开此文件便可进行分析
tcpdump icmp -w icmp.pcap
-r从文件中读取数据,读取后,我们照样可以使用上述的过滤器语法进行过滤分析
tcpdump icmp -r all.pcap
对输出内容进行控制的参数
-D显示所有可用网络接口的列表
-e每行的打印输出中将包括数据包的数据链路层头部信息
-E揭秘IPSEC数据
-L列出指定网络接口所支持的数据链路层的类型后退出
-Z后接用户名,在抓包时会受到权限的限制。如果以root用户启动tcpdump,tcpdump将会有超级用户权限。
-d打印出易读的包匹配码
-dd以C语言的形式打印出包匹配码
-ddd以十进制数的形式打印出包匹配码
-p不让网络接口进入混杂模式。默认情况下使用 tcpdump 抓包时,会让网络接口进入混杂模式。一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。如果设备接入的交换机开启了混杂模式,使用 -p 选项可以有效地过滤噪声。
控制详细内容的输出
-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码形式打印出每个包的数据(包括连接层的头部),这在分析一些新协议的数据包很方便

四、过滤规则组合

逻辑运算符

  • and:所有的条件都需要满足,也可以表示为 &&
  • or:只要有一个条件满足就可以,也可以表示为 ||
  • not:取反,也可以使用 !

过滤器

  • =:判断二者相等
  • ==:判断二者相等
  • !=:判断二者不相等

关键字

  • if:表示网卡接口名
  • proc:表示进程名
  • pid:表示进程 id
  • svc:表示 service class
  • dir:表示方向,in 和 out
  • eproc:表示 effective process name
  • epid:表示 effective process ID

理解 Flag 标识符

  • [S] : SYN(开始连接)
  • [.] : 没有 Flag
  • [P] : PSH(推送数据)
  • [F] : FIN (结束连接)
  • [R] : RST(重置连接)

五、常用例子

从 HTTP 请求头中提取 HTTP 用户代理:

 tcpdump -nn -A -s1500 -l | grep "User-Agent:"

通过 egrep 可以同时提取用户代理和主机名(或其他头文件):

 tcpdump -nn -A -s1500 -l | egrep -i 'User-Agent:|Host:'

只抓取 HTTP GET 和 POST 流量
抓取 HTTP GET 流量:

tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

也可以抓取 HTTP POST 请求流量:

tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'

注意:该方法不能保证抓取到 HTTP POST 有效数据流量,因为一个 POST 请求会被分割为多个 TCP 数据包。

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

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

相关文章

平衡车 - 电机调速

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 在我们的这篇文章当中,我们主要想要实现的功能的是电机调速功能。在我们的这篇文章中,主要实现的是开环的功能,而非闭环,也就是不加…

从利润率看价值:哪些公司值得长期持有?

💡 为什么盯紧利润率? 投资者常常盯着营收增长,却忽略了一个更关键的指标——利润率。 收入可以靠规模“堆”出来,但利润率却是企业护城河的真实体现。心理学研究表明:当一个产品或服务被消费者认定为“不可替代”&a…

小迪web自用笔记25

传统文件上传:上传至服务器本身硬盘。云存储:借助云存储oss对象存储(只能被访问,不可解析)Oss云存储Access key与Access ID:有了这两个东西之后就可以操作云存储,可以向里面发数据了。这玩意儿泄…

分发饼干——很好的解释模板

好的,孩子,我们来玩一个“喂饼干”的游戏。 0. 问题的本质是什么? 想象一下,你就是个超棒的家长,手里有几块大小不一的饼干,而面前有几个饿着肚子的小朋友。每个小朋友都有一个最小的“胃口”值&#xff0c…

场景题:如果一个大型项目,某一个时间所有的CPU的已经被占用了,导致服务不可用,我们开发人员应该如何使服务器尽快恢复正常

问:如果一个大型项目,某一个时间所有的CPU的 已经被占用了,导致服务不可用,我们开发人员 应该如何使服务器尽快恢复正常答:应对CPU 100%导致服务不可用的紧急恢复流程面试官,如果遇到这种情况,我会立即按照…

Docker 安装 RAGFlow保姆教程

前提条件 Ubuntu 服务器(20.04 或 22.04 LTS 推荐) 已安装 Docker 和 Docker Compose 如果尚未安装,请先运行以下命令:# 安装 Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh # 将当前用户加入 docker 组,避免每次都要 sudo sudo user…

为什么实际工程里 C++ 部署深度学习模型更常见?为什么大家更爱用 TensorRT?

很多人刚接触深度学习模型部署的时候,都会习惯用 Python,因为训练的时候就是 PyTorch、TensorFlow 啊,写起来方便。但一到 实际工程,特别是工业设备、医疗影像、上位机系统这种场景,你会发现大多数人都转向了 C 部署。…

深入理解 Java 集合框架:底层原理与实战应用

在日常开发中,集合是 Java 中使用频率最高的工具之一。从最常见的 ArrayList、HashMap 到更复杂的并发集合,几乎每一个 Java 程序员都离不开集合框架。集合框架不仅提供了丰富的数据结构实现,还封装了底层复杂的逻辑,让开发者能够…

爬取m3u8视频完整教程

爬取步骤:1.先找到网页源代码2.从网页源代码中拿到m3u83.下载m3u84.读取m3u8文件,下载视频5.合并视频首先我们来爬取一个星辰影院的电影:下面我以这个为例:我们需要在源代码中找到m3u8这个url:紧接着我们利用下面的方法…

Python爬虫实战: 基于Scrapy的Amazon跨境电商选品数据爬虫方案

概述与设计思路 利用Python的Scrapy框架进行大规模页面抓取和结构化数据提取,配合aiohttp实现高并发请求,从而高效获取Amazon平台上的商品列表、详情、评论等公开信息。通过对这些数据进行清洗与分析,可以识别出有潜力的商品,评估市场竞争程度,并跟踪竞争对手的动态,为跨…

稳定版IM即时通讯 仿默往APP即时通讯im源码聊天社交源码支持二开原生开发独立部署 含搭建教程

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 技术开发语言: 后台管理端:Java GO Mysql数据库 安卓端:Java iOS端:ob PC端:c 功能简单介绍: 单聊&#xff…

封装一个redis获取并解析数据的工具类

redis获取并解析数据工具类实现代码使用示例实现代码 import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import lom…

23种设计模式——策略模式 (Strategy Pattern)​详解

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏:设计模式 ✨特色专栏:知识分享 &#x…

CI(持续集成)、CD(持续交付/部署)、CT(持续测试)、CICD、CICT

目录 **CI、CD、CT 详解与关系** **1. CI(Continuous Integration,持续集成)** **2. CD(Continuous Delivery/Deployment,持续交付/部署)** **持续交付(Continuous Delivery)** **持续部署(Continuous Deployment)** **3. CT(Continuous Testing,持续测试)** **4.…

【音视频】WebRTC ICE 模块深度剖析

原文链接: https://mp.weixin.qq.com/s?__bizMzIzMjY3MjYyOA&mid2247498075&idx2&sn6021a2f60b1e7c71ce4d7af6df0b9b89&chksme893e540dfe46c56323322e780d41aec1f851925cfce8b76b3f4d5cfddaa9c7cbb03a7ae4c25&scene178&cur_album_id314699…

linux0.12 head.s代码解析

重新设置IDT和GDT,为256个中断门设置默认的中断处理函数检查A20地址线是否启用设置数学协处理器将main函数相关的参数压栈设置分页机制,将页表映射到0~16MB的物理内存上返回main函数执行 源码详细注释如下: /** linux/boot/head.s** (C) 1991 Linus T…

Maven动态控制版本号秘籍:高效发包部署,版本管理不再头疼!

作者:唐叔在学习 专栏:唐叔的Java实践 关键词:Maven版本控制、versions插件、动态版本号、持续集成、自动化部署、Java项目管理 摘要:本文介绍如何使用Maven Versions插件动态控制项目版本号和依赖组件版本号,实现无需…

简述:普瑞时空数据建库软件(国土变更建库)之一(变更预检查部分规则)

简述:普瑞时空数据建库软件(国土变更建库)之一(变更预检查部分规则) 主要包括三种类型:常规检查、行政区范围检查、20X异常灭失检查 本blog地址:https://blog.csdn.net/hsg77

shell中命令小工具:cut、sort、uniq,tr的使用方式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、cut —— 按列或字符截取1. 常用选项2. 示例二、sort —— 排序(默认按行首字符升序)1. 常用选项常用 sort 命令选项三、uniq —— 去…

【Linux】Linux开发必备:Git版本控制与GDB调试全指南

前言:在Linux开发流程中,版本控制与程序调试是保障项目稳定性和开发效率的两大核心环节。Git作为当前最主流的分布式版本控制系统,能高效管理代码迭代、追踪修改记录并支持多人协同开发;GDB(GNU调试器)是Li…