Linux cooked capture v1 层的处理

1、问题由来:

在Mal_DoH的数据集中发现一部分数据不能够经由pkt2flow 处理成流级数据文件,经由wireshark查看,遇到一层未知数据,导致pkt2flow程序运行出错,但是未提示报错就很离谱,这个工具还不是很完善,需要下一步改善。

2、问题分析

为何链路层名称为linux cooked capture?而不是Ethernet Ⅱ

因为包是在linux中使用tcpdump,且指定参数-i any来捕获设备上所有网卡上的包。它会把所有包的以太网头都换成linux cooked capture,wireshark对此解释为虚假的协议。

tcpdump抓包时,如果-i选项指定为一个网卡地址,那么抓取的数据包数据链路层是以太网头部;如果指定any,则以太网头部将被替换为linux cooked capture头部

这个问题及时发现,对于后续数据包处理很关键,对于字节偏移处理会变得不一样

3、问题解决

这时,若需要将linux cooked capture格式的包转换为Ethernet格式,有那么几种方法:

  1. 写代码读出每一个包后再改写到新文件(使用libpcap或者基于pcap头部结构体偏移);
  2. tcpdump 3.0+ 版本下,可以用tcprewrite直接改写,这应该是最快捷的方法;

Tcprewrite是一个改写pcap文件(tcpdump、and ethereal)报文的工具。修改后的报文可以用 tcpreplay(1)重新发送回去。

    DLT PluginsAs of 3.0, tcprewrite uses plugins to support different DLT/Layer 2 types. This not only makes the code easier to maintain, but also helps make things clearer for users regarding what is and isn't supported. Each plugin may support reading and/or writing packets. By default, the plugin used to read packets is also used for output, but you can override the output plugin using the --dlt option. Changing the DLT plugin allows you to convert the packets from one DLT/Layer 2 type to another type. This allows you for example to capture traffic on say an Ethernet interface and replay over Cisco HDLC or capture on a BSD Loopback interface and replay over Ethernet.Plugins supported in output mode:Ethernet (enet)Cisco HDLC (hdlc)User defined Layer 2 (user)Plugins supported in input mode:EthernetCisco HDLCLinux SLLBSD LoopbackBSD NullRaw IP802.11Juniper Ethernet (version >= 4.0)Hence, if you have a pcap in one of the supported input DLT types, you can convert it to one of the supported output DLT type by using the --dlt=<output> option. Depending on the input DLT you may need to provide additional DLT plugin flags.

tcprewrite转换命令如下:

首先读取这个pcap文件查看格式
# tcpdump -r dns2tcp_tunnel_1111_doh1_2020-03-31T21_54_32.055088.pcap | grep Linux
reading from file dns2tcp_tunnel_1111_doh1_2020-03-31T21_54_32.055088.pcap, link-type LINUX_SLL (Linux cooked)
# tcprewrite --dlt=enet --infile=dns2tcp_tunnel_1111_doh1_2020-03-31T21_54_32.055088.pcap  --outfile=enet.pcap# tcpdump -r enet.pcap | grep Eth
reading from file enet.pcap, link-type EN10MB (Ethernet)

打开enet.pcap查看,唯一有点问题的,是转换后的数据的Destination-Mac为空, 对这个字段有需求的要注意下:

使用pkt2flow进行分流操作,就可以顺利进行了

# ./pkt2flow/pkt2flow -o /root/ds/ /root/ds/enet.pcap

tcpwrite 和 tcpreplay还有很多使用途径,这里就不再展开,有空整理。

可以参考的网址:

https://wiki.wireshark.org/SLL

http://www.tcpdump.org/linktypes.html

http://tcpreplay.synfin.net/wiki/tcprewrite

其它:

# tips 删除vlan
# tcprewrite --enet-vlan=del --infile=enet.pcap --outfile=output.pcap

文章参考网址:https://blog.csdn.net/dnet30833/article/details/102043934?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

Linux cooked capture v1 层的处理相关推荐

  1. Linux 环境编程 用户层定时器使用二 timer_create的使用

    用户层定时器有两种,一种是timerfd,另一种是timer_create,前者比较新,使用比较方便. Linux环境编程 用户层定时器使用一 timerfd的使用 https://blog.csdn ...

  2. Linux 只查找两层备份目录文件大小

    Linux 只查找两层备份目录文件大小 find -maxdepth 2 -type d -name "*_bak" | xargs du -sh

  3. linux net子系统-系统调用层

    linux net子系统打算分下面这几个部分来理解,这些都是我初次理解net子系统,若有出错,还请不吝赐教: 1. linux net子系统-系统调用层 2. linux net子系统-套接口层 3. ...

  4. Linux文件锁内核VFS层源码实现讲解

    此文档主要介绍Linux内核FL_FLOCK和FL_POSIX两种类型的文件锁在VFS层的实现.对强制性锁和租约锁**(lease**)不做过多的讨论.基于的内核版本为3.10.0-862.el7.x ...

  5. linux网络编程—7层网络以及5种Linux IO模型以及相应IO基础

    一.七层网络模型 OSI是Open System Interconnection的缩写,意为开放式系统互联.国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,它是一个七层的. ...

  6. Linux环境编程 用户层定时器使用一 timerfd的使用

    timerfd是linux提供的定时器机制,基于文件描述符,定时器精度最高可达纳秒级别,接口包括定时器创建.启动定时器.关闭定时器和删除定时器.下面介绍一下timerfd  API接口和一个结合epo ...

  7. linux裁剪图片的软件,【美图秀秀Linux版】美图秀秀Linux版下载 v1.0.0.0 免费最新版-趣致软件园...

    美图秀秀Linux版是一款专门针对linux系统所推出的图片处理及美化工具,用户通过这款软件可以对图片进行简单的处理,比如说:调清晰度.加水印以及一键裁剪等等,这样就能够为用户的工作生活带来极大的便利 ...

  8. 网易云linux版本如何安装包,网易云音乐linux版下载-网易云音乐linux 安装包v1.1.0 官方版 - 极光下载站...

    网易云音乐Linux客户端特色 你可以在这里创建一个属于自己的专属听歌房间,别人看不到你在听什么. 任何你本地的铃声.任何平台上的铃声,只要你愿意,统统一键分享! 录制您的美妙歌声,一键上传平台,永久 ...

  9. linux igmp 属于那层协议,Linux下IGMP协议测试工具的开发与应用

    摘要: 组播以其节约网络带宽.降低网络负荷,实现接收者的并行接收等优势而具有广泛的应用,成为重要的网络技术.对于组播各种应用的研究正在成为热点,对组播各种功能及性能的测试也越来越重要.IGMP (In ...

最新文章

  1. 如何成为技术大牛?难也不难
  2. 量子计算机编程原理简介 和 机器学习
  3. c++禁止进程被结束_多进程任务实现
  4. android第八步查看与输出日志信息
  5. 元组-元组变量的常用操作
  6. 希尔排序听起来有点难,其实很简单
  7. 华为云举办AI经典论文复现活动,打造领先AI开发者学习社区
  8. centos 升级内核方法
  9. 价格逼近 2 万美元大关,比特币到底是不是庞氏骗局?
  10. mybatis中$和#号的区别
  11. 厂商为什么喜欢使用堆叠?
  12. ajax请求进error怎么弹出错诶信息,在ajax请求jqgrid之后出现错误时显示错误消息...
  13. 宝鲲:如何防范炒外汇风险
  14. 内地酒量排行榜山东居首 东北三省无一进前三
  15. 【剑指 Offer(专项突击版)】 043-047、049、053-054 刷题笔记【二叉树】
  16. 表达式和语句的简单理解
  17. 常用汉字的UNICODE和对应的繁体字
  18. SDNU 1221
  19. C语言 校园歌手比赛系统
  20. 深脑链打地基,人工智能建高楼:DBC和AI的不解之缘

热门文章

  1. Java 在线纸牌游戏
  2. 用友云新愿望:一起生态一起赚钱 服务销售过亿元
  3. 3-wireshark网络安全分析——ARP欺骗攻击
  4. 【转】使用bt4(Backtrack)破解无线路由(无线网络/无线AP)密码/wep加密/Aircrack-ng
  5. 实习日/周/月记学习计划(第二周)
  6. 机器人煮面机创始人_煮面机器人引领智能餐饮新时代
  7. 【转载】深度学习和缠论应用,JQData应用
  8. 北京、上海、深圳、广州城市手册
  9. 毕业设计-基于MATLAB的混凝土裂缝宽度计算方法研究
  10. 拒绝破解,用10大免费软件来代替盗版