tcpdump - chris-wangkk/myWiki GitHub Wiki

  1. tcpdump使用
    tcpdump 默认只会截取前 96 字节的内容—→要想截取所有的报文内容,可使用 -s number //number要截取的报文字节数,若为0则表示截取报文全部内容
    -n 表示不要解析域名直接显示 ip
    -nn 不要解析域名和端口
    -X 同时用 hex 和 ascii 显示报文的内容
    -XX 同-X,但同时显示以太网头部
    -S 显示绝对的sequence number而不是相对编号
    -i *(ethi/any…) 监听指定网卡,any表示所有的网卡
    -v,-vv,-vvv 显示更多的详细信息
    -c number 截取number个包后结束
    -A 只使用 ascii 打印报文的全部数据,不要和 -X 一起使用

过滤器
分3类:type,dir 和 proto
(1)Type 区分报文的类型,由 host, net 和 port 组成
host: 过滤某个主机的数据报文
net: 过滤某个网段的数据(net 1.2.3.0/24)
port: 过滤通过某个端口的数据报—>端口范围:portrange 21-23
数据报大小(单位是字节):tcpdump less 32/tcpdump greater 128/tcpdump > 32
(2)dir
src,dst:过滤源地址和目的地址
(3)proto: 过滤某个协议的数据,支持 tcp, udp 和 icmp(使用的时候可以省略 proto 关键字)


监视指定网络接口的数据包 tcpdump i eth1
监视指定主机的数据包 tcpdump host 主机名/ip地址
-
→组合:
监视主机A和主机B之间通信的数据包 tcpdump host A and B
监视主机A和主机B或C之间通信的数据包 tcpdump host A and \(B or C\)
监视主机A和除开主机B之外的机器通信的数据包 tcpdump host A and ! B
监视送到主机A的数据包 tcpdump dst host A

监视指定端口的数据包
监视本机从23端口发出或接收(即telnet)的数据包 tcpdump tcp port 23

与wireshark
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
/*
tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
-i eth1 : 只抓经过接口eth1的包
-t : 不显示时间戳
-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
-c 100 : 只抓取100个数据包
dst port ! 22 : 不抓取目标端口是22的数据包
src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
-w ./target.cap : 保存成cap文件
*/

  1. 输出信息含义
    格式:系统时间 来源主机.端口 > 目标主机.端口 数据包参数
    —→TCP 数据包
    src > dst: flags data-seqno ack window urgent options
    其中:
    src 和 dst 是源和目的IP地址以及相应的端口
    flags 标志由S(SYN), F(FIN), P(PUSH, R(RST),W(ECN CWT)或者 E(ECN-Echo(nt | rep:未知, 需补充))组成,单独一个’.’表示没有flags标识
    Data-seqno描述了此包中数据所对应序列号空间中的一个位置

tcpdump -nnvvXS //显示数据报的全部数据信息,用 hex 和 ascii 两列对比输出

  1. link:
    https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
    https://cizixs.com/2015/03/12/tcpdump-introduction/
⚠️ **GitHub.com Fallback** ⚠️