tcpdump学习笔记记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35440678/article/details/76952742

前期准备

要想学会tcpdump,最起码需要对tcp/ip协议有一定了解,比如tcp三次握手,相关只是可以看看《计算机网络》或者《TCP/IP详解》。

tcpdump使用格式

格式:
tcpdump [ -AbdDefhHIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
[ -C file_size ] [ -G rotate_seconds ] [ -F file ]
[ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
[ -P in|out|inout ]
[ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ]
[ -E spi@ipaddr algo:secret,… ]
[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
[ expression ]

常用参数说明:

-X:除了输出每个数据包外,还以16进制的方式输出内容
-n:不要把ip地址转换成域名
-s:显示绝对序列号
-i any:监听哪个网卡
-t 不显示时间戳
-v 详细显示命令执行过程 -vv更详细
-N 不列出域名

看着参数比较多,比较复杂,但真是不会用到那么多,只掌握几个常用的就行,后面有具体案例。总结起来就是:

tcpdump 参数 表达式

输出内容

tcpdump
数据展示格式:
src > dst: flags data-seqno ack window urg
src:源IP和端口
dst:目的IP和端口
flags:TCP控制位 S(SYN)、F(FIN)、P(PSH)、R(RST)、E(ECE)、C(CWR)
data-seqno:该字段表示这个数据包中的序列号范围
ack: 表示连接的另一端所期望的下一个字节的序列号
window: win num 在这条连接相反方向上用于传输的接收缓冲区的空间大小
urg:报文段在指定的偏移上包含紧急数据
options:该报文端中的任意TCP选项

几个典型使用场景

按端口号过滤

tcpdump -Xnlps0 -i any port 3306
过滤3306的数据包,输出详细数据内容

按源ip和port过滤

tcpdump -Xnlps0 -i any src host 127.0.0.1 and port 3306
过滤源ip为127.0.0.1并且端口为3306的数据包,输出详细数据内容

高级:按具体某位置字节过滤

过滤

tcpdump -Xnlps0 -i any ‘ip[0x34:4]=0x00a10002’
过滤34开始4个字节为00a1 0002的包。

高级:抓取http get请求包

tcpdump -i eth1 -n -A src host 10.19.66.62 and dst port 80 and tcp[20:4]=0x47455420
首先查ASCII码表得”GET+空”的十六进制是0x47455420,因此表达式应为tcp[20:4]=0x47455420

参考:

Q:
- length 1460最大多少 (1500-20-20?)
- ip包还是tcp包,包头有多大?(http://roclinux.cn/wp-content/uploads/2012/09/TCP%E5%A4%B41.jpg

猜你喜欢

转载自blog.csdn.net/qq_35440678/article/details/76952742