赞
踩
Wireshark 提供了Lua API 来按需处理和分析报文,如何使用wireshark插件来分析和处理报文,我在前面的文章中或多或少的都有提及,当然我在这里也做了较为全面的说明,可以参考下。
在编写完lua脚本之后,需要利用tshark来加载该脚本。如果需要全自动的执行,显得不是特别友好,当然可以在shell脚本中进行启动。除此之外,还可以在python中调用lua插件以及传递参数。近期我在github上发现一个开源项目,就是通过对于tshark的封装,可以直接在python中调用lua脚本功能。本文就简单介绍一下该功能,感兴趣的小伙伴可以按照本文的方法试一试。
1,项目地址,这里
既可以直接安装:pip install pyshark
,也可通过源码安装
git clone https://github.com/KimiNewt/pyshark.git
cd pyshark/src
python setup.py install
因为初次使用可能对于该模块有很多的疑问,同时该模块的说明文档写的比较简单,因此使用源码安装,在出现问题的时候,可以在源码中进行调试,有助于理解程序。本身这个项目的代码较少,阅读起来难度并不大。
2,程序示例,如下示例是我在python中加载lua脚本解码报文示例:
def getHtmlFromPcap(pcapFileName,tsharkPara): import pyshark cap = pyshark.FileCapture(input_file=pcapFileName, custom_parameters=tsharkPara) cap.load_packets() #for pak in cap: #pas if __name__ == "__main__": fileDir = '/data/html/' param = [ '-X', 'lua_script:getHttpTitleAndDesc.lua','-X', 'lua_script1:'+fileDir,'-X', 'lua_script1:data-text-lines'] commFunc.getHtmlFromPcap(aPcapFileName,param)
由于tshark中涉及的参数众多,对于这些参数的处理pyshark是通过列表或者字典来进行传递的。由于tshark中涉及到lua脚本的参数都是通过-X来进行传递的。而字典中是不允许key值相同的,因此无法通过字典来传递lua脚本的参数,则只能通过列表进行传递,如程序中的param。由网络上使用wireshark的插件功能的人较少,同时项目文档介绍中也没有,因此我去简单的看了一下源码,使用列表来传递Lua脚本所需要的参数。这里是我在该项目当时的提问,最终还是由我自己解决了。
当然pyshark对于tshark解析的结果也做了封装,可以直接调用pyshark中的类进行输出报文的信息。总之,wireshark能够提供的报文信息,pyshark基本上都是拿过来直接使用的,很方便python中进行使用。但是在使用中存在的问题就是内存可能占用较高,由于要将报文读取到内存之中,因此占用的内存依赖于报文的大小,在实际的使用过程中要加以注意。
当然关于pyshark更多的使用方法,可以参考如下两个链接:
1,参考一
2,参考二
本文为CSDN村中少年原创文章,转载记得加上小尾巴偶,博主链接这里。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。