Linux 环境下,通常通过 tcpdump 来进行抓包和分析。它是几乎所有 Linux 发行版本预装的数据包抓取和分析工具。
一、tcpdump 的用法
tcpdump [-aAbdDefhHIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]
[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
[ -i interface ] [ -j tstamptype ] [ -M secret ]
[ -P in|out|inout ]
[ -r file ] [ -s snaplen ] [ -T type ] [ -V file ] [ -w file ]
[ -W filecount ] [ -y datalinktype ] [ -z command ]
[ -Z user ] [ expression ]
常见参数说明(区分大小写):
-s 设置数据包抓取长度。如果置为0,则表示自动选择合适的长度来抓取数据包。
-w 将抓包结果导出到文件,而不是在控制台进行分析和打印输出。
-i 指定需要监听的接口(网卡)。
-vvv 输出详细的数据交互信息。
expression 一个正则表达式,用作过滤报文的条件。主要包含如下几类:
关于类型的关键字:包括 host(主机),net(网络),port(端口)。
确定传输方向的关键字:包括 src(源),dst(目标),dst or src(源或目标),dst and src(源和目标)。
使用协议的关键字:包括 icmp,ip,arp,rarp,tcp,udp等类型。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
二、常见用法
1、抓取指定网卡指定端口的交互数据
[root@iZbp1bhgh25pacaj2ffmp2Z ~]# tcpdump -s 0 -i eth0 port 22
- 1
2、抓取指定网卡发送给指定 IP 上指定端口的交互数据,并在控制台输出详细交互信息
[root@iZbp1bhgh25pacaj2ffmp2Z ~]# tcpdump -s 0 -i eth1 -vvv port 22
- 1
3、抓取发送至指定 IP 的 ping 交互数据,并在控制台输出详细交互信息
[root@iZbp1bhgh25pacaj2ffmp2Z ~]# tcpdump -s 0 -i eth1 -vvv dst 114.57.136.45 and icmp
- 1
4、抓取系统内所有接口数据并保存到指定文件
[root@iZbp1bhgh25pacaj2ffmp2Z ~]# tcpdump -i any -s 0 -w test.cap
- 1
备注:
通过tcpdump抓包获取的数据,可以通过wireshark进行分析,详情请参考 http://blog.csdn.net/m0_37886429/article/details/71123137