报文批量处理方法简介

xiaoxiao2021-02-28  38

       有这样一个场景,有一大堆历史报文,但是这些报文中有很多无用的流量,我需要把这些有用的流量提取出来以一个报文形式进行存储。在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,但是一系列的解码会导致工作量增加。

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

村中少年 认证博客专家 网络安全 IDS/DPI 网络协议 网络安全工程师,计算机科学与技术本硕,多年从事IDS网络入侵检测,DPI深度报文检测等网络安全引擎方面经验,热爱技术,分享知识
转载请注明原文地址: https://www.6miu.com/read-2150274.html

最新回复(0)