Commit e70b9d8f94b9d34e3ce90a4698c2ef60d9b4a97f

Authored by Philippe Lagadec
1 parent fa510be7

bumped version and license date for 0.60.2

MANIFEST.in
... ... @@ -8,7 +8,7 @@ include oletools/LICENSE.txt
8 8 include oletools/DocVarDump.vba
9 9 recursive-include oletools/thirdparty *.*
10 10 prune oletools/thirdparty/oledump/old
11   -recursive-include cheatsheet *.*
  11 +recursive-include cheatsheet *.pdf
12 12 global-exclude *.pyc
13 13  
14 14 recursive-include tests *.py
... ...
README.md
... ... @@ -7,8 +7,15 @@ python-oletools
7 7 [oletools](http://www.decalage.info/python/oletools) is a package of python tools to analyze
8 8 [Microsoft OLE2 files](http://en.wikipedia.org/wiki/Compound_File_Binary_Format)
9 9 (also called Structured Storage, Compound File Binary Format or Compound Document File Format),
10   -such as Microsoft Office documents or Outlook messages, mainly for malware analysis, forensics and debugging.
  10 +such as Microsoft Office 97-2003 documents, MSI files or Outlook messages, mainly for malware analysis,
  11 +forensics and debugging.
11 12 It is based on the [olefile](http://www.decalage.info/olefile) parser.
  13 +
  14 +It also provides tools to analyze RTF files and files based on the [OpenXML format](https://en.wikipedia.org/wiki/Office_Open_XML)
  15 +(aka OOXML) such as MS Office 2007+ documents, XPS or MSIX files.
  16 +
  17 +For example, oletools can detect, extract and analyse VBA macros, OLE objects, Excel 4 macros (XLM) and DDE links.
  18 +
12 19 See [http://www.decalage.info/python/oletools](http://www.decalage.info/python/oletools) for more info.
13 20  
14 21 **Quick links:**
... ... @@ -26,6 +33,16 @@ Note: python-oletools is not related to OLETools published by BeCubed Software.
26 33 News
27 34 ----
28 35  
  36 +- **2024-06-27 v0.60.2**:
  37 + - olevba:
  38 + - fixed a bug in open_slk (issue #797, PR #769)
  39 + - fixed a bug due to new PROJECTCOMPATVERSION record in dir stream (PR #723, issues #700, #701, #725, #791, #808, #811, #833)
  40 + - oleobj: fixed SyntaxError with Python 3.12 (PR #855), SyntaxWarning (PR #774)
  41 + - rtfobj: fixed SyntaxError with Python 3.12 (PR #854)
  42 + - clsid: added CLSIDs for MSI, Zed
  43 + - ftguess: added MSI, PNG and OneNote formats
  44 + - pyxswf: fixed python 3.12 compatibility (PR #841, issue #813)
  45 + - setup/requirements: allow pyparsing 3 to solve install issues (PR #812, issue #762)
29 46 - **2022-05-09 v0.60.1**:
30 47 - olevba:
31 48 - fixed a bug when calling XLMMacroDeobfuscator (PR #737)
... ... @@ -54,63 +71,6 @@ News
54 71 - fixed bug in re_executable_extensions
55 72 - crypto: added PowerPoint transparent password '/01Hannes Ruescher/01' (issue #627)
56 73 - setup: XLMMacroDeobfuscator, xlrd2 and pyxlsb2 added as optional dependencies
57   -- **2021-05-07 v0.56.2**:
58   - - olevba:
59   - - updated plugin_biff to v0.0.22 to fix a bug (issues #647, #674)
60   - - olevba, mraptor:
61   - - added detection of Workbook_BeforeClose (issue #518)
62   - - rtfobj:
63   - - fixed bug when OLE package class name ends with null characters (issue #507, PR #648)
64   - - oleid:
65   - - fixed bug in check_excel (issue #584, PR #585)
66   - - clsid:
67   - - added several CLSIDs related to MS Office click-to-run issue CVE-2021-27058
68   - - added checks to ensure that all CLSIDs are uppercase (PR #678)
69   -- **2021-04-02 v0.56.1**:
70   - - olevba:
71   - - fixed bug when parsing some malformed files (issue #629)
72   - - oleobj:
73   - - fixed bug preventing detection of links 'externalReference', 'frame',
74   - 'hyperlink' (issue #641, PR #670)
75   - - setup:
76   - - avoid installing msoffcrypto-tool when platform is PyPy+Windows (issue #473)
77   - - PyPI version is now a wheel package to improve installation and avoid antivirus
78   - false positives due to test files (issues #215, #398)
79   -- **2020-09-28 v0.56**:
80   - - olevba/mraptor:
81   - - added detection of trigger _OnConnecting
82   - - olevba:
83   - - updated plugin_biff to v0.0.17 to improve Excel 4/XLM macros parsing
84   - - added simple analysis of Excel 4/XLM macros in XLSM files (PR #569)
85   - - added detection of template injection (PR #569)
86   - - added detection of many suspicious keywords (PR #591 and #569, see https://www.certego.net/en/news/advanced-vba-macros/)
87   - - improved MHT detection (PR #532)
88   - - added --no-xlm option to disable Excel 4/XLM macros parsing (PR #532)
89   - - fixed bug when decompressing raw chunks in VBA (issue #575)
90   - - fixed bug with email package due to monkeypatch for MHT parsing (issue #602, PR #604)
91   - - fixed option --relaxed (issue #596, PR #595)
92   - - enabled relaxed mode by default (issues #477, #593)
93   - - fixed detect_vba_macros to always return VBA code as
94   - unicode on Python 3 (issues #455, #477, #587, #593)
95   - - replaced option --pcode by --show-pcode and --no-pcode,
96   - replaced optparse by argparse (PR #479)
97   - - oleform: improved form parsing (PR #532)
98   - - oleobj: "Ole10Native" is now case insensitive (issue #541)
99   - - clsid: added PDF (issue #552), Microsoft Word Picture (issue #571)
100   - - ppt_parser: fixed bug on Python 3 (issues #177, #607, PR #450)
101   -- **2019-12-03 v0.55**:
102   - - olevba:
103   - - added support for SLK files and XLM macro extraction from SLK
104   - - VBA Stomping detection
105   - - integrated pcodedmp to extract and disassemble P-code
106   - - detection of suspicious keywords and IOCs in P-code
107   - - new option --pcode to display P-code disassembly
108   - - improved detection of auto execution triggers
109   - - rtfobj: added URL carver for CVE-2017-0199
110   - - better handling of unicode for systems with locale that does not support UTF-8, e.g. LANG=C (PR #365)
111   - - tests:
112   - - test files can now be encrypted, to avoid antivirus alerts (PR #217, issue #215)
113   - - tests that trigger antivirus alerts have been temporarily disabled (issue #215)
114 74  
115 75 See the [full changelog](https://github.com/decalage2/oletools/wiki/Changelog) for more information.
116 76  
... ...
oletools/LICENSE.txt
... ... @@ -3,7 +3,7 @@ LICENSE for the python-oletools package:
3 3 This license applies to the python-oletools package, apart from the thirdparty
4 4 folder which contains third-party files published with their own license.
5 5  
6   -The python-oletools package is copyright (c) 2012-2022 Philippe Lagadec (http://www.decalage.info)
  6 +The python-oletools package is copyright (c) 2012-2024 Philippe Lagadec (http://www.decalage.info)
7 7  
8 8 All rights reserved.
9 9  
... ...
oletools/ftguess.py
... ... @@ -17,7 +17,7 @@ http://www.decalage.info/python/oletools
17 17  
18 18 #=== LICENSE =================================================================
19 19  
20   -# ftguess is copyright (c) 2018-2023, Philippe Lagadec (http://www.decalage.info)
  20 +# ftguess is copyright (c) 2018-2024, Philippe Lagadec (http://www.decalage.info)
21 21 # All rights reserved.
22 22 #
23 23 # Redistribution and use in source and binary forms, with or without modification,
... ... @@ -47,7 +47,7 @@ from __future__ import print_function
47 47 # 2018-07-04 v0.54 PL: - first version
48 48 # 2021-05-09 v0.60 PL: -
49 49  
50   -__version__ = '0.60.2dev3'
  50 +__version__ = '0.60.2'
51 51  
52 52 # ------------------------------------------------------------------------------
53 53 # TODO:
... ...
oletools/msodde.py
... ... @@ -103,7 +103,7 @@ from oletools.common.log_helper import log_helper
103 103 # 2019-07-17 v0.55 CH: - fixed issue #267, unicode error on Python 2
104 104  
105 105  
106   -__version__ = '0.55'
  106 +__version__ = '0.60.2'
107 107  
108 108 # -----------------------------------------------------------------------------
109 109 # TODO: field codes can be in headers/footers/comments - parse these
... ... @@ -435,6 +435,8 @@ def process_doc(ole):
435 435 if is_stream:
436 436 new_parts = process_doc_stream(
437 437 ole._open(direntry.isectStart, direntry.size))
  438 + if new_parts:
  439 + logger.debug("stream %r: %r" % (direntry.name, new_parts))
438 440 links.extend(new_parts)
439 441  
440 442 # mimic behaviour of process_docx: combine links to single text string
... ... @@ -646,7 +648,7 @@ def process_xlsx(filepath):
646 648 """ process an OOXML excel file (e.g. .xlsx or .xlsb or .xlsm) """
647 649 dde_links = []
648 650 parser = ooxml.XmlParser(filepath)
649   - for _, elem, _ in parser.iter_xml():
  651 + for subfilename, elem, _ in parser.iter_xml():
650 652 tag = elem.tag.lower()
651 653 if tag == 'ddelink' or tag.endswith('}ddelink'):
652 654 # we have found a dde link. Try to get more info about it
... ... @@ -656,6 +658,7 @@ def process_xlsx(filepath):
656 658 if 'ddeTopic' in elem.attrib:
657 659 link_info.append(elem.attrib['ddeTopic'])
658 660 dde_links.append(u' '.join(link_info))
  661 + logger.debug('Found tag "%s" in file %s: %s' % (tag, subfilename, repr(link_info)))
659 662  
660 663 # binary parts, e.g. contained in .xlsb
661 664 for subfile, content_type, handle in parser.iter_non_xml():
... ...
oletools/olevba.py
... ... @@ -236,7 +236,7 @@ from __future__ import print_function
236 236 # 2021-04-14 PL: - added detection of Workbook_BeforeClose (issue #518)
237 237 # 2021-11-09 KJ: - added PROJECTCOMPATVERSION Record on dir Stream
238 238  
239   -__version__ = '0.60.2dev5'
  239 +__version__ = '0.60.2'
240 240  
241 241 #------------------------------------------------------------------------------
242 242 # TODO:
... ...
oletools/record_base.py
... ... @@ -10,7 +10,7 @@ ppt_record_parser.py .
10 10  
11 11 # === LICENSE ==================================================================
12 12  
13   -# record_base is copyright (c) 2014-2021 Philippe Lagadec (http://www.decalage.info)
  13 +# record_base is copyright (c) 2014-2024 Philippe Lagadec (http://www.decalage.info)
14 14 # All rights reserved.
15 15 #
16 16 # Redistribution and use in source and binary forms, with or without
... ... @@ -44,7 +44,7 @@ from __future__ import print_function
44 44 # and dev version
45 45 # 2019-05-24 CH: - use log_helper
46 46  
47   -__version__ = '0.60.dev1'
  47 +__version__ = '0.60.2'
48 48  
49 49 # -----------------------------------------------------------------------------
50 50 # TODO:
... ...
setup.py
... ... @@ -55,12 +55,12 @@ import os, fnmatch
55 55 #--- METADATA -----------------------------------------------------------------
56 56  
57 57 name = "oletools"
58   -version = '0.60.2dev6'
  58 +version = '0.60.2'
59 59 desc = "Python tools to analyze security characteristics of MS Office and OLE files (also called Structured Storage, Compound File Binary Format or Compound Document File Format), for Malware Analysis and Incident Response #DFIR"
60 60 long_desc = open('oletools/README.rst').read()
61 61 author = "Philippe Lagadec"
62 62 author_email = "nospam@decalage.info"
63   -url = "http://www.decalage.info/python/oletools"
  63 +url = "https://github.com/decalage2/oletools"
64 64 license = "BSD"
65 65 download_url = "https://github.com/decalage2/oletools/releases"
66 66  
... ...