当前位置: 首页 > 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

相关文章:

  • Spark_spark hints 详细介绍
  • Golang中WebSocket和WSS的支持
  • 一起学docker系列之十四Dockerfile微服务实践
  • Jtti:windows中apache怎么实现负载均衡
  • 【Java SE】带你在String类世界中遨游!!!
  • 软件设计之生成器模式
  • ESP32-Web-Server编程-JS 基础 1
  • JS常用数据类型转换(数字型和字符串型之间转换)
  • 企业级业绩系统如何建设
  • xxl-job适配postgresql数据库
  • Postgresql数据库运维统计信息
  • runapi的学习记录
  • Qt 自定义标题栏
  • 拼多多商品API接口接入说明
  • 编程的重要性及解决技术难题的方法
  • 4. 路由到控制器 - Laravel从零开始教程
  • Centos6.8 使用rpm安装mysql5.7
  • E-HPC支持多队列管理和自动伸缩
  • flutter的key在widget list的作用以及必要性
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Linux快速复制或删除大量小文件
  • Linux下的乱码问题
  • Promise面试题,控制异步流程
  • Python 反序列化安全问题(二)
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • React 快速上手 - 07 前端路由 react-router
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • webpack+react项目初体验——记录我的webpack环境配置
  • 蓝海存储开关机注意事项总结
  • 理解在java “”i=i++;”所发生的事情
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 我的zsh配置, 2019最新方案
  • 栈实现走出迷宫(C++)
  • 主流的CSS水平和垂直居中技术大全
  • 走向全栈之MongoDB的使用
  • #pragma once与条件编译
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (ZT)出版业改革:该死的死,该生的生
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (十五)使用Nexus创建Maven私服
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .bashrc在哪里,alias妙用
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net CoreRabbitMQ消息存储可靠机制
  • .Net6 Api Swagger配置
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [ajaxupload] - 上传文件同时附件参数值
  • [Ariticle] 厚黑之道 一 小狐狸听故事
  • [AutoSar]BSW_Com07 CAN报文接收流程的函数调用
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)