当前位置: 首页 > news >正文

tcpdump使用心得

参考原文 https://danielmiessler.com/p/tcpdump/

几个用例

tcpdump -i eth0
显示eth0网卡当前所有的抓包情况

eth0是网卡名,可以通过ifconfig获得,也可以通过 tcpdump -D 显示当前可以监听的网卡
-i 参数表示接口,后跟要监听的网卡

tcpdump -nnSX port 443
抓https的包显示结果
04:45:40.573686 IP 78.149.209.110.27782 > 172.30.0.144.443: Flags [.], ack 
278239097, win 28, options [nop,nop,TS val 939752277 ecr 1208058112], length 00x0000:  4500 0034 0014 0000 2e06 c005 4e8e d16e  E..4........N..n0x0010:  ac1e 0090 6c86 01bb 8e0a b73e 1095 9779  ....l......>...y0x0020:  8010 001c d202 0000 0101 080a 3803 7b55  ............8.{U0x0030:  4801 8100

-nn 表示不要解析ip和域名,直接显示ip和port的数字
-s 表示TCP包的seq number显示绝对值而不是相对值
-X 数据用十六进制和ACSII码形式显示
port 443 指定打印443端口的包,443对应https的端口
04:45:40.573686 抓包的时间戳
78.149.209.110.27782 > 172.30.0.144.443 数据源IP.端口 > 数据目标IP.端口
win 28 滑动窗口还能放28个字节的数据
options [nop,nop,TS val 3528741631 ecr 3165963134] TS val表示timestamp value, ecr表示Echo Reply
length 0 包的长度为0

-c {n} 指定接下来看n个包

tcpdump -A -i eth0 'port http or port ftp or port telnet' | grep -i 'user\|pass\|login'
抓取未加密协议中的用户名密码信息

-A 用ACSII码形式显示抓取的报文
port http 抓取http协议的报文,通过指定port, 也可以指定host, 或者src/dst

根据域名过滤
tcpdump -i eth0 dst host suspicious.com

dst host suspicious.com 过滤目的域名为 suspicious.com

根据IP范围过滤
tcpdump -i enp10s0 net {IP_RANGE}

IP范围的写法

1. CIDR写法
tcpdump -ni igb1 src net 172.16.0.0/12
表示匹配172.16.0.0的前12位,详细可以看https://docs.netgate.com/pfsense/en/latest/network/cidr.html
2. 点对数字
tcpdump -ni igb1 net 192.168.1
表示匹配192.168.1.x的ip
tcpdump -ni igb1 net 10
表示匹配10.x.x.x的IP
根据端口范围过滤
tcpdump  portrange 21-23
根据协议过滤
tcpdump -ni igb1 tcp port 80
过滤tcp协议的http端口,根据端口和协议
tcpdump -ni igb1 port 53
过滤DNS流浪,根据端口
tcpdump -ni igb1 proto \\icmp
指定proto关键字,后面的协议要加双斜线来转义
tcpdump -ni igb1 not proto \\carp
可以加not来表示不过滤指定的协议

not, and, or等逻辑表达可以用在host, src, proto等各个字段

根据tcp header的flag过滤

flag位于TCP header的第13个字节

tcpdump 'tcp[13] = 41'
flag位于第13个字节,41表示RESET-ACK同时为1
根据报文大小过滤
tcpdump 'len > 32 and len < 64'
结果写入到pcap文件
tcpdump  port 80 -w capture_file
http://www.lryc.cn/news/252115.html

相关文章:

  • QJsonObject 是 Qt 框架中用于表示 JSON 对象的类
  • kafka3.6.0部署
  • MybatisPlus批量插入(伪批量),增强为真实批量插入
  • 【零基础入门Python】Python If Else流程控制
  • 新手零基础学习彩铅画,彩铅快速入门教程合集
  • 线程池的拒绝策略
  • Redis7--基础篇5(管道、发布订阅)
  • Unity中Shader指令优化(编译后指令解析)
  • 单个 Zip 文件体积超过 40GB
  • pandas 基础操作3
  • 开发知识点-Maven包管理工具
  • 104. 二叉树的最大深度
  • JAVA毕业设计113—基于Java+Springboot+Vue的体育馆预约系统(源代码+数据库+12000字论文)
  • 【自动化测试】pytest 用例执行中print日志实时输出
  • 【深度学习】KMeans中自动K值的确认方法
  • github问题解决(持续更新中)
  • 如何创建一个vue工程
  • 50 代码审计-PHP无框架项目SQL注入挖掘技巧
  • 基于Spring、SpringMVC、MyBatis的企业博客网站
  • spring日志输出到elasticsearch
  • 谷歌 Gemini 模型发布计划推迟:无法可靠处理部分非英语沟通
  • Ubuntu显卡及内核更新问题
  • SpringBoot错误处理机制解析
  • 牛客剑指offer刷题模拟篇
  • Locust单机多核压测,以及主从节点的数据通信处理!
  • ERROR: [pool www] please specify user and group other than root
  • 京东商品详情接口在电商行业中的重要性及实时数据获取实现
  • WT2003H MP3语音芯片方案:强大、灵活且易于集成的音频解决方案
  • 机器学习深度学学习分类模型中常用的评价指标总结记录与代码实现说明
  • fastapi 后端项目目录结构 mysql fastapi 数据库操作