zoukankan      html  css  js  c++  java
  • tcpdump使用教程

    一、说明

    在分析了wireshark使用方法后,其表达式书写基本没什么问题,但在linux上使用的更多是tcpdump。

    tcpdump自大学就开始在用了,但一直没搞懂其表达式的书写规律,基本每次使用都得查、每次用后都会忘。

    二、安装

    yum install tcpdump -y

    三、使用

    tcpdump命令用法如下,可概括为“tcpdump + 选项 + 表达式”;表达式用于指示过滤哪些数据包,选项用于指示如何处理表达式过滤出来的这些数据包。

    tcpdump [ -AbdDefhHIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
               [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
               [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
               [ -P in|out|inout ]
               [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]
               [ -W filecount ]
               [ -E spi@ipaddr algo:secret,...  ]
               [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
               [ expression ]

    3.1 选项

    选项也没什么说的,看上边的写法也大概能猜出选项的意思,如果不能那就“man tcpdump”看一下具体的意思。提一下最常用的三个参数

    -i----用于指定要捕获数据包的网卡。如eth1。

    -r----可以从指定的文件中读入数据包。

    -w----将捕获的数据包存入到文件。一般保存成.pcap方便使用wireshark打开。

    3.2 表达式

    tcpdump使用pcap-filter语法,详情可以查看"man pcap-filter",下边是对man手册的一些总结。当然另外还要说明,tcpdump有一些高级的用法,不一定都符合下边的规律。

    与wireshark表达式相较而言,虽然tcpdump也不叫难,但总体还是wireshark表达式更简单明了一些。

    3.2.1 基本表达式

    一条基本的表达式写法如下:

    [proto] [dir] [type] [value]

    proto----protocol,流量协议。可以为ether(数据链路层), ip,  ip6,  arp,  rarp, decnet, tcp 及 udp。另外也可以是fddi, tr, wlan但这三个都是数据链路层在不同数据链路层协议的叫法,与ether相互之间等价。tcpdump不支持应用层协议,只能借助端口实现某种应用层协议的过滤。

    dir----direction,流量方向。可以为src, dst, src or dst 及 src and dst。另外也可以是ra,  ta, addr1, addr2, addr3 及 addr4但这几个只适用于wlan数据链路层。

    type----过滤项的值的类型。可以为host(ip或可解析的域名/主机名), net(网段) , port(端口或/etc/services可解析的服务) 及 portrange(端口范围)。

    # 示例一
    # 过滤ip协议(proto)----目的(dir)----ip(type-host)----为192.168.220.128(value)的数据包
    tcpdump ip dst host 192.168.220.128
    # 当然我们前边用了中括号,意味着在没有歧义情下况某些字段是可以省略的,如这里proto字段可省略,等价于
    # tcpdump dst host 192.168.220.128
    
    # 示例二
    # 过滤ip协议(proto)----目的(dir)----网段(type-net)----为192.168.220(value)的数据包
    tcpdump ip dst net 192.168.220
    
    # 示例三
    # 过滤tcp协议(proto)----目的(dir)----端口(type-port)----为3306(value)的数据包
    tcpdump tcp dst port 3306
    # port支持/etc/services可解析的服务,3306对应mysql,所以等价于
    # tcpdump tcp dst port mysql
    
    # 示例四
    # 过滤tcp协议(proto)----目的(dir)----端口范围(type-portrange)----为3306-3308(value)的数据包
    tcpdump tcp dst portrange 3306-3308

    3.2.2 复合表达式

    非----!或not。最高优先级。

    与----&&或and。次优先级。

    或----||或or。最低优先级。

    改变运算优先级----大括号。

    # 过滤ip协议(proto)----目的(dir)----ip(type-host)----为192.168.220.128(value)且
    # tcp协议(proto)----目的(dir)----端口(type-port)----为3306(value)的数据包
    tcpdump ip dst host 192.168.220.128 and tcp dst port 3306
    
    # 过滤tcp协议(proto)----目的(dir)----端口(type-port)----为3306或3308(value)的数据包
    tcpdump tcp dst port 3306 or tcp dst port 3308
    # 另外也支持以下单引号写法
    # tcpdump tcp dst port '(3306 or 3308)'
  • 相关阅读:
    iOS开发之ImageView复用实现图片无限轮播
    IOS 通过脚本自动打包工具 webfrogs/xcode_shell
    (iOS)判断GPS坐标是否在中国
    如何轻松实现iOS9多任务管理器效果(iCarousel高级教程)
    有了Auto Layout,为什么你还是害怕写UITabelView的自适应布局?
    PID控制算法的C语言实现四 增量型PID的C语言实现
    PID控制算法的C语言实现三 位置型PID的C语言实现
    PID控制算法的C语言实现二 PID算法的离散化
    PID控制算法的C语言实现一 PID算法原理
    人生是一个连续的过程,没什么东西能影响人的一生,怎么选择不是问题。问题是每天都要努力 (转)
  • 原文地址:https://www.cnblogs.com/lsdb/p/13950477.html
Copyright © 2011-2022 走看看