简介
tcpdump可以抓取指定规则的流量包,并按要求储存或者解析打印,可以通过 and、not、or等逻辑语 拼出多个条件的命令,抓取符合要求的流量数据
数据保存到文件
# -w保存数据到文件,文件名后缀为.pcap
#可以保存80端口的tcp流量,1000条 保存到abc.pcap文件中
tcpdump tcp port 80 -c 1000 -w abc.pcap
数据读取
#通过-w保存的文件,保存的数据是未解析的数据,不能直接用vim打开查看,需要使用命令-r 文件名
tcpdump -r abc.pcap
其他常用参数用法
#指定抓取类型
tcpdump tcp #会抓取tcp会话
#ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
#一些常用参数
-c num #后跟数字,统计达到数字或执行退出命令就会停止抓取
-C file-size #后跟文件大小,单位是百万,达到文件大小后,自动新建一个 -w设置的文件名 +数字的文件开始保存
-i eth0 #选择抓取的网口,例如eth0
-n #不将地址、端口号转化成名称,会默认将80端口转化成http
-w **.pcap #将数据保存到文件中
-r **.pcap #解析文件内容并打印
-t #不要在每个转储行上打印时间戳。
-tt #打印时间戳,自1970年1月1日00:00:00,UTC以及自该时间以来的每秒分数,在每个转储行上。
-ttt #在每个转储行上的当前行和上一行之间 打印增量(微秒或纳秒分辨率,具体取决于 --time-stamp-precision选项)。默认值为微秒分辨率。
-tttt #在每个转储行上打印时间戳,以小时,分钟,秒和从午夜开始的一小时一秒,以日期开头。
-ttttt #在每个转储线上的当前行和第一行之间 打印增量(微秒或纳秒分辨率,具体取决于 --time-stamp-precision选项)。默认值为微秒分辨率。
-e #输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。
-q #快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。
-X #输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-XX #输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
-v #当分析和打印的时候,产生详细的输出。
-vv #产生比-v更详细的输出。
-vvv #产生比-vv更详细的输出。
输出形式
tcpdump总的的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数
# 09:59:06.234545 IP 117.107.133.170.50296 > iZ2zehmlw2nbbc21pdwtv7Z.http: Flags [P.], seq 509:1017, ack 3526, win 16425, length 508: HTTP: GET / HTTP/1.1
上面是一条抓取的数据,开头是时间,IP后是来源ip.端口号 >目的IP.端口号
Flags标志是S(SYN),F(FIN),P(PUSH),R(RST),U(URG),W(ECN CWR),E(ECN-Echo)或“.”的某种组合。
分析包工具
wireshark
使用FTP等工具链接服务器 用wireshark打开该文件