首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tcpdump:从非零偏移量开始解码数据包

tcpdump:从非零偏移量开始解码数据包
EN

Server Fault用户
提问于 2014-07-31 21:59:41
回答 2查看 1.2K关注 0票数 3

我正在调试一个Linux嵌入式平台,它有一个接口,普通的以太网帧有一个额外的82-八位的平台头标记在前面。我可以使用tcpdump从这个接口中嗅探,但是tcpdump无法有效地解码,因为以太网头没有从它期望它们的位置开始。因此,我所能看到的就是一个带有-x选项的十六进制转储,但为了方便,我希望tcpdump对它们进行解码。我不感兴趣的内容82-八位组头,但希望看到一个解码的后续封装以太网帧。

是否有一种方法可以告诉tcpdump开始解码从捕获数据包开始的82位字节的以太网头,而不是通常的0位字节?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2015-06-04 05:25:47

我又碰到了这个问题,忘记了我问过这个问题,但是google把我带回了这里。)

我想出了一个解决办法,如果您碰巧有editcap(来自wireshark)可用的话。不需要修改源代码:

代码语言:javascript
复制
tcpdump -i eth0 -w - | editcap -C 82 - - | tcpdump -r -

第一次tcpdump调用捕获数据包并以pcap格式将它们转储到管道中。然后从pcap包流中的每个包的起始处开始编辑82字节。然后,最后的tcpdump调用读取pcap包流并将其作为正常的部分进行剖析。

请注意,管道会导致大量缓冲,因此输出不一定是即时的。tcpdump有面向行缓冲的-l选项,但即使使用stdbuf -i0 -o0,我也无法完全删除缓冲。YMMV

票数 1
EN

Server Fault用户

发布于 2014-07-31 23:56:09

除了修改tcpdump源之外。

如果您想这样做,我建议对该设备使用DLT_USERn DLT_/LINKTYPE_ value之一,或者让tcpdump.org为其分配一个正式的值,对libpcap进行黑客攻击以返回这些设备的DLT_值,并通过跳过(或解码)82-八进制平台标头(如果有用的话)对其进行解码。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/617066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档