Loading

tcpdump

设置混杂模式

device eth0 entered promiscuous mode 	      //网卡 eth0 进入了混杂模式。
device eth0 left promiscuous mode 	      //网卡 eth0 离开了混杂模式。
ifconfig eth0 promisc 			      //设置网卡eth0为混杂模式
ifconfig eth0 -promisc 			      //取消网卡eth0的混杂模式

格式

类型:host、net、port、ip >proto、protochain等
传输方向:src、dst、dst or >src、dst and src等
协议:ip、arp、rarp、tcp、udp>、icmp、http等
单位原语格式
协议 + [传输方向] + 类型 + >具体数值
eg:ip src host 192.168.0.106
eg:src ip proto '\tcp'

常用参数

-i 指定抓取数据包的接口
-c numbers 收到指定数量的分组后,tcpdmp就会停止
-q 快速输出,只输出较少的信息
-w filename 将结果输出到文件中,输出的文件以.pcap作为后缀,可以在其他平台上用wireshark打开
-r 从指定文件读取数据包,这个数据包一般是通过-w生成的
-v/vv/vvv 以上三点,输出的信息详细度递增

实例

  1. 抓取包含10.10.10.122的数据包

    tcpdump -i ens33 -vnn host 10.10.10.122
    
  2. 抓取包含10.10.10.0/24网段的数据包

    tcpdump -i ens33 -vnn net 10.10.10.0/24
    tcpdump -i ens33 -vnn net 10.10.10.0 mask 255.255.255.0
    
  3. 抓取包含端口22的数据包

    tcpdump -i ens33 -vnn port 22
    
  4. 抓取udp协议的数据包

    tcpdump -i ens33 -vnn udp
    
  5. 抓取icmp协议的数据包

    tcpdump -i ens33 -vnn icmp
    
  6. 抓取arp协议的数据包

    tcpdump -i ens33 -vnn arp
    
  7. 抓取ip协议的数据包

    tcpdump -i ens33 -vnn ip proto ip
    tcpdump -i ens33 -vnn ip
    
  8. 抓取源ip是10.10.10.122的数据包

    tcpdump -i ens33 -vnn src host 10.10.10.122
    
  9. 抓取目标ip是10.10.10.122的数据包

    tcpdump -i ens33 -vnn dst host 10.10.10.122
    
  10. 抓取源端口是22的数据包

    tcpdump -i ens33 -vnn src port 22
    
  11. 抓取源ip是10.10.10.253且目的端口是22的数据包

    tcpdump -i ens33 -vnn src host 10.10.10.122 and dst port 22
    
  12. 抓取源ip是10.10.10.122或者端口是22的数据包

    1. tcpdump -i ens33 -vnn src host 10.10.10.122 or port 22
    
  13. 抓取源ip是10.10.10.122且端口不是22的数据包

    tcpdump -i ens33 -vnn src host 10.10.10.122 and not port 22
    
  14. 抓取源ip是10.10.10.2且端口是22,或源ip是10.10.10.65且目的端口是80的数据包。

    tcpdump -i ens33 -vnn \(src host 10.10.10.2 and port 22 \) or \(src ip host 10.10.10.65 and prot 80\)
    
  15. 抓取源ip是10.10.10.59且目的端口是22,或者源ip是10.10.10.68且目的端口是80的数据包

    tcpdump -i ens33 -vnn '\(src host 10.10.10.59 and dst port 22\) 'or '\(src host 10.10.10.68 and dst prot 80\)'
    
  16. 把抓取的数据包记录存到/tmp/fill文件中,当抓取100个数据包后就退出程序

    tcpdump -i ens33 -c 100 -w /tmp/fill
    
  17. 从/tmp/fill记录中读取tcp协议的数据包。

    tcpdump -i ens33 -r /tmp/fill tcp
    
  18. 从/tmp/fill记录中读取包含10.10.10.58的数据包。

    tcpdump -i ens33 -r /tmp/fill host 10.10.10.58
    
  19. 过滤数据包类型是多播并且端口不是22、不是icmp协议的数据包。

    tcpdump -i ens33 ether multicast and not port 22 and 'not icmp'
    
  20. 过滤协议类型是ip并且目标端口是22的数据包

    tcpdump -i ens33 -n ip and dst prot 22
    

    tcpdump可识别的关键字包括ip、igmp、tcp、udp、icmp、arp

  21. 过滤抓取mac地址是某个具体的mac地址、协议类型是arp的数据包

    tcpdump -i ens33 ether src host 00:0c:29:2f:a7:50 and arp
    
  22. 过滤抓取协议类型是ospf的数据包

    tcpdump -i ens33 ip proto ospf
    

    直接在tcpdump中使用的协议关键字只有ip、igmp、tcp、udp、icmp、arp等,其他的传输层协议没有可直接识别的关键字
    可以使用关键字proto或者ip proto加上在/etc/protocols中能够找到的协议或者相应的协议编号进行过滤。
    更加高层的协议,例如http协议需要用端口号来过滤

  23. 过滤长度大于200字节的报文

    tcpdump -i ens33 greater 200
    
  24. 过滤协议类型为tcp的数据包

    tcpdump tcp
    

    还可以查看TCP报文里面更详细的部分,tcpdump proto[字节偏移:字节长度],tcpdump -i ens33 -c 1 -vnn ip[9]=6,这里指定的是ip包头第十个字节(协议值)为6(TCP协议)。

  25. 过滤出广播包和多播包

    tcpdump -i ens33 -c 1 ip multicast and ip broadcast
    tcpdump -i ens33 -c 1 -vnn 'ether[0] & 1 != 0'
    

    保证目标地址最后一位不为0,只有目标地址最后一位为0,与运算之后才会为0,否则目标地址是低位为0高位不为0的情况,也就是广播包或者多播包。

  26. 查找端口号大于23的所有tcp数据流

    tcpdump -i ens33 -c 1 -vnn 'tcp[0:2] & 0xffff > 0x0017 '
    

此为精简版
原文链接:https://blog.csdn.net/chinaltx/java/article/details/87469933

posted @ 2020-07-06 22:58  北兢王  阅读(165)  评论(0)    收藏  举报