本文主要是介绍通过GRE封装前的IP地址tcpdump抓包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
GRE封装IP层数据后导致抓包抓的是GRE的包,直接抓包会很大,所以希望通过里层的IP来抓包。
如下的测试数据包,最外层IP对:172.27.1.66-66.59.109.137,封装了66.59.111.190-172.28.2.3的数据包。此时我们只想抓取66.59.111.190-172.28.2.3这个相关的数据包。
通过对IP层数据的偏移位置来直接匹配数据
找到IP层开始的位置,可以看到在右侧数据0x4500就是IP层开始的位置
我们再定位下里层IP的源IP位置,源IP66.59.111.190对应十六进制数据0x423b6fbe
计算下这两之间的距离,36个字节。
所以抓包语法就是:
tcpdump -i eno1 -nne -vv ip[36:4]=0x423B6FBE or ip[40:4]=0x423B6FBE
其中eno1是指定抓包的网卡
ip[36:4]指刚才计算的IP偏移位置,对应源IP
ip[40:4]指向目的IP偏移位置,可以在数据包中看到。
为什么需要指定目的IP也是这个,是因为要抓的是双向的包。
0x423B6FBE是源IP的十六进制数据转换。
需要注意的是偏移位置随着封装报文结构有所不同,可以自行抓一个包看下具体的偏移位置,计算方式跟上述过程一样。找到IP开始的位置往后看有多少字节就可以。
这篇关于通过GRE封装前的IP地址tcpdump抓包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!