1)常用命令选项
在tcpdump 最后面加表达式可以过滤
-h 命令帮助
-D 查看哪些网卡可以抓包
-n 显示ip地址
-i 指定使用哪个网卡
-v 显示详细信息 -vvv v更多更详细
-c 显示前几个数据包
-t 不显示时间
-q 只显示重要内容
-ttt 显示和上一个包的相对时间
-ttttt
-e 显示mac地址
2)审查packet内容
-A 显示包内容 ascii码方式
-XX 二进制方式显示
3)保存为pcap文件
-w xxxx.pcap 二进制文件
tcpdump -r xxxx.pcap 读取文件 [-A|-XX]
4)过滤表达式 在命令行最后面
过滤类型:
port 端口号
host ip地址
net 192.168.31 抓取某网段
net 192.168.31.0/24
协议修饰符
udp 只抓取udp协议的
tcp 只抓取tcp协议的
icmp
过滤方向:没有写方向 代表双向都抓取出来
src 过滤类型
dst 过滤类型
例子:tcpdump -i eth0 -n tcp src port 53
复杂:
or 或者 ||
and 或者 &&
not 或者 !
例子:tcpdump -i eth0 -n port 53 or port 54
表达式最好用' ' 括起来,因为( ) 在shell要转义 可以使用/
tcpdump -i eth0 -n 'src host 192.168.0.100 and (dst port 53 or dst port 54)'
tcpdump -i eth0 -n 'src host 192.168.0.100 and (dst port 53 or 54)'
5)分析三次握手
步骤1
tcpdump -i eth0 -n -c 3 -XX 'host 192.168.31.1 and port 80'
步骤2
curl http://192.168.31.1:80
有以下标志的包
Flags[S] 代表syn包
Flags[S.] 代表syn 和ack包
Flags[.] 代表ack包
5)配合wireshark使用(mac下), 以下实例是达到远端没有wireshark,但把包实时取回本地分析
‘-’代表输出到标准输出
ssh root@192.168.31.1 'tcpdump -i eth0 -n -c 3 -w - host 192.168.31.1 and port 80' |wireshark -k -i -
实时抓取,wireshark 中不断更新抓到的包
ssh root@192.168.31.1 'tcpdump -i eth0 -n -w - host 192.168.31.1 and port 80' |wireshark -k -i -