首页
论坛
课程
招聘

[其他内容] [原创]脱离Office环境提取word中的数据

2011-5-26 11:15 25625

[其他内容] [原创]脱离Office环境提取word中的数据

loudy
10
2011-5-26 11:15
25625
在网上看了不少,都是调用COM接口,需要Office环境支持,自己动手写了一个。
随便使用,随便修改。

脱离office环境提取word中数据

前言:
由于项目需要,对word2003和word2007的文件结构进行了分析,并自己写了个小工具用于提取word中的文本信息。
当然,如果要提取其他信息(图片等),根据结构进行分析也用不了太长时间。

Word2007结构比较简单一点:
它其实是一个压缩包,具体分析网上很多,不多说。参照源码也很容易理解。
具体过程就是:
(1)        解压缩;
(2)        解析XML文件,(对于文本信息,解析word目录下的document.xml文件即可;
(3)        提取文本,(document.xml中的文字信息是以UTF-8格式存储的,提取出来转化为GBK码)转换过程UTF-8UNICODEGBK

Word2003结构可以用Offvis简单查看一下,但Offvis的解析结果有点问题,我刚开始就是太相信它了,一直出问题,后来看了microsoft的官方文档才弄清楚了。
        Word2003结构比较复杂,具体的就不说了,参考文献结合源码应该很容易看清楚,要知道word2003中流的概念,所有的结构都是串起来的流,每个块的大小一般为0x200.
        Word2003中的文字存储进行了优化,可以按照ascii存放的字符就直接存成了ascii码,其他则进行Unicode编码后再存放。取出来要进行统一编码。

详细下载看。

[推荐]看雪企服平台,提供项目众包、渗透测试、安全分析、定制项目开发、APP等级保护等安全服务!

上传的附件:
最新回复 (47)
hezhang 2011-5-26 12:06
2
0
感谢楼主共享 研究一下
小覃 2 2011-5-26 13:05
3
0
楼主强大啊,赞一下楼主!
pdf和ppt文体提取会不? 感觉着两个比较难哦,word文本提取网上示例比较多了···
loudy 10 2011-5-26 14:21
4
0
只要知道结构应该都不难,现在不需要提取,就不花时间研究了,你要有需求可以自己研究一下嘛
小覃 2 2011-5-26 16:12
5
0
我是菜鸟,玩不起...
zzyylllct 2011-5-30 11:49
6
0
是OpenXML吗?微软有出这个的SDK。
dgsd163 2011-5-30 13:43
7
0
高手,学习一下WORD的内容提取
sunson 2011-5-30 20:16
8
0
下载收藏学习。。。
onbadday 2011-5-30 21:02
9
0
office旧版本的福音
wingdbg 2 2011-5-30 21:11
10
0
楼主威武,膜拜小习一下
littlewisp 2 2011-5-30 22:01
11
0
多谢分享,期待其他文档结构
winddyj 2011-5-30 22:08
12
0
学习收藏,感谢楼主共享
尚书 2011-5-30 22:27
13
0
挺好!
myid 2011-5-31 18:15
14
0
顶一个,支持!!
白水月 2011-5-31 18:49
15
0
很好,先收藏,有空再研读下,嘻嘻
cntrump 13 2011-6-1 10:04
16
0
是压缩包?不是流存储么?
loudy 10 2011-6-1 12:50
17
0
2003是流,2007格式有变化,是一个压缩包包上些xml文件,如果要看成流也行,个人觉得只是观察角度不同
zzzzzzx 2011-6-10 16:14
18
0
支持下 好东西
woekk 2011-6-18 02:15
19
0
有兴趣,收下了.谢谢.
光棍节 2 2011-6-25 09:56
20
0
不知道楼主有没有这方面的中文资料。。。
ilovehuhu 2011-6-26 16:38
21
0
附件中的pre2007.dll的源代码可以传上吗??
loudy 10 2011-6-26 17:14
22
0
实际就是一个压缩引擎,名字看着不方便就改了个名字,源代码网上随便找到
loudy 10 2011-6-26 17:16
23
0
不好意思,这个真没有。
KooJiSung 2011-6-26 18:22
24
0
你这个东西搞了多长时间?我也写过一个,不过很简单..没你研究那么透彻
loudy 10 2011-6-28 00:23
25
0
其实也没有研究太透彻,用了可能一周多左右时间吧,把感兴趣的东西研究了下,其实就是个体力活。
pojiemyie 2011-7-3 15:59
26
0
这个还是有难度,谢谢lz
maplelxf 2011-7-4 09:00
27
0
haodongdong, xuexiyixia
lancecrack 2011-7-4 09:08
28
0
感谢楼主分享,下载学习学习!
loudy 10 2011-8-11 12:05
29
0
感谢下载留名的各位了
hahadazu 2011-8-11 14:01
30
0
弄得我不留名都不好意思了。

顺便弱弱的问一下,能读加了密的么?
loudy 10 2011-8-12 12:03
31
0
呵呵,不回也没事啊,对大家有帮助就行。
虽然没试过,想来应该没法读加密的,没研究过,不知道什么算法
boxcounter 2 2011-9-2 17:11
32
0
挺不错的,就是代码风格不太好,遇到崩溃的问题几乎没法维护,大量的硬编码,奇怪的变量名。
浪子漂漂 2011-9-3 11:59
33
0
楼主很强大,金山公司应该有这些文件结构的全部东东,这样写软件就可以脱离OFFICE的环境了
loudy 10 2011-9-6 21:08
34
0
呵呵,谢谢提醒,确实代码风格不好,时间一紧就忘了风格,也没调,除了我自己还真难看清除代码。。。以后是得注意才行。。。。
loudy 10 2011-9-6 21:09
35
0
金山应该已经研究得非常透彻了,不像我这样小打小闹的,但是他们不会开源的,呵呵
小覃 2 2011-9-19 21:08
36
0
这个dll有2个bug:
1.在分析doc文件的时候,调用完函数文件句柄没释放,导致程序没关闭的情况下其它程序无法访问生成的txt文件
2.在某些doc文件读取的时候异常,BOOL Analysis2003::GetTableSid()函数中,GetIt(IsOne, wordDirEntry->_EleName)的,wordDirEntry指针不为NULL,但是wordDirEntry->_EleName异常
小覃 2 2011-9-21 14:21
37
0
pre2007.dll这个DLL文件解压完docx文件后好像不会释放内存,一个4 MB的docx文件解压后连带标签格式
生成的xml文件有一百多MB,反复调用pre2007.dll解压内存会耗尽~
MengXP 2011-9-23 00:47
38
0
这个是可以做成商业间谍软件的
嘿嘿嘿嘿嘿...
飞天蓝羊 2011-9-23 09:42
39
0
不错,下来看看!
loudy 10 2011-9-25 22:04
40
0
分析得很透彻,我主要是看一下word格式,别的没怎么注意,半成品,如果你有时间可以完善一下哈。。。
loudy 10 2011-9-25 22:08
41
0
不用这么邪恶吧。。。。。
GVU 2011-12-12 09:54
42
0
楼主这代码阅读真让人头疼, 没注释, 变量名也奇怪, 什么xx什么yy的看不懂, 把office2007的文件解压到Windows的一个文件夹中去了, zip有解压到内存中的接口, 而且也不需要全部解压出来。 2007的倒是很容易解析。 2003的结构有点复杂, 主要是微软和甲骨文的文档都说得云里雾里的, 唯有看楼主的代码了, 首先先感谢楼主分享经验, 代码很难阅读, 我阅读了半天还是无法理解, 主要是目录链的分析, 不知道目录链是怎么解析出来的, 头疼。 如果楼主能看到, 能否给我解释一下, 先感谢了。
anye 2011-12-12 10:30
43
0
好东西,搜藏了,楼主辛苦了。
webwizard 2011-12-13 02:42
44
0
佩服。一直想好好分析一下MS Office系列文档的物理结构,可惜,没有太多时间。
lixupeng 2011-12-13 23:19
45
0
mark学习
jzhg 2011-12-14 09:56
46
0
不错的 谢谢哦
jk影 2011-12-14 22:29
47
0
最近一直在看这方面的东西 正好楼主的东西可以回去试试
GVU 2011-12-22 11:14
48
0
虽然过去一段时间了, 可是我还是忍不住要说一下, 楼主的代码真是神级的代码, 我现在都内出血了。 楼主没有任何注释, 变量名也很奇怪, 硬编码很多, 不知道楼主能否提供一下你的参考资料, 我这里有OpenOffice的资料, 不过他上面只是说了一下复合文档的结构, 举例是Excel, 只说了一下扇区链、目录流等, 但是没有细说里面的数据是怎么组织的, 如何提取。 微软的公布了文档, 但是没在里面找到相关的有用信息, 大公司的文档就是让人头疼。 楼主能提供一下你当初的参考资料吗, 关于Office1997-2003的提取的, 我的邮箱是owhao@126.com, 先在这里谢谢了。
游客
登录 | 注册 方可回帖
返回