Commit f41fe3655d2a9b46affbcdaff10a5b2f2a13e940
1 parent
10e0f16c
olemeta: added main function for entry points in setup.py - issue #69
Showing
2 changed files
with
56 additions
and
49 deletions
oletools/olemeta.py
| ... | ... | @@ -15,7 +15,7 @@ http://www.decalage.info/python/oletools |
| 15 | 15 | |
| 16 | 16 | #=== LICENSE ================================================================= |
| 17 | 17 | |
| 18 | -# olemeta is copyright (c) 2013-2015, Philippe Lagadec (http://www.decalage.info) | |
| 18 | +# olemeta is copyright (c) 2013-2016, Philippe Lagadec (http://www.decalage.info) | |
| 19 | 19 | # All rights reserved. |
| 20 | 20 | # |
| 21 | 21 | # Redistribution and use in source and binary forms, with or without modification, |
| ... | ... | @@ -44,8 +44,9 @@ http://www.decalage.info/python/oletools |
| 44 | 44 | # 2014-11-29 v0.02 PL: - use olefile instead of OleFileIO_PL |
| 45 | 45 | # - improved usage display |
| 46 | 46 | # 2015-12-29 v0.03 PL: - only display properties present in the file |
| 47 | +# 2016-09-06 v0.50 PL: - added main entry point for setup.py | |
| 47 | 48 | |
| 48 | -__version__ = '0.03' | |
| 49 | +__version__ = '0.50' | |
| 49 | 50 | |
| 50 | 51 | #------------------------------------------------------------------------------ |
| 51 | 52 | # TODO: |
| ... | ... | @@ -63,50 +64,54 @@ from thirdparty.tablestream import tablestream |
| 63 | 64 | |
| 64 | 65 | #=== MAIN ================================================================= |
| 65 | 66 | |
| 66 | -try: | |
| 67 | - ole = olefile.OleFileIO(sys.argv[1]) | |
| 68 | -except IndexError: | |
| 69 | - sys.exit(__doc__) | |
| 70 | - | |
| 71 | -# parse and display metadata: | |
| 72 | -meta = ole.get_metadata() | |
| 73 | - | |
| 74 | -# console output with UTF8 encoding: | |
| 75 | -console_utf8 = codecs.getwriter('utf8')(sys.stdout) | |
| 76 | - | |
| 77 | -# TODO: move similar code to a function | |
| 78 | - | |
| 79 | -print('Properties from the SummaryInformation stream:') | |
| 80 | -t = tablestream.TableStream([21, 30], header_row=['Property', 'Value'], outfile=console_utf8) | |
| 81 | -for prop in meta.SUMMARY_ATTRIBS: | |
| 82 | - value = getattr(meta, prop) | |
| 83 | - if value is not None: | |
| 84 | - # TODO: pretty printing for strings, dates, numbers | |
| 85 | - # TODO: better unicode handling | |
| 86 | - # print('- %s: %s' % (prop, value)) | |
| 87 | - if isinstance(value, unicode): | |
| 88 | - # encode to UTF8, avoiding errors | |
| 89 | - value = value.encode('utf-8', errors='replace') | |
| 90 | - else: | |
| 91 | - value = str(value) | |
| 92 | - t.write_row([prop, value], colors=[None, 'yellow']) | |
| 93 | -t.close() | |
| 94 | -print '' | |
| 95 | - | |
| 96 | -print('Properties from the DocumentSummaryInformation stream:') | |
| 97 | -t = tablestream.TableStream([21, 30], header_row=['Property', 'Value'], outfile=console_utf8) | |
| 98 | -for prop in meta.DOCSUM_ATTRIBS: | |
| 99 | - value = getattr(meta, prop) | |
| 100 | - if value is not None: | |
| 101 | - # TODO: pretty printing for strings, dates, numbers | |
| 102 | - # TODO: better unicode handling | |
| 103 | - # print('- %s: %s' % (prop, value)) | |
| 104 | - if isinstance(value, unicode): | |
| 105 | - # encode to UTF8, avoiding errors | |
| 106 | - value = value.encode('utf-8', errors='replace') | |
| 107 | - else: | |
| 108 | - value = str(value) | |
| 109 | - t.write_row([prop, value], colors=[None, 'yellow']) | |
| 110 | -t.close() | |
| 111 | - | |
| 112 | -ole.close() | |
| 67 | +def main(): | |
| 68 | + try: | |
| 69 | + ole = olefile.OleFileIO(sys.argv[1]) | |
| 70 | + except IndexError: | |
| 71 | + sys.exit(__doc__) | |
| 72 | + | |
| 73 | + # parse and display metadata: | |
| 74 | + meta = ole.get_metadata() | |
| 75 | + | |
| 76 | + # console output with UTF8 encoding: | |
| 77 | + console_utf8 = codecs.getwriter('utf8')(sys.stdout) | |
| 78 | + | |
| 79 | + # TODO: move similar code to a function | |
| 80 | + | |
| 81 | + print('Properties from the SummaryInformation stream:') | |
| 82 | + t = tablestream.TableStream([21, 30], header_row=['Property', 'Value'], outfile=console_utf8) | |
| 83 | + for prop in meta.SUMMARY_ATTRIBS: | |
| 84 | + value = getattr(meta, prop) | |
| 85 | + if value is not None: | |
| 86 | + # TODO: pretty printing for strings, dates, numbers | |
| 87 | + # TODO: better unicode handling | |
| 88 | + # print('- %s: %s' % (prop, value)) | |
| 89 | + if isinstance(value, unicode): | |
| 90 | + # encode to UTF8, avoiding errors | |
| 91 | + value = value.encode('utf-8', errors='replace') | |
| 92 | + else: | |
| 93 | + value = str(value) | |
| 94 | + t.write_row([prop, value], colors=[None, 'yellow']) | |
| 95 | + t.close() | |
| 96 | + print '' | |
| 97 | + | |
| 98 | + print('Properties from the DocumentSummaryInformation stream:') | |
| 99 | + t = tablestream.TableStream([21, 30], header_row=['Property', 'Value'], outfile=console_utf8) | |
| 100 | + for prop in meta.DOCSUM_ATTRIBS: | |
| 101 | + value = getattr(meta, prop) | |
| 102 | + if value is not None: | |
| 103 | + # TODO: pretty printing for strings, dates, numbers | |
| 104 | + # TODO: better unicode handling | |
| 105 | + # print('- %s: %s' % (prop, value)) | |
| 106 | + if isinstance(value, unicode): | |
| 107 | + # encode to UTF8, avoiding errors | |
| 108 | + value = value.encode('utf-8', errors='replace') | |
| 109 | + else: | |
| 110 | + value = str(value) | |
| 111 | + t.write_row([prop, value], colors=[None, 'yellow']) | |
| 112 | + t.close() | |
| 113 | + | |
| 114 | + ole.close() | |
| 115 | + | |
| 116 | +if __name__ == '__main__': | |
| 117 | + main() | |
| 113 | 118 | \ No newline at end of file | ... | ... |
setup.py
| ... | ... | @@ -271,8 +271,10 @@ entry_points = { |
| 271 | 271 | 'oleid=oletools.oleid:main', |
| 272 | 272 | 'oledir=oletools.oledir:main', |
| 273 | 273 | 'olemap=oletools.olemap:main', |
| 274 | + 'olemeta=oletools.olemeta:main', | |
| 274 | 275 | 'oletimes=oletools.oletimes:main', |
| 275 | 276 | 'pyxswf=oletools.pyxswf:main', |
| 277 | + 'ezhexviewer=oletools.ezhexviewer:main', | |
| 276 | 278 | 'rtfobj=oletools.rtfobj:main' |
| 277 | 279 | ], |
| 278 | 280 | } | ... | ... |