tcpdump 学习笔记

资料来源: https://www.cnblogs.com/shijiaqi1066/p/3898248.html

$ sudo tcpdump -h
tcpdump version 4.9.3
libpcap version 1.9.1 (with TPACKET_V3)
OpenSSL 1.1.1f  31 Mar 2020
Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
                [ -Q in|out|inout ]
                [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
                [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
                [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
                [ -Z user ] [ expression ]

简单使用

  1. 帮助文档

    sudo tcpdump --h
    
    -a  将网络地址和广播地址转变成名字;
    -c  在收到指定的包的数目后,tcpdump就会停止;
    -d  将匹配信息包的代码以人们能够理解的汇编格式给出;以可阅读的格式输出。
    -dd  将匹配信息包的代码以c语言程序段的格式给出;
    -ddd  将匹配信息包的代码以十进制的形式给出;
    -e  在输出行打印出数据链路层的头部信息;
    -f  将外部的Internet地址以数字的形式打印出来;
    -l  使标准输出变为缓冲行形式;
    -n  直接显示IP地址,不显示名称;
    -nn  端口名称显示为数字形式,不现实名称;
    -t  在输出的每一行不打印时间戳;
    -v  输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
    -vv  输出详细的报文信息;
    -F  从指定的文件中读取表达式,忽略其它的表达式;
    -i  指定监听的网络接口;
    -r  从指定的文件中读取包(这些包一般通过-w选项产生);
    -w  直接将包写入文件中,并不分析和打印出来;
    -T  将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单 网络管理协议;)
    
  2. 抓取一定量的包之后并截至

    sudo tcpdump -c <数据包数量>
    
  3. 抓取数据并写入到文件中

    tcpdump -w <输出文件名> # 注意, 这里保存的文件并不是命令行显示也不是可读的文本文件, 需要使用tcpdump进行阅读
    
  4. 读取由tcpdump创建的记录文件

    tcpdump -r <输出文件名> # 得到的结果和之前直接在命令行中动态捕捉的结果相同
    
  5. 打印所有可工作的网络接口(注意: 这里不是端口,而是网卡接口 – 包含物理网卡和虚拟网卡)

    > tcpdump -D
    1.eth0 [Up, Running]
    2.lo [Up, Running, Loopback]
    3.any (Pseudo-device that captures on all interfaces) [Up, Running]
    4.bluetooth-monitor (Bluetooth Linux Monitor) [none]
    5.nflog (Linux netfilter log (NFLOG) interface) [none]
    6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
    7.dummy0 [none]
    8.tunl0 [none]
    9.sit0 [none]
    10.bond0 [none]
    
  6. 监控指定的网卡接口

    tcpdump -i eth0
    
  7. 显示更详细的数据包

    tcpdump -c 3 -v  # 详细显示
    tcpdump -c 3 -vv # 更详细显示
    
  8. 不使用域名反解

    tcpdump -c 3 -n # 直接输出IP地址,而不进行地址反解
    
  9. 增加抓包时间戳

    tcpdump -c 3 -tttt
    
  10. 抓包条件过滤 条件永远写在命令行的末尾

    # 筛选协议
    tcpdump udp
    tcpdump icmp
    tcpdump tcp
    tcpdump arp
    # 筛选端口
    tcpdump tcp port 80
    tcpdump tcp portrange 1-1024
    # 筛选源和目标
    tcpdump src port 8080
    tcpdump dst port 80
    # 筛选特定主机
    tcpdump host 192.168.1.113
    # 指定数据包大小
    tcpdump greater 1000
    tcpdump less 10
    
  11. 显示数据包完整内容

    tcpdump -c 1 -A # 使用ASCII码显示
    tcpdump -c 1 -X # 使用16进制以及ASCII显示
    
  12. 逻辑表达式

    tcpdump tcp and host 192.168.1.112
    tcpdump tcp and src 192.168.1.112 and port 8080
    tcpdump host 192.168.1.112 or 192.168.1.113
    tcpdump not tcp port 22
    tcpdump ! tcp port 22
    tcpdump not tcp port 22 and host 192.168.1.112or192.168.1.113
    tcpdump "not tcp port 22 and host (192.168.1.112 or 192.168.1.113)"
    tcpdump not tcp port 22 and host "(192.168.1.112 or 192.168.1.113)"
    

Windows tcpdump – WinDump

使用管理员权限powershell打开windump, 其使用与tcpdump一致

posted @ 2022-07-28 22:11  NoobSir  阅读(43)  评论(0编辑  收藏  举报