IPv6 格式的 TCPDUMP 网络数据包



我是tcpdump工具的新手,我正在分析网络数据包,我分析了wifi情况下生成的IPv4 Ip数据包。但是现在我在sim的3g网络上运行我的安卓手机,这是生成IPv6数据包的,完全不同于IPv4格式。我对IPv6数据包结构感到困惑,

再一次,我已经通过IPv6报头格式,我的手机的数据包给出如下,这两种格式不匹配。我对IPv6头完全困惑了。

我的手机的本地ip是100.87.163.16,我的问题是如何检测接收的数据包和发送的数据包。我还想找出报头长度,有效载荷长度,源和目的ip地址在IPv4格式。我期待你的宝贵意见。

谢谢。

10:59:06.365651 00:00:32:06:af:56 (oui Unknown)> 45:00:00:a8:35:49 (oui Unknown), ethertype Unknown (0xd83a), length 168:

0x0000:  c40e 6457 a310 01bb e6c0 f6b1 b5ed ec6b  �.dW�..������k
0x0010:  23f8 8018 015e dfc7 0000 0101 080a 17c2  #�...^��.......�
0x0020:  6af1 0014 f0c3 1703 0300 6f00 0000 0000  j�..��....o.....
0x0030:  0000 0208 7db4 d0c1 846d ca75 323c e6cb  ....}���.m�u2<��
0x0040:  1636 be16 942f 51ea 1caf 1c09 c085 3dbc  .6�../Q�.�..�.=�
0x0050:  7642                                     vB

好,让我们重新构建完整的原始数据包内容。

驱动程序提供了一个映射到DLT_EN10MB的ARPHRD_值(可能是一个不合适的ARPHRD_值;这在一些Android手机接口中是一个已知的漏洞,可能是为了解决DHCP实现的不足,后来的libpcap版本解决了这个问题),所以数据包被解释为好像它是一个以太网数据包,而实际上它可能不是以太网数据包。

所以tcpdump打印数据包,如果前6个字节是目的MAC地址,接下来的6个字节是源MAC地址,接下来的2个字节是类型/长度字段。

因此,数据包以

开头:
45 00 00 a8 35 49 00 00 32 06 af 56 d8 3a

真的看起来像一个IPv4数据包没有链路层头-这正是所讨论的移动电话接口作为数据包提供的

libpcap 1.6.2和更高版本有libpcap解决方案;如果您使用的tcpdump版本使用了更新的libpcap,那么它可能会正确显示数据包。(如果没有,也许libpcap用来检测错误的ARPHRD_值的hack需要检查更多的接口名称;请将此报告到tcpdump-workers@lists.tcpdump.org或libpcap的GitHub问题列表。(将此报告为libpcap问题,而不是tcpdump问题,因为它是这样的))

最新更新