内容简介:有这样一个场景,有一大堆历史报文,但是这些报文中有很多无用的流量,我需要把这些有用的流量提取出来以一个报文形式进行存储。在Linux上处理的脚本如下:这里面主要运用到如下的命令:1,find命令,该命令主要用于文件的遍历,
有这样一个场景,有一大堆历史报文,但是这些报文中有很多无用的流量,我需要把这些有用的流量提取出来以一个报文形式进行存储。在 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村中少年原创文章,转载记得加上小尾巴偶,博主链接这里。
以上所述就是小编给大家介绍的《报文批量处理方法简介》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 详解 HTTP 报文(二):Web 容器是如何解析 HTTP 报文的
- 发送arp请求报文
- 详解 http 报文
- MQTT协议 -- 消息报文格式
- Wireshark解密TLS报文
- TCP报文发送的那些事
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。