数据包简要说明
以太网层 14个字节 mac (6*2) + type (2) = 14
ip头部 20个字节
tcp头部 20个字节
实际数据 偏移 54 十六进制 0x38(大多数情况,也不一定是这个,具体字段可以看下面图片)
基本过滤
host
tcpdump -XXvvvnn -s0 -c1 [src dst] host 192.168.1.1
port
tcpdump -XXvvvnn -s0 -c1 [src dst] port 80
net
tcpdump -XXvvvnn -s0 -c1 [src dst] net 192.168
ip/tcp/udp
tcpdump -XXvvvnn -s0 -c1 [ip tcp udp]
表达式
以上过滤条件和用表达式连接
and or not
&& || !
高级过滤
通过分析包内容,或者协议头,设置特征从而过滤其中内容
抓取q* 协议包
tcpdump -XXvvvnn -s0 -c1 'tcp[38:2]=0x3232'
大小过滤
tcpdump -XXvvvnn -s0 -c1 'ip[2:2]>600'
GET 过滤
有些版本不支持这种
tcpdump -XXvvvnn -s0 -c1 'tcp[(tcp[12>>2):4]=0x47455420'
保存文件Wireshark分析
tcpdump -s 0 -w /sdcard/test.cap
注意
上面 -c 参数为 1 仅为测试,如果抓多个包自行修改
参考
tcpdump 详解
补充 Wireshark
某信通过版本过滤数据
tcp[21:2] == f1:03
tcp[21:2] == f103
tcp数据从第20个字节开始
flags
[S]:SYN同步标识
[.]:.表示ACK确认标识
[S.]:SYN同步标识,以及确认[S]的ACK
[P.]:PSH,push推送,数据传输
[R.]:RST,连接重置
[F.]:FIN结束连接
[DF]:Don’t Fragment(不要碎裂),当DF=0时,表示允许分片,一般-v时才有这个标识
[FP.]:标记FIN、PUSH、ACK组合,这样做是为了提升网络效率,减少数据来回确认等
14:43:12.525977 IP 210.128.243.93.443 > 10.222.11.198.40162: Flags [.], seq 3430:4670, ack 1847, win 65535, length 1240
时间 源地址和端口 目的地址和端口 标志 seq号3430是始值,4670结束值 确认号1847已收到 滑动窗口 数据大小seq 4670-3430