文章目录
    
    
    
    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)"
    
    
    参考博客
   
 
