本文主要讲述如何使用Lua以及wireshark提供的API接口,来实现切流的操作。本质是利用wireshark的强大功能快速的实现报文级操作。
在这篇文章中说了如何使用tshark写切流的脚本。总的来说效率低下,主要原因是使用tshark我无法做到报文级操作(如果你知道,请告诉我),只能整个整个数据包的读取,然后根据过滤条件整个报文输出。对于一个pcap文件需要多次遍历,pcap报文中有几条流,就要读取遍历报文几次,时间复杂度高。如遇p2p报文,耗时太长。
使用C语言libpcap解析pcap报文,加上glib实现流管理,也是可以做到只历一遍报文。这里面使用Lua,其一是因为wireshark提供了强大的报文、流管理以及过滤器的功能,可以加以利用;其二是因为使用Lua脚本能够快速的构建和实现特定的小功能。
在网站https://www.wireshark.org/docs/wsdg_html_chunked/的第11章中说明了wireshark给Lua提供的API接口。本次主要应用到里面的Dumper,Field,List