Commit e70b9d8f94b9d34e3ce90a4698c2ef60d9b4a97f
1 parent
fa510be7
bumped version and license date for 0.60.2
Showing
8 changed files
with
32 additions
and
69 deletions
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 | ... | ... |