报文批量处理方法简介

       有这样一个场景,有一大堆历史报文,但是这些报文中有很多无用的流量,我需要把这些有用的流量提取出来以一个报文形式进行存储。在Linux上处理的脚本如下:

#!/bin/bash
find allPcap -name '*.pcap' > pcapFileName.txt
fileDic="newPcap"
mkdir -p $fileDic
while read LINE
do
  echo ${LINE##*/}
  echo $LINE
  tshark -r $LINE -Y "http.host contains \"baidu\"" -w $fileDic/${LINE##*/}

 done < pcapForFileName.txt

mergecap -w newBigPcap.pcap $fileDic"/*.pcap"
reordercap -n newBigPcap.pcap newBigPcap_in_order.pcap

       这里面主要运用到如下的命令:

       1,find命令,该命令主要用于文件的遍历,find allPcap -name '*.pcap' > pcapFileName.txt,即将allPcap目录下面所有的以.pcap结尾的文件名输入到pcapFileName.txt文件中,同时find支持递归。

       2,tshark命令,该命令是wireshark这个图形化分析工具的命令行版本,在windows和linux均可以使用。本人习惯在linux使用,值的注意的是在centos上面使用yum install wireshark就会自动的安装tshark,但是由于一般的yum源的wireshark版本还都是停留在1.X的版本。我一般是到wireshark的官网下载源码,进行编译安装,安装的一些事项我在这里也有提及。因为tshark的一些特性在高版本会有些优化,同时lua也只有在1.10之后的版本才会支持。

       3,mergecap 命令,该命令将fileDic文件下新生成的所有pcap文件进行合并生成一个新的pcap文件newBigPcap.pcap。该命令的作用是将pcap文件进行简单的拼接,并不会按照时间进行排序。
       4,reordercap的作用是对pcap报文按照时间进行排序。newBigPcap.pcap 为输入的文件,而newBigPcap_in_order.pcap则为按时间戳增长之后的文件。

       以上的工具都是wireshark所提供的使用频率比较高的工具,比如tshark,mergecap 以及reordercap,可以看到这些工具都是按照报文为单位进行处理的。如果对报文进行排序,比如按照流进行排序,由于wireshark没有提供类似的工具,而且着属于单片报文粒度的操作,这个时候就只能借助于wireshark的插件功能。关于wireshark的lua插件功能,可以参照这里

       5,当然,脚本中所用到的关于while循环以及${LINE##*/}这样的字符串截取的操作是属于shell的一些基础知识,不再赘述。

       综上可以看出利用wireshark提供的工具以及shell脚本能够很方便的处理大量的报文,当然如果追求速度的话,可以在多个docker中运行该脚本,就相当于堆机器。如果对于速度追求更高,那就只能够使用C语言+libpcap,但是一系列的解码会导致工作量增加。

       本文为CSDN村中少年原创文章,转载记得加上小尾巴偶,博主链接这里

阅读更多

扫码向博主提问

去开通我的Chat快问

javajiawei

博客专家

知无不言,言无不尽
  • 擅长领域:
  • wireshark
  • pcap报文批处理
  • 协议分析
版权声明:本文为博主原创文章,转载记得加上小尾巴偶。 https://blog.csdn.net/javajiawei/article/details/78858370
个人分类: wireshark
所属专栏: 你不知道的wireshark
想对作者说点什么? 我来说一句

c语言实现 报文收发 -- 源码

2009年12月15日 3KB 下载

史上最全的数据包,cap文件

2009年05月05日 36KB 下载

<em>报文处理</em>工具

2018年03月08日 0B 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭