tcpdump
是一个运行在命令行下的抓包工具,如果想知道网络中有什么在流通,那么 tcpdump 就是一个很好的工具。它允许用户拦截和显示发送或收到过程中网络连接到该计算机的 TCP/IP 和其他数据包。tcpdump 适用于大多数的类 Unix 系统操作系统(如 Linux,BSD 等)。类 Unix 系统的 tcpdump 需要使用 libpcap 这个捕捉数据的库就像 Windows 下的 WinPcap。
tcpdump
可以识别的协议有:
- ARP
- RARP
- ICMP
- TCP
- UDP
- IP
- IPv6
- AppleTalk
- IPX
常见用法
不带任何参数运行:
tcpdump
过滤端口
tcpdump -i eth1 port 25
网络过滤
tcpdump -i eth1 net 192.168
使用 -vv
打印更多的信息。
tcpdump -vv -i eth0
过滤 TCP 数据包
tcpdump 可以识别很多数据包,可以使用 tcpdump 的过滤来过滤,比如只输出 TCP 数据包:
tcpdump tcp
再比如想要过滤 udp 或者 80 端口的 TCP 包:
tcpdump udp or port 80
过滤主机
tcpdump -i eth1 host 192.168.1.1
表达元
已经有上面这些例子,就能看到 tcp, udp 这些都是过滤的表达式。tcpdump 有一些比较重要的过滤表达式:
- tcp
- udp
- port some.port
- host some.host
- net some.network
运算符
上面的例子中有一个 or
,表示或,tcpdump 支持很多运算符
- or
- and
- not
更多的运算符可以参考手册。
同类工具
Tshark 是 wireshark 的命令行版本,类似于 tcpdump,可以用于网络抓包,封包解析等。
抓取指定设备的网络包
tshark -i eth0
抓取目的端口 80 的包
tshark tcp dst port 80