学习_Linux_Command_tcpdump_03

下面介绍两种过滤方法(第一种方法比较操蛋,可忽略):
1. 比较第一字节的值是否大于01000101,这可以判断IPv4 带IP 选项的数据和IPv6 的数
据。
01000101 十进制等于69,计算方法如下(小提示:用计算器更方便)
0 : 0 \
1 : 2^6 = 64 \ 第一部分(IP 版本)
0 : 0 /
0 : 0 /
-
0 : 0 \
1 : 2^2 = 4 \ 第二部分(头长度)
0 : 0 /
1 : 2^0 = 1 /
64 + 4 + 1 = 69
如果设置了IP 选项,那么第一自己是01000110(十进制70),过滤规则:
# tcpdump -i eth1 'ip[0] > 69'
IPv6 的数据也会匹配,看看第二种方法。
2. 位操作
0100 0101 : 第一字节的二进制
0000 1111 : 与操作
=========
0000 0101 : 结果
正确的过滤方法
# tcpdump -i eth1 'ip[0] & 15 > 5'
或者
# tcpdump -i eth1 'ip[0] & 0x0f > 5'
分片标记
--------
当发送端的MTU 大于到目的路径链路上的MTU 时就会被分片,这段话有点拗口,权威的
请参考《TCP/IP 详解》。唉,32 借我的书没还,只能凑合写,大家记得看书啊。
分片信息在IP 头的第七和第八字节:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Bit 0: 保留,必须是0
Bit 1: (DF) 0 = 可能分片, 1 = 不分片.
Bit 2: (MF) 0 = 最后的分片, 1 = 还有分片.
Fragment Offset 字段只有在分片的时候才使用。
要抓带DF 位标记的不分片的包,第七字节的值应该是:
01000000 = 64
# tcpdump -i eth1 'ip[6] = 64'
抓分片包
--------
- 匹配MF,分片包
# tcpdump -i eth1 'ip[6] = 32'
最后分片包的开始3 位是0,但是有Fragment Offset 字段。
- 匹配分片和最后分片
# tcpdump -i eth1 '((ip[6:2] > 0) and (not ip[6] = 64))'
测试分片可以用下面的命令:
ping -M want -s 3000 192.168.1.1
匹配小TTL
---------
TTL 字段在第九字节,并且正好是完整的一个字节,TTL 最大值是255,二进制为11111111。
可以用下面的命令验证一下:
$ ping -M want -s 3000 -t 256 192.168.1.200
ping: ttl 256 out of range
+-+-+-+-+-+-+-+-+
| Time to Live |
+-+-+-+-+-+-+-+-+
- 在网关可以用下面的命令看看网络中谁在使用traceroute
# tcpdump -i eth1 'ip[8] < 5'
抓大于X 字节的包
---------------
- 大于600 字节
# tcpdump -i eth1 'ip[2:2] > 600'
更多的IP 过滤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值