介绍
tcpdump 是一个运行在命令行下的抓包工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。
参数详解
-A 以ASCII的形式显示抓包的内容
-c 在收到指定的包的数目后,tcpdump就会停止;
-F 从指定的文件中读取表达式,忽略其它的表达式;
-i 指定监听的网络接口;
-r 从指定的文件中读取包(这些包一般通过-w选项产生);
-w 直接将包写入文件中,并不分析和打印出来;
-s snaplen表示从一个包中截取的字节数。0表示包不截断,抓完整的数据包。默认的话 tcpdump 只显示部分数据包,默认68字节。
-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)
-X 把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。
-n 不把IP地址解析成域名。
实例练习
抓取和读取文件
抓取网卡ens32的数据包,数据包不截断,并把抓取的数据包保存到a.cap文件中
tcpdump -i ens32 -s 0 -w a.cap
读取a.cap文件中的内容
tcpdump -r a.cap
以ASCII的形式读取a.cap文件中的内容
tcpdump -A -r a.cap
以16进制的形式读取a.cap文件中的内容
tcpdump -X -r a.cap
抓取网卡ens32上22端口的TCP数据包
tcpdump -i ens32 tcp port 22
抓取网卡ens32上80端口的TCP数据包
tcpdump -i ens32 tcp port 80
抓取网卡ens32上53端口的UDP数据包
tcpdump -i ens32 udp port 53
tcpdump筛选
指定列筛选
tcpdump -n -r HTTP.cap | awk '{print $3}'|sort -u
指定源IP地址筛选
tcpdump -n src host 174.143.213.184 -r HTTP.cap
指定目的IP地址筛选
tcpdump -n dst host 174.143.213.184 -r HTTP.cap
指定端口号筛选
tcpdump -n port 80 -r HTTP.cap
指定协议端口号筛选
tcpdump -n tcp port 80 -r HTTP.cap
指定13号字节为24筛选
tcpdump -A -n 'tcp[13] = 24' -r HTTP.cap