服务器抓包-tcpdump使用简介

  • Post author:
  • Post category:其他




1、写在前面

tcpdump是Linux里的字符界面的数据抓包分析软件,用tcpdump抓到的数据包可以使用绝大多主流分析软件进行分析,例如wireshark。

安装:


sudo apt-get install tcpdump


版本查看和命令简要说明:


tcpdump -help



2、常用参数

示例


tcpdump -i eth0 -nn -s0 -v -w 1111.pcap

-i : 指定监控的网卡,通常是以太网卡或无线网卡,也可以是 vlan 或其他特殊接口。如果该系统上只有一个网络接口,则无需指定。

可以使用

tcpdump -D

查看所有网卡,当不知道用哪个时,也可以使用any:

tcpdump -i any -nn -s0 -v host 10.20.30.80

来捕获所有网卡上的数据。

-nn : 单个 n 表示不解析域名,直接显示 IP;两个 n 表示不解析域名和端口。这样不仅方便查看 IP 和端口号,而且在抓取大量数据时非常高效,因为域名解析会降低抓取速度。

-s0 : tcpdump 默认只会截取前 96 字节的内容,要想截取所有的报文内容,可以使用 -s number, number 就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。

-v : 使用 -v,-vv 和 -vvv 来显示更多的详细信息。

-w 写入文件(默认放置在当前文件夹)

还可以使用如下参数:

-A:例如:

tcpdump -A -s0


表示使用 ASCII 字符串打印报文的全部数据,这样可以使读取更加简单,方便使用 grep 等工具解析输出内容。-X 表示同时使用十六进制和 ASCII 字符串打印报文的全部数据。这两个参数不能一起使用。

-r: 例如

tcpdump -r 1111.pcap


-r用于读取写入文件

-c:指定抓包数量

指定抓取2个数据包:

tcpdump -c 2

-l:行缓冲模式

如果想实时将抓取到的数据通过管道传递给其他工具来处理,需要使用 -l 选项来开启行缓冲模式(或使用 -c 选项来开启数据包缓冲模式)。使用 -l 选项可以将输出通过立即发送给其他命令,其他命令会立即响应。


tcpdump -i eth0 -s0 -l port 80 | grep 'Server:'



3、条件过滤

示例:

tcpdump -i any -nn -s0 -vvv -X host 10.20.30.70 and 10.20.30.80 and port 443 -w 1232.pcap

1、host:指定需要监听的主机。


tcpdump host 10.20.30.80


注:若使用了host参数使用了计算机名或域名。例tcpdump host shi-pc ,则无法再使用-n选项。

同样,可以指定源地址和目的地址

源地址:

tcpdump src 10.20.30.80

目的地址:

tcpdump dst 10.20.30.80


2、port:指定端口


tcpdump port 80


使用portrange参数,用于指定端口范围。

tcpdump tcp portrange 1-1024


同样也可以使用

tcpdump src port 8080



tcpdump dst port 8080


3、过滤协议


tcpdump udp


支持指定以下协议:「ip,ip6,arp,tcp,udp,wlan」等。

4、net:过滤网段


tcpdump net 192.168.1


也可以使用

tcpdump src net 10


tcpdump dst net 10



4、支持的逻辑表达式


&&、and、or、||、not、!


示例:

tcpdump not tcp port 22 and host "(192.168.1.112 or 192.168.1.113)"



参考博客


网络/命令行抓包工具tcpdump详解



超详细的网络抓包神器 tcpdump 使用指南



版权声明:本文为yogima原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。