tcpdump抓取TCP协议、GRE协议数据

本文详细介绍了如何使用tcpdump工具来抓取TCP和GRE协议的数据包。针对TCP协议,通过不同过滤条件展示如何捕获特定类型的数据包,包括按端口、标志位以及数据内容进行过滤。而对于GRE协议,提到了利用'proto gre'参数来捕获相关数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tcpdump抓取tcp数据
1、tcpdump -i eth0 port 11751 and src host 192.168.1.34 -x -s0

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:15:42.714678 IP 192.168.1.34.39497 > 192.168.1.21.intrepid-ssl: P 3445320732:3445320750(18) ack 3456192260 win 46 <nop,nop,timestamp 1322201171 1322174386>
        0x0000:  4500 0046 8c5e 4000 4006 2acc c0a8 0122
        0x0010:  c0a8 0115 9a49 2de7 cd5b 6c1c ce01 4f04
        0x0020:  8018 002e bb7b 0000 0101 080a 4ecf 3053
        0x0030:  4ece c7b2 0e00 0000 030f de0d 9402 0000
        0x0040:  0000 0000 0000

2、根据协议二进制字段过滤
1) tcpdump ‘tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net x.x.x.x’
打印TCP会话中的的开始和结束数据包, 并且数据包的源或目的不是本地网络上的主机.(nt: x.x.x.x, 实际使用时要真正替换成本地网络的名字))
2) tcpdump ‘tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)’
打印所有源或目的端口是80, 网络层协议为IPv4, 并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数据包.(ipv6的版本的表达式可做练习)(nt: 可理解为, ip[2:2]表示整个ip数据包的长度, (ip[0]&0xf)<<2)表示ip数据包包头的长度(ip[0]&0xf代表包中的IHL域, 而此域的单位为32bit, 要换算成字节数需要乘以4, 即左移2. (tcp[12]&0xf0)>>4 表示tcp头的长度, 此域的单位也是32bit, 换算成比特数为 ((tcp[12]&0xf0) >> 4) << 2, 
即 ((tcp[12]&0xf0)>>2). ((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0 表示: 整个ip数据包的长度减去ip头的长度,再减去tcp头的长度不为0, 这就意味着, ip数据包中确实是有数据.对于ipv6版本只需考虑ipv6头中的’Payload Length’ 与 ‘tcp头的长度’的差值, 并且其中表达方式’ip[]’需换成’ip6[]’.)
3) tcpdump ‘gateway snup and ip[2:2] > 576’
打印长度超过576字节, 并且网关地址是snup的IP数据包
4) tcpdump ‘ether[0] & 1 = 0 and ip[16] >= 224’
打印所有IP层广播或多播的数据包, 但不是物理以太网层的广播或多播数据报
5)tcpdump ‘icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply’
打印除’echo request’或者’echo reply’类型以外的ICMP数据包( 比如,需要打印所有非ping 程序产生的数据包时可用到此表达式 .
(nt: ‘echo reuqest’ 与 ‘echo reply’ 这两种类型的ICMP数据包通常由ping程序产生))
3、根据数据部分过滤
1)计算数据的起始位置
ip首部的长度为((ip[0]&0xf)<<2))即ip[0]=0x45,即长度为20,所以IP头部到第二行的0115结束,后面就是具体传送协议的数据了,这里是tcp数据。
tcp首部的长度 ((tcp[12]&0xf0)>>2)),其中tcp[12]=0x80,计算长度为20,所以tcp头部的长度是20,从8018开始数20字节到c7b2结束。
所以tcp数据开始的地方是tcp[12+tcp首部长度]=tcp[20],即从0e00开始。
2)根据数据过滤,比如数据第一个字节tcp[32]==0xe,这样添加过滤条件过滤即可。

[root@IM-SJ01-Server21 ~]# tcpdump -i eth0 port 11751 and tcp[32] == 0xe -x -s0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:15:42.714678 IP 192.168.1.34.39497 > 192.168.1.21.intrepid-ssl: P 3445320732:3445320750(18) ack 3456192260 win 46 <nop,nop,timestamp 1322201171 1322174386>
        0x0000:  4500 0046 8c5e 4000 4006 2acc c0a8 0122
        0x0010:  c0a8 0115 9a49 2de7 cd5b 6c1c ce01 4f04
        0x0020:  8018 002e bb7b 0000 0101 080a 4ecf 3053
        0x0030:  4ece c7b2 0e00 0000 030f de0d 9402 0000
        0x0040:  0000 0000 0000

tcpdump抓取GRE协议
协议字段参数:’proto gre’

[root@os-network01 ~]# tcpdump -i eth0 'proto gre' -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:44:37.834041 IP 135.251.218.247 > 135.251.218.249: GREv0, key=0x1, length 110: IP 10.5.5.2 > 10.5.5.1: ICMP echo request, id 12339, seq 48, length 64
13:44:37.834101 IP 135.251.218.249 > 135.251.218.247: GREv0, key=0x1, length 110: IP 10.5.5.1 > 10.5.5.2: ICMP echo reply, id 12339, seq 48, length 64
13:44:37.834722 IP 135.251.218.247 > 135.251.218.249: GREv0, key=0x1, length 174: IP 10.5.5.2.ssh > 10.0.0.9.39707: Flags [P.], seq 43897986:43898082, ack 2815899572, win 106, options [nop,nop,TS val 1088018784 ecr 1220705304], length 96
13:44:37.834766 IP 135.251.218.249 > 135.251.218.247: GREv0, key=0x1, length 78: IP 10.0.0.9.39707 > 10.5.5.2.ssh: Flags [.], ack 96, win 501, options [nop,nop,TS val 1220706287 ecr 1088018784], length 0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值