当你只记住了文件的一部分内容而忘记了文件名的时候,当你渗透进入WEB服务器而找不到配置文件的时候,当你排查源代码是否被挂了敏感词汇的时候,当你的网站被入侵而需要排查webshell的时候,你会发现有这么一个实用小工具在身边是多么的暖心。只要给它一个路径和一个关键字,他就会给你一个满意的答案。
本文介绍一款用python写的实用的关键字检索小程序,适用范围word,Excel,PowerPoint,以及文本文件(无需知道扩展名),适用平台window,linux。
下面介绍一下这个小程序的思路和构成。
0x01 读取Word文件
Python处理word文档有两种途径,win32com和python-docx。win32com支持word2003,但是只能在Windows平台上使用;python-docx则是跨平台的,只要安装这个库就可以了,但是只支持docx,也就是office2003之后的版本。
本程序中将word中所有的段落和表格内容读出来,和要查询的keyword做比较,如果包含keyword则打印文件路径和该段落。源码如下:
0x02 读取Excel
读取Excel内容需要用到的库是openpyxl。查找关键字的思路是将每一个单元格读出来和keyword比较,如果包含keyword则打印文件路径和单元格内容。
读取Excel的时候需要注意数据类型的转换,需要把不是str或者unicode类型的数据转为str类型,否则总会有意想不到的报错。源码如下
0x03 读取PPT
读取ppt用到的库是python-pptx,这个比较简单,ppt读出来的数据都是str类型了,直接和keyword比较就好了。源码如下:
0x04 文本文件的读取
读取文本文件的前提是要识别哪些文件是文本文件。如果按照扩展名去判断一个文件是否是文本文件,那局限性就太大了。.config|.xml|.conf.|.bat等等扩展名,以及没有扩展名的都可能是文本文件,况且linux是没有扩展名这个概念的。因此我们采用了判断文件内容和编码的方法来识别文件是否是文本文件。
源代码:
以上4个模块就是我们要处理的数据对象。现在模块有了,就需要有个主程序将他们连接在一起组成我们的实用便捷小工具。
思路:遍历参数传进来的路径,搜集所有的文件,然后进行类型判断,如果符合相应的类型就进行检索。
源码如下:
哈,简单实用小工具就这样诞生了,由于时间关系本程序没有特别关注性能,有需要的同学可以加上多线程哈,那效率可就太强劲了。另外本程序还涉及到很多编码转换的问题,也都一一解决了,可以在Windows和Linux平台上畅快的运行啦。
附效果图:
usage: python getKeyWordFromOffice.py -p . -k config
-p 指定路径
-k 指定关键字
requirements.txt
python_docx==0.8.6
chardet==3.0.2
openpyxl==2.4.9
python_pptx==0.6.7
docx==0.2.4
pip install -r requirements.txt -i https://pypi.doubanio.com/simple/
脚本完整版请参考我们的博客 http://liehu.tass.com.cn/archives/942
猎户实验室原创作品,转载请注明出处。