• Linux下通过tcpdump抓包工具获取信息


    介绍

    tcpdump是网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。

    tcpdump - dump traffic on a network

     tcpdump 的具体参数及意义: 

    -i :指定 tcpdump 监听的网络接口 

    -s :指定要监听数据包的长度 

    -c:指定要监听的数据包数量,达到指定数量后自动停止抓包 

    -w :指定将监听到的数据包写入文件中保存 

    -A :指定将每个监听到的数据包以 ACSII 可见字符打印 

    -n :指定将每个监听到数据包中的域名转换成 IP 地址后显示 

    -nn :将每个监听到的数据包的域名转换成 IP 、端口从应用名称转换成端口号后显示 

    -e :指定将监听到的数据包链路层的信息打印出来,包括源 mac 和目的 mac ,以及网络层的协议 

    -p :将网卡设置为非混杂模式,不能与 host或 broadcast 一起使用 

    -r :指定从某个文件中读取数据包 

    -S :指定打印每个监听到的数据包的 TCP 绝对序列号而非相对序列号 OK

    以上列举了一些常用的,详细参数可点击链接查看:

    https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_71/com.ibm.aix.cmds5/tcpdump.htm

    示例

    tcpdump 主要包括三种类型的关键字:

    第一种是关于类型的关键字,主要包括 host , net , port ,例如:

    #tcpdump -i eth0
    @eth0为参数值,表示需要抓包的网口,这是个必需参数哦。
    
    #tcpdump -i eth0 host 192.168.0.250 
    @在网口eth0上抓取主机地址为192.168.0.250的所有数据包。
    
    #tcpdump -i eth0 net 192.168.0.0/24 
    @在网口eth0上抓取网络地址为192.168.0.0/24的所有数据包
    
    #tcpdump host 182.254.38.55
    @监听本机跟主机182.254.38.55之间往来的通信包,出、入的包都会被监听。

    第二种 是确定传输方向的关键字,主要包括 src , dst , src or dst , src and dst,这些关键字指明了传输的方向。例如:

    ​#tcpdump -i eth0 port 80 
    @在网口eth0上抓取端口为80的所有数据包(注意,这里不区分是源端口还是目的端口)
    当然,我们也可以指定源端口或目的端口
    
    #tcpdump -i eth0 src port 80 and dst port 6100
    @在网口eth0上抓取源端口为80且目的端口为6100的数据包,这里用到了and逻辑运算符

     除了这三种类型的关键字外,还有其他重要的关键字,如: gateway ,broadcast , less , greater ,还有三种逻辑运算,取非运算是 'not' 、 '!' ,与运算符是 'and' 、 '&&' 、 或运算符是 'or' 、 '||' ,这些关键字可以组合起来构成强大的组合条件来满足我们的需求。

    #tcpdump -i eth0 -s 1400 -nn host 192.168.0.250 and ! 192.168.0.74 and icmp -e
    @抓取网口eth0上192.168.0.250与除192.168.0.74外的其他主机之间的icmp报文
    #tcpdump -i eth0 -s 1400 -nn tcp and (host 192.168.0.250 and ! 192.168.0.74)
    @抓取网口eth0上192.168.0.250与除192.168.0.74外的所有tcp数据包,
    这里用到了括号,注意,在tcpdump中使用括号时必须用转义
    #tcpdump -i eth0 ether src or dst 00:21:85:6C:D9:A3
    @抓取网口eth0上源mac地址或目的mac地址为00:21:85:6C:D9:A3的所有数据包,
    注意,这里的mac地址格式必须以':'分隔。

    补充一些其他的:

    #tcpdump -nn -c 100          
    -c:指定抓包数量为100
    #tcpdump -nn -i eth1         
    -i:指定网卡为eth1
    #tcpdump -nn port 80          
    port:指定端口为80
    #tcpdump -nn tcp and port 80          
    :指定抓取类型为tcp且端口为80
    #tcpdump -nn tcp and port 80 and host 221.212.212.24          
    :指定抓取类型为tcp且端口为80 且来源ip为221.212.212.24的包
    #tcpdump -nn tcp and port 80 and host 221.212.212.24 -w 1.cap          
    :指定抓取类型为tcp且端口为80 且来源ip为221.212.212.24的包并保存在1.cap
    #tcpdump -r 1.cap            
    :查看数据包的流向(但是不可以使用cat直接查看)
    #tcpdump -nn tcp and port 80 and host 221.212.212.24 > 2.cap          
    :指定抓取类型为tcp且端口为80 且来源ip为221.212.212.24的包并重定向到2.cap
    #cat 2.cap                  
    :即可查看

    内容分析

  • 相关阅读:
    centos7&redhat7修改密码
    memcached安裝部署文檔
    cronolog安装部署文檔
    ftp安裝部署文檔
    cacti安裝部署文檔
    php安裝部署文檔
    MYSQL-5.5安装部署文档
    MySQL5.1安裝部署文檔
    nginx進階
    IO进程疏漏
  • 原文地址:https://www.cnblogs.com/zhaomeng/p/10491513.html
Copyright © 2020-2023  润新知