精华内容
下载资源
问答
  • office 文档解析

    千次阅读 2013-09-18 17:00:17
    最近在项目维护过程中涉及到了office各种文档解析,捣鼓了好长时间,有点点收货,记下来。 涉及文档:doc、docx、xls、xlsx、pptx。   下面对不同的文档进行简单解析: 一、word文档 1、首先想到的方法就是ado,...

    最近在项目维护过程中涉及到了office各种文档的解析,捣鼓了好长时间,有点点收货,记下来。

    涉及文档:doc、docx、xls、xlsx、pptx。

    语言:VC

     

    下面对不同的文档进行简单解析:

    一、word文档

    1、首先想到的方法就是ado,网上一找一大片,下面给几个连接:http://www.docin.com/p-355819700.html ,,,http://huguangchaoren.blog.163.com/blog/static/888341502010922924154/ ,,,,http://blog.csdn.net/dancewyr/article/details/7674558,操作很简单,如果自己安装了office,在vs中找到项目下的类向导,添加“类型库中的mfc类”,在office目录下找到msword.olb,导入。下面简单写下自己的测试代码:

    #include "CApplication.h"
    #include "CDocuments.h"
    #include "CDocument0.h"
    #include "CRange.h"

    void CdocxtestDlg::OnBnClickedButton1()
    {
     // TODO: 在此添加控件通知处理程序代码
     CString strFileName;
     WCHAR chPath[MAX_PATH] = {0};
     GetModuleFileName(NULL, chPath, MAX_PATH);
     WCHAR * ptrPath = wcsstr(chPath,L"demo.exe");
     *ptrPath = '\0';
     strFileName.Format(L"%s\\111.doc",chPath);
     CApplication app;
     app.CreateDispatch(L"Word.Application");
     OutputDebugStringA("CreateDispatch ok");
     app.put_Visible(false);
     OutputDebugStringA("put_Visible ok");
     app.put_DisplayAlerts(false);
     OutputDebugStringA("put_DisplayAlerts ok");
     CDocuments docs = app.get_Documents();
     COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
     CDocument0 doc = docs.Open(COleVariant(strFileName),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
     OutputDebugStringA("Open ok");
     CRange range = doc.Range(vOpt,vOpt);
     CString strs = range.get_Text();
     OutputDebugStringW(strs);
     range.ReleaseDispatch();
     doc.ReleaseDispatch();
     docs.ReleaseDispatch();
     VARIANT SaveChanges,OriginalFormat,RouteDocument;
     SaveChanges.vt = VT_BOOL;
     SaveChanges.boolVal= VARIANT_FALSE;
     ::VariantInit(&OriginalFormat);
     RouteDocument.vt = VT_EMPTY;
     app.Quit(&SaveChanges,&OriginalFormat,&RouteDocument);
     app.ReleaseDispatch();
    }

    以上程序可以简单的读取doc和docx类型的文档,即:ado方式可以读取doc和docx格式的word文档,但是缺陷也是有的,这种方法对office组件(库文件)依赖性很高,所以在没有安装office的操作系统中,此方法运行到app.CreateDispatch(L"Word.Application");会失败,若个人理解有误,请大牛指点,在此感谢。

     

     

     

    2、在网上找到了一个word数据解析库tractText.dll,支持word数据的读取,下面给一个连接:http://www.pdfhome.com.cn/Article.aspx?CID=bf51a5b6-78a5-4fa3-9310-16e04aee8c78&AID=621ca553-48ee-43ee-b248-3d63787963cc ,代码在连接里面有详细描述,但是也是有缺陷,首先要注册tractText.dll组件,其次,这个dll不支持docx数据的读取,我自己的demo读取出来的是空,如果哪位大牛用这个dll读取到了docx文档数据,请告诉小弟一下,在此感谢。

     

     

    3、对于doc文档的读取,我选择了tractText.dll,对于docx文档的读取,我选择了文档结构解析,下面给一个连接:http://www.codeproject.com/Articles/20529/Using-DocxToText-to-Extract-Text-from-DOCX-Files  ,上面给了一个docx文档解析的一个新思路,docx可以理解为zip压缩文件,在压缩文件中有很多xml类型文件记录着docx文档的格式和数据,那我们要做的就是找到记录着docx文档数据的xml文件进行读取就可以了。。。下面看一张图片 ,我们把docx文档后缀变成.zip,双击打开,这就是里面的东东,

     

    其中,[content_types].xml中记载着所有xml文档的路径及作用,下面我们来看看这个文档的内容:

    其中,document.xml文档就是我们要找的文档,这个文档中记载着docx文档中的所有数据,但是,为啥不能直接在word路径下找呢?office软件在生成docx的时候会把document.xml放到word目录下,但是其他可以生成docx文档的软件不一定会把document.xml放到这个目录,所以要先找[content_types].xml,在[content_types].xml中把document.xml的位置读出来,然后再去找document.xml。

    document.xml是有自己的xml格式的,若不懂xml格式,可以去网上简单的学学,下面给一个连接:http://wenku.baidu.com/view/efd94ddfce2f0066f53322e7.html ,,如果我们需求苛刻,可以根据不同节点的属性解析各种docx数据,包括文字,数字,回车换行,空格,图片,表格等等……我这里只需要字符串,所以解析的时候只获取<w:t>数据</w:t>

    中的数据即可,下面贴下来document.xml格式:

    在用这种方式读取docx文档的时候要用到压缩文件解析类和xml文档解析类,这个过程中注意:xml文档是utf-8编码、document.xml中不同节点有不同意义、最好使用支持xpath()函数的xml解析类,这样就不用逐个遍历<w:t>了。

    我自己使用的压缩文件解析类为unzip,下面给一个连接:http://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win32 ,,在操作的过程中遇到了一个问题,用Unzip解压文件到内存时中文为乱码,我只能将其解压到指定目录再读取,这样效率可想而知,我估计是编码问题,暂时解决不了,哪位大牛如果有好的解决办法,请指点一下,在此感谢。

    我自己使用的xml解析类为pugixml库,下面给一个连接:http://blog.csdn.net/yukin_xue/article/details/7540011 ,,http://blog.csdn.net/jdzfjfhnui/article/details/6672532  ,,以前用的CMakeUp类,但是没有xpath接口,处理麻烦。

     

    二、excel

    1、还是ado方法,代码思路与解析word文档一样,但是缺陷也一样。

     

    2、odbc方法,这种方法比ado方法更基础一些,其不再利用office组件,但是依赖office相关驱动,这个驱动似乎操作系统都提前预安装了,下面给一个连接:http://wenku.baidu.com/view/fb6ae796daef5ef7ba0d3c9b.html  ,其大致思路是,先判断相关驱动是否存在,然后构造查询函数,然后执行就可以了,但是缺陷是无法读取excel第一行数据,我发现,执行函数有相关判断是否查询第一行数据的参数,在运行查询函数时,函数调用底层驱动,底层驱动忽略了这个变量,仍然没有查询第一行。。。

     

    3、BasicExcel,BasicExcel是一个第三方开源库,提供了xls文档解析功能,还是给一个连接:http://www.codeproject.com/Articles/13852/BasicExcel-A-Class-to-Read-and-Write-to-Microsoft ,但是据网上说这个库还不支持xlsx文档的解析,不知是否属实,如果哪位大牛知道,请指点一下,谢谢。

     

    4、libxl.dll,第三方库,提供了xls和xlsx文档的解析,可以读取所有行,下面给一个连接:http://blog.csdn.net/lbd2008/article/details/8332345  ,下面附上部分个人代码:

     

    #include "libxl.h"

    using namespace  libxl;

    bool ReadXLSXData(wchar_t *ch)
    {
     bool bResult = true;

    //Book* book = xlCreateBook();//Excel xls版本

     Book* book = xlCreateXMLBook();//excel 07版本以上的文档
     if(book->load(ch))//加载
     { 
      int iSheetCount = book->sheetCount();//获取页数
      for (int i=0; i<iSheetCount; i++)//逐个遍历页数
      {
       Sheet * sheet = book->getSheet(i); 
       if(sheet)
       { 

        for (int row=sheet->firstRow(); row<sheet->lastRow(); row++)//逐行读取数据
        {
         for (int col=sheet->firstCol(); col<sheet->lastCol(); col++)//具体到某行的某列
         {
          CellType cellType = sheet->cellType(row, col);
          std::wcout << "(" << row << ", " << col << ") = ";
          if(sheet->isFormula(row, col))//判断单元格是否为公式
          {
           //如果是公式,读取并输出
           const wchar_t* s = sheet->readFormula(row, col);
           std::wcout << (s ? s : L"null") << " [formula]";
          }
          else
          {
           //如果不是公式,获取数据格式并输出
           switch(cellType)
           {
           case CELLTYPE_EMPTY://空
            {
             std::wcout << "[empty]";
             break;
            }
           case CELLTYPE_NUMBER://整数
            {
             double d = sheet->readNum(row, col);
             std::wcout << d << " [number]";
             break;
            }
           case CELLTYPE_STRING://字符串
            {
             const wchar_t* s = sheet->readStr(row, col);

             cout << s<< " [string]";
             break;       
            }
           case CELLTYPE_BOOLEAN://真假
            {
             bool b = sheet->readBool(row, col);
             std::wcout << (b ? "true" : "false") << " [boolean]";
             break;
            }
           case CELLTYPE_BLANK:
            {
             std::wcout << "[blank]";
             break;
            }
           case CELLTYPE_ERROR:
            {
             std::wcout << "[error]";
             bResult = false;
             break;
            }
           default:
            {
             break;
            }
           }
          }
          std::wcout << std::endl;
         }
        }
       } 
       else
       {
        bResult = false;
       }
      }
     } 
     else
     {
      std::wcout << "load file error";
      bResult = false;
     }

     book->release();
     return bResult;
    }

     

     

    三、ppt文档

    1、pptx文档的解析思路与docx文档解析思路类似,不过,pptx中把每个页ppt都放到了不同的slides里。

    2、由于没有解析ppt文档需求,我暂时没有尝试,不过网上也是很多,这里不说了。

     

    以上都是个人测试后的总结,由于技术能力原因,部分内容可能有出入,如有出入请指点,仅供总结和参考。

    展开全文
  • 写在前面:这是我最近在做的一个小课题,按照研究进度不定期更新。主要是学习前人的研究思路,自己开发的内容会比较少。 复合文档的概念 复合文档不仅包含文本,而且包括图形、电子...符合文档采用NTFS(NT Fil...

    写在前面:这是我最近在做的一个小课题,按照研究进度不定期更新。主要是学习前人的研究思路,自己开发的内容会比较少。

    1. 复合文档的概念
      复合文档不仅包含文本,而且包括图形、电子数据表格、声音、视频等其他信息。使用面向对象技术,将非标准信息(如图像、声音)作为独立的、自包含式对象包含在文档中。
      符合文档将数据分成许多流(Steams),流存储在不同的Storages里。符合文档采用NTFS(NT File System)格式。
      流又分成更小的数据扇区(sectors)。数据扇区可能包含控制数据或用户数据。整个文件由一个头结构(Header)结构以及Sectors组成,头结构确定了Sectors的大小,每个Sector的大小相同。
    2. Office文档格式
      Office文档官方说明
      Office文档主要基于三种格式:ole、xml、ooxml。ooxml以xml为基础,可以理解为zip文件。
      doc、xls、ppt三种扩展名文档属于97-2003版Office,可解析出ole格式文件。
      docm、xlsm、pptm是启用宏的Office文档,存储Visual Basic Applications(VBA)宏代码,可解析出xml文件。
      docx、xlsx、pptx三种扩展名文档可解析出xml文件。
    3. Office文档解析
      Office文档解析可用Microsoft官方解析可视化工具Offvis来进行。下载Offvis并安装。Offvis下载
      可以看到Office被解析成二进制格式。

    导航窗格显示原始文件内容,每行均显示当前偏移量、一个十六进制数字链,及其文本表示形式(如果有)。结果窗格显示包含当前数据结构的名称、值、偏移位置、大小和类型的分析结果。下面的屏幕截图显示可视化工具中包含"Hello, world"文本的 .doc 文件的一部分。其中选择了字母"w"。这会导致可视化工具突出显示相应的十六进制数字和数据结构。

    在这里插入图片描述
    将解析后的代码段另存为.zip格式,可以得到一个压缩文件夹,打开文件夹,可以看到文档的内容被存储在不同的文件里。
    这里涉及到一个新名词:OPC-Open Package Convention开放打包协定,是一种基于zip+xml定义的文件存储格式。
    docm文件进行如上操作后得到的压缩文件夹如下图:
    在这里插入图片描述
    这里面要理解三个概念:Part、Relationship、ContentTypes。
    zip中的每个文件都是一个part,可以是任何格式,比如图片、xml等。
    Relationship是一种特殊的Part,它描述了各个Part之间的依赖关系,存储在_rels文件夹中,存储为rels文件。
    ContentTypes在zip压缩包的根目录下,文件名为Content_Types.xml,它记录了OPC文件中除了他自己以外的所有文件的类型。
    word文件夹存储文档的主体部分,打开word文件下可看到以下文件:
    在这里插入图片描述

    Office文档2007前后的版本格式不同。Office 2007之前的版本格式为OLE文件,在此基础上Office 2007之后的版本加入了XML文件格式。这种新的文件格式称为Office Open XML,文档结构更为清晰。

    Office
    2007之前的版本可以看作二进制文件。用Microsoft的Offvis十六进制编辑器可以打开示例文件,清楚地观察到OLE文档结构。其中十六进制文件头为D0 CF 11 E0 A1 B1 1A E1,这是固定的OLESS文档格式文件头。

    在这里插入图片描述

    Office
    2007之后的样本,用Offvis十六进制编辑器打开后,可以发现文件头为PK。这代表着ZIP算法的发明者Phil Katz。Office
    2007之后的文档本质上是一个压缩包。由于文档中包含ooxml文件,因此不能用offvis进行解析。这类文档可以通过解析出.xml和.rels来获取内容和逻辑关系。

    在这里插入图片描述

    以pptx文件为例。.pptx文件是包含许多“部件”(通常为UTF-8或UTF-16编码)或XML文件的zip文件(包)。该包还可能包含其他媒体文件,如图像。该结构根据OOXML标准ECMA-376第2部分中概述的开放式包装惯例进行组织。位于Microsoft Powerpoint文件的ppt文件夹中,内部的文件数量和类型将根据演示文稿中的内容而有所不同,但总会有[Content_Types]
    .xml,一个或多个关系(.rels)部件和ppt演示部件(presentation.xml)。通常,还将存在至少一页幻灯片文件,以及幻灯片主页文件和做幻灯片的幻灯片格式文件。
    在这里插入图片描述

    每个PK包都必须有一个[Content_Types] .xml,在包的根目录中找到。此文件包含包中所有部件的内容类型的列表,每个部分及其类型必须列在[Content_Types] .xml中。
    在这里插入图片描述

    每个PK包都包含一个关系文件rels,用于定义其他部分与包外部资源之间的关系。这将文件之间的关系与内容分开,使得在不更改引用目标的源的情况下更改关系变得容易。对于OOXML包,_rels文件夹中始终存在关系部分(.rels),用于标识包的起始部分或包关系。例如,以下定义了演示文稿内容的起始部分的标识:

    <Relationship   Id=“rId1”Type =“http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument”Target =“ppt / presentation.xml”/>。

    对于app.xml和core.xml,.rels中通常也存在关系。除了PK包的关系部分之外,作为一个或多个关系的源的每个部分将具有其自己的关系部分。每个这样的关系部分都在零件的_rels子文件夹中找到,并通过将“.rels”附加到零件的名称来命名。通常,主要内容部分(presentation.xml)具有自己的关系部分(presentation.xml.rels)。它将包含与内容其他部分的关系,例如slideMaster1.xml,notesMaster1.xml,handoutMaster1.xml,slide1.xml,presProps.xml,tableStyles.xml,theme1.xml,以及外部链接的URL。

    PPTX文件的基本解析依据以下流程:

    1)      
    读取 /[Content_Types].xml 文件,获取到所有文件的类型;需要了解
    OPC 中关于 ContentTypes 的内容。

    2)      
    读取 /_rels/.rels  Package Relationship 文件,获取 presentation.xml 文件的位置,比如 /ppt/presentation.xml;需要了解
    OPC 中关于 Relationship 的内容以及 PML 的基本内容。

    3)      
    读取 /ppt/presentation.xml 文件以及其关联的
    Relationship 文件 /ppt/_rels/presentation.xml.rels,得到该PPT所有页面文件的存储位置,比如 /ppt/slides/slide1.xml,以及
    slideMaster(母版)文件的存储位置,比如 /ppt/slideMasters/slideMaster1.xml,以及
    slideLayout(板式)等相关文件的存储位置;需要了解 PML 中关于
    Presentation 的定义,也就是 PML 的 XSD 中定义的 CT_Presentation 类型。

    4)      
    读取 /ppt/slides/slide1.xml 文件内容以及其关联的
    Relationship/ppt/slides/_rels/slide1.xml.rels,可以得到该页面的所有元素信息;

    展开全文
  • Office 文档解析 文档格式和协议

    千次阅读 2020-07-08 07:58:25
    本文讨论的 Office 文档指的是 Office 2007 及以后的 PPTX 和 xlsx 等格式的文件。在 Office 2007 之前使用的不公开标准的二进制格式定义。在 Office 2007 之后的文档格式使用 OOXML 国际标准定义,本文将告诉大家这...

    本文讨论的 Office 文档指的是 Office 2007 及以后的 PPTX 和 xlsx 等格式的文件。在 Office 2007 之前使用的不公开标准的二进制格式定义。在 Office 2007 之后的文档格式使用 OOXML 国际标准定义,本文将告诉大家这个标准的协议和格式

    在 Office 2007 之后的 Office 文档格式采用的是 OOXML 标准格式。那什么是 OOXML 标准?这里的 OOXML 的全称是 Office Open XML File Formats 或被称为 OpenXML 格式,这是一个基于 zip+xml 定义的文档格式。这个标准最初是由 ECMA-376 定义的,后来 ISO/IEC 29500 也开始掺和 OOXML 格式的定义,不过可以认为从 ECMA-376 的第2版开始,这两个标准是一样的

    微软的 Office 实现了 OOXML 格式,但仅实现其中一部分,详细描述请看 官方文档

    在 OOXML 格式里面,如上文所说是基于 zip+xml 定义的,这里的 Zip 提供文件的支持,而 xml 提供内容的支持。不过 OOXML 使用的 zip 也是有规范的,这里使用 OPC (Open Package Convention) 中文名叫 开放打包协定 作为文件存储格式。当然,这并非说 OPC 使用特殊的 zip 格式,而是 OPC 规定了文件存放的存储格式,然后将这些文件使用 zip 打包为一个文件。因此 一个 OPC 文件(不管其文件后缀是什么)本质上就是一个 zip 文件,你可以用任何常见的解压软件进行解压,解压后你看到的那些文件的组织结构,就是以 OPC 定义的方式存储的

    ECMA-376,Fourth Edition,Part 2 详细定义了 OPC 开放打包协定。在 OPC 里面有三个重要的概念,分别是 Part 和 Relationship 和 ContentTypes 这三个

    什么是 Part 简单理解就是 zip 的文件,每一个文件都是一个 Part 可以是任何格式,比如图片和xml文件等。在 Office 文件中,各种 Markup Language 定义的内容就作为 XML 存储在 Part 中

    而 Relationship 是一种特殊的 Part 文件,它描述了各 Part 之间的依赖关系。根据OPC协议的规定,所有的 Relationship 都必须存储在名为 _rels 的文件夹中,并且所有 Relationship 的文件名都必须以 .rels 为后缀。每个 Part 可以根据自身的业务需求有一个对应的 Relationship 文件,这个对应的 Relationship 文件必须存放在这个 Part 文件所在文件夹的 _rels 文件夹里面,同时要求使用 Part 文件加上 .rels 后缀,不能使用其他名字

    如有一个 PPTX 的页面是 ppt\slides\slide1.xml 此时这个页面的 Relationship 必须是 ppt\slides\_rels\slide1.xml.rels 文件,不能使用其他命名

    最后一个 ContentTypes 相信小伙伴也不陌生,这是放在zip压缩包的根目录下的 [Content_Types].xml 文件,这是基本上每个 NuGet 包都会带的内容(不认识NuGet的小伙伴请点击右上角关闭按钮,因为你不要妄想玩转Office解析了),在 [Content_Types].xml 文件记录了该 OPC 压缩文件中除了他自己以外的所有文件的类型。这个文件作用是解决后缀名判断问题,在 OPC 定义里面不建议使用后缀名判断文件类型,而是根据 [Content_Types].xml 文件记录判断文件类型

    讲完了文件存储方式,剩下的就是 XML 表示文件内容。在 OOXML 格式里面,可以认为是 OPC + *ML 的组合,这里的 *ML 表示的是各个标记语言,如 PML(Presentation Markup Language PPT 中各种数据的描述)等,这部分定义可以在 ECMA-376,Fifth Edition,Part 1 找到

    解析 Office 文档用的比较多的包含 PML (Presentation Markup Language pptx, PPT 中各种数据的描述)WML (Wordprocessing Markup Language docx, Word 中数据的描述)SML (Spreadsheet Markup Language xlsx, Excel 中数据的描述)DML(Drawing Markup Language, Office 所有格式中都可以使用,用来描述矢量图形,图表等)SharedML(Shared Markup Language, 描述了文档属性,音视频,图片,文档主题等内容,它被所有Office文件使用)

    这将会对应在 OpenXML SDK 的各个命名空间里面

    OfficeTalk: Essentials of the Open Packaging Conventions

    Open XML SDK

    ECMA-376

    ISO/IEC 29500

    更多请看 Office 使用 OpenXML SDK 解析文档博客目录

    我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

    如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

    如有不方便在博客评论的问题,可以加我 QQ 2844808902 交流

    知识共享许可协议
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

    展开全文
  • 恶意Office文档工作原理 Office恶意文档主要通过嵌入文件的形式触发攻击,文件嵌套方式主要有两种:一种是在Office 2007 PK包中嵌入文档;另一种是将攻击文件包装成Rtf富文本格式,再将嵌入文件插入Rtf的/objdata流...
    • 恶意Office文档工作原理

    Office恶意文档主要通过嵌入文件的形式触发攻击,文件嵌套方式主要有两种:一种是在Office 2007 PK包中嵌入文档;另一种是将攻击文件包装成Rtf富文本格式,再将嵌入文件插入Rtf的/objdata流中。

    恶意代码可能经过多级嵌套,常见的攻击形式有:恶意代码实现在本地创建恶意应用程序;跳转至URL下载恶意程序;恶意代码本身包含恶意程序等。

    在这里插入图片描述

    • 常见Office文档中VBA代码的混淆形式

    字符串替换

    混淆代码常常在正确的指令中插入一些无用的字符串,通常这些代码段后面会有专门的替换函数,以便于恶意代码运行。比如:
    清理无用的字符串前
    清理无用的字符串后
    字符串压缩

    VBA代码中可能出现被压缩过的字符串,程序运行时会对这部分代码做解压缩处理。以这种方法也可以达到混淆代码的目的。
    压缩的字符串解压缩后的字符串
    注释的字符串

    如图,在一条指令的中间插入了一段被注释过的无用字符串。尽管不会影响代码的运行,但是给恶意代码的判别带来了困难。
    在这里插入图片描述
    拆分的字符串

    一些恶意特征可能被拆分成多个字符串组合的形式,如:powershell是常见的指令,可以实现运行powershell控制台的目的。在恶意代码中,它常常被混淆为“p” + “ow” + “sh” + “ell”等形式,形式不唯一。

    ASCII代码数组

    一些恶意代码段可能会以ASCII码的形式出现,恶意代码运行时会对ASCII码进行替换,但是这为恶意代码的预检测带来了困难。在后文中我将对这一部分进行更详细的说明。

    垃圾代码

    混淆器优势会抛出多余的代码段。常见的形式有:定义某些变量和函数,但从不引用和调用;可以执行一些代码部分,但最终不会影响脚本的整体操作。

    间接呼叫和模糊控制流程

    由多个不同函数调用的函数,但每个函数以完全享用的方式转换输入,并以相同的方式调用底层函数,其实这几个函数可以合并为一个简单的函数。

    复杂的名称

    使用过于复杂的变量和函数名称。包含大写和小写字母、数字和符号组合的字符串很难一目了然地区分他的用途。

    算术序列

    在为变量赋值时,可能会采用长的四则运算表达式来达到目的。尽管赋值结果并没有改变,但是为检测带来了一定的难度。

    如:TiQWVSMbRwOJA=chR((9.5 + 86 + 9.5 – 86 + 9.5 +86 – 9.5 - 86)

    展开全文
  • 使用poi工具,提供对word,excel,ppt文档内容的解析,同时支持2003和2007版本
  • ViperMonkey is a VBA Emulation engine written in Python, designed to analyze and deobfuscate malicious VBA Macros contained in Microsoft Office files (Word, Excel, PowerPoint, Publisher, etc)....
  • office word文档解析

    2018-08-17 11:27:09
    项目主要用于解析office word文档内容解析;支持doc docx两种格式文档,可解析文档段落内容,表格数据、以及图片存储
  • POI的帮助文档,chm格式;在web项目中使用POI解析office文档时需要的jar包
  • DOC文件 一些用于解析Microsoft Office文档的python脚本
  • Office 文档(如:.doc、.ppt、.xls等)很多是复合文档(OLE文件),所有文件数据都是存储在一个或多个流中。每 个流都有一个相似的数据结构,用于存储元数据的数据结构。这些元数据有用户和系统的信息、文件属性、...
  • 在使用 OpenXML 解析 Office 文档,无论是 PPT 还是 Word 还是 Excel 文档,都会使用标准方式解析。而此时的文档如果包含了错误的 Url 格式,例如不正确的邮件名的时候,将会在解析的时候出错。本文告诉大家如何修复...
  • 本文收集我写的 Office 解析相关博客 入门 C# dotnet 使用 OpenXml 解析 PPT 文件 C# dotnet WPF 使用 OpenXml 解析 Excel 文件 PPT 解析 dotnet OpenXML 解析 PPT 页面元素文档格式 dotnet OpenXML 的 Slide ...
  • 复合文档解析

    2021-05-28 11:30:11
    复合文档解析 使用方式 #include "ReadStorage.h" using namespace std; int main() { // WCHAR szPath[] = L"G:\\WorkSpace\\Registry.db"; // WCHAR szPathName[] = L"E:\\WorkSpace\\QQDcyt\\Registry.db"; ...
  • 老版office复合文档结构解析工具,支持xls,doc,ppt等。
  • Office文档静态检测

    2020-11-20 11:33:29
    包括文件类型判别、解析文档结构、恢复/提取文档内的对象、文档检测等内容。多达30多页的PDF,对相关学习研究者有一定的帮助。
  • Office 文件解析入门

    2020-10-04 22:19:52
    Office 文件解析入门 概述 - Office 解析相关协议 这里所讲的 Office 文件指的是微软 Office2007 及以后的 PPT/EXCEL/WORD 等文件格式,因为 Office2007 以前的文件是用二进制格式定义的,不在本文的讨论内容中。 ...
  • Android文档阅读(1)Office文档阅读的方案实现 本文开始做一些查看网络或者本地文档的功能,对于一些用到简单打开office文档应用,本文可能会适合,方案中会用到NoHTTP的下载功能,没了解过的小伙伴们可以移步到...
  • Office文档在线预览

    千次阅读 2019-04-12 22:15:09
    测试方案二:使用第三方服务方案三:使用微软 Office Online 服务永中文档预览服务详解1. 试一试在线预览!2. Web调用3. Java调用 方案一:word转html 使用Apache POI将word转为html,生成静态html,预览功能直接...
  • java对office、pdf文档在线预览解析(融合进项目中)

    千次阅读 热门讨论 2018-01-03 15:44:45
    最近在项目中要做一个文档的预览,在网上搜了好多demo,都可以实现其功能,但是放在自己的项目中有点复杂。 先说明本人的开发环境(win7+tomcat7+maven+svn+myeclipse),接下来最直观的项目需求,如下图: 当用户...
  • 国家计算机二级MS-Office答案解析(已整理).doc
  • 使用Tika进行文档解析抽取

    千次阅读 2019-09-25 15:23:47
    Apache Tika是一个用户文件类型检测和文件内容提取的库,Apache顶级项目,可检索超过1000中类型的文档,广泛应用于搜索引擎、内容分析、文本翻译、数字资产管理等。主要特点如下: (1)统一解析器接口 (2)低内存...
  • dzzoffice,onlyoffice文档加载中下载失败

    千次阅读 2021-06-03 11:21:32
    onlyoffice docker容器内部访问不了宿主机上部署的ddzoffice文档的域名 (域名是内网dns解析的,非公网),缺少dns解析,所以onlyoffice跟调用系统无法通信 测试方法:在容器中 curl 文档系统的地址 比如 docker...
  • 因file_get_contents函数未正确配置导致的问题导致的问题重新打开同一个文档 无限弹出 “文件版本已更改。页面将被重新加载”在线编辑的内容未被真正的保存到服务器真实的文件中在线编辑的内容保存后重新打开还是...
  • // 沉默是金。
  • 背景:我们项目的文档是存放在fastdfs服务器上面的,现有需求需要实现将fastdfs上面的各种office文档在网站页面进行预览和编辑保存 方案:由于fastdfs目前是不支持文档的更新的,所以只能通过插入新文档,删除老文档...
  • Office文档转pdf

    2012-03-28 21:54:06
    大概的需求为,在某用户上传附件到web服务器时,判断用户的文档类型,如果用户上传的文档后缀类型为office文档类型时,就将文档转换为pdf,并保存到web服务器某文件目录下,以便共享给其它用户进行下载。 这个里面...
  • WPF打开操作Office文档的解决办法

    万次阅读 热门讨论 2011-05-26 20:42:00
    最近在一个项目碰到一个问题,要用WPF打开并显示打印Office文档。包括Word, Excel, 和PowerPoint 文档。找了很多资料,解决方案之一:调用第三方开发的Word, Excel, PowerPoint解析控件,三个不同的人开发的,...
  • ONLYOFFICE文档转换开发技术

    千次阅读 2019-08-04 12:16:19
    onlyoffice具有文档转换的功能,就是你给一个文档的地址,以及一些参数,post给document server,它会转换成你要的,然后返回一个文件地址,你收到这个地址,把文件下载下来保存,提供用户下载。 它官网也讲的比较...
  • Office文档加密方式与原理揭秘

    千次阅读 2005-12-29 10:00:00
    Word、Excel和PowerPoint是朋友们在日常学习和工作中经常使用的三个Office组件,然而它们在提高我们工作效率的同时也会让我们担心文档的安全性,因此,为了文档不被他人所查看,我们最好是给这些Office文档加把锁。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,084
精华内容 6,433
关键字:

office文档解析