分享

pcap linktype 101的报文转为linktype 1的报文

 朝花夕拾and 2017-06-08

pcap报文格式参考1

LinkType:4B链路类型
常用类型:
1            Ethernet, and Linux loopback devices

101         “raw IP”, with no link

这两种报文在wireshark里都可以解析,但大部分的其他处理软件,如pcap_flow(github项目), xcap,科来(即便转变为libpcap也不行),都对101的这种报文表示不支持。

tcpreplay也不支持101,会导致回放报文有问题。

想想也对的,101没有链路信息,上来就是ip层报文,确实不能回放。说明这几个家都是互相抄,bug都抄成一样的了。FIXME

怎么将101的报文加为1的,即加上链路层呢?这里只展示手工的做法,

原始文件内容hexdump radius-response.pcap

0000000 c3d4 a1b2 0002 0004 0000 0000 0000 0000
0000010 ffff 0000 0065 0000 41ad 4d61 2ccf 000e
0000020 0030 0000 0030 0000 0045 3000 1338 0040
0000030 11fe 702f 000a ad00 920a faff 1507 5608
0000040 1c00 1c9e 1705 1400 ac78 5200 5c5d d987
0000050 effa 4b82 5db0 fcab                    
0000058

编辑后文件hexdump radius-response-ll.pcap
0000000 c3d4 a1b2 0002 0004 0000 0000 0000 0000
0000010 ffff 0000 0001 0000 41ad 4d61 2ccf 000e
0000020 003e 0000 003e 0000 3412 7856 3412 7856
0000030 3412 7856 0008 0045 3000 1338 0040 11fe
0000040 702f 000a ad00 920a faff 1507 5608 1c00
0000050 1c9e 1705 1400 ac78 5200 5c5d d987 effa
0000060 4b82 5db0 fcab                         
0000066


添加mac层(ethernet)的步骤

1 使用OKteta(一种linux二进制编辑器)打开原始文件

2 linktype从101改为1

方法:将0x15(hexdump显示的位置为0x15,但OKteta显示的为0x14位置,下面位置处都以hexdump为准,但修改变动内容以Okteta为准)从65改为01

3 增加dst mac, src mac, l2 ip proto, 假设目标mac是1234 5678 1234(即1234.5678.1234),源mac是 5678.1234.5678, IP是0800

方法:在0x28的4500前插入1234 5678 1234 5678 1234 5678 0800

4 由于增加了mac层,所以pcap文件头的caplen和len都要改变。caplen和len原来在4500之前,现在中间插入了步骤3的内容。

增加的长度即插入的步骤3新增内容的长度,即14字节(6mac,6mac,2ip-proto)

例子中将0x20处的,0030 0000 0030 0000分别对应4字节caplen和4字节len,分别加14字节,变为003e 0000 003e 0000


参考

1 http://www.cnblogs.com/hnrainll/archive/2012/06/17/2552943.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多