def dump (self): file = open(self.filepath, 'rb') strm = pptstream.PPTFile(file.read(), self.params) file.close() strm.printStreamInfo() strm.printHeader() strm.printDirectory() dirnames = strm.getDirectoryNames() result = True for dirname in dirnames: sdirname = globals.nulltrunc(dirname) if len(sdirname) == 0 or sdirname == b"Root Entry": continue try: dirstrm = strm.getDirectoryStreamByName(dirname) except Exception as err: error("getDirectoryStreamByName(%s): %s\n" % (dirname,str(err))) # The previous version was killed by the exception # here, so the equivalent is to break, but maybe there # is no reason to do so. break self.__printDirHeader(dirname, len(dirstrm.bytes)) if sdirname == b"PowerPoint Document": if not self.__readSubStream(dirstrm): result = False elif sdirname == b"Current User": if not self.__readSubStream(dirstrm): result = False elif sdirname == b"\x05DocumentSummaryInformation": strm = olestream.PropertySetStream(dirstrm.bytes) strm.read() else: globals.dumpBytes(dirstrm.bytes, 512) return result
def dump(self): file = open(self.filepath, 'rb') strm = pptstream.PPTFile(file.read(), self.params) file.close() strm.printStreamInfo() strm.printHeader() strm.printDirectory() dirnames = strm.getDirectoryNames() result = True for dirname in dirnames: if len(dirname) == 0 or dirname == 'Root Entry': continue try: dirstrm = strm.getDirectoryStreamByName(dirname) except Exception as err: error("getDirectoryStreamByName(%s): %s - %s\n" % (dirname, str(err), self.filepath)) # The previous version was killed by the exception # here, so the equivalent is to break, but maybe there # is no reason to do so. break self.__printDirHeader(dirname, len(dirstrm.bytes)) if dirname == "PowerPoint Document": if not self.__readSubStream(dirstrm): result = False elif dirname == "Current User": if not self.__readSubStream(dirstrm): result = False elif dirname == "\x05DocumentSummaryInformation": strm = olestream.PropertySetStream(dirstrm.bytes) strm.read() else: globals.dumpBytes(dirstrm.bytes, 512) return result
def main(): parser = optparse.OptionParser() options, args = parser.parse_args() if len(args) < 1: globals.error("takes at least one argument\n") parser.print_help() sys.exit(1) dumper = WMFDumper(args[0]) dumper.dump()
def main(args): exname, args = args[0], args[1:] if len(args) < 1: print("takes at least one argument") usage(exname) return try: opts, args = getopt.getopt(args, "h", [ "help", "debug", "show-sector-chain", "no-struct-output", "dump-text", "id-select=", "no-raw-dumps" ]) for opt, arg in opts: if opt in ['-h', '--help']: usage(exname) return elif opt in ['--debug']: globals.params.debug = True elif opt in ['--show-sector-chain']: globals.params.showSectorChain = True elif opt in ['--no-struct-output']: globals.params.noStructOutput = True elif opt in ['--dump-text']: globals.params.dumpText = True elif opt in ['--no-raw-dumps']: globals.params.noRawDumps = True elif opt in ['--id-select']: globals.params.dumpedIds = arg.split(",") globals.params.dumpedIds = \ set([int(val) for val in globals.params.dumpedIds if val]) else: error("unknown option %s\n" % opt) usage() except getopt.GetoptError: error("error parsing input options\n") usage(exname) return false status = True try: dumper = PPTDumper(args[0], globals.params) if not dumper.dump(): error("ppt-dump: dump error " + args[0] + "\n") status = False except: error("ppt-dump: FAILURE (bad format?) " + args[0] + "\n") status = False if globals.params.dumpText: print(globals.textdump.replace("\r", "\n")) return (status)
def main(args): exname, args = args[0], args[1:] if len(args) < 1: print("takes at least one argument") usage(exname) return try: opts, args = getopt.getopt(args, "h", [ "help", "debug", "show-sector-chain", "no-struct-output", "dump-text", "id-select=", "no-raw-dumps" ]) for opt, arg in opts: if opt in ['-h', '--help']: usage(exname) return elif opt in ['--debug']: globals.params.debug = True elif opt in ['--show-sector-chain']: globals.params.showSectorChain = True elif opt in ['--no-struct-output']: globals.params.noStructOutput = True elif opt in ['--dump-text']: globals.params.dumpText = True elif opt in ['--no-raw-dumps']: globals.params.noRawDumps = True elif opt in ['--id-select']: globals.params.dumpedIds = arg.split(",") globals.params.dumpedIds = \ set([int(val) for val in globals.params.dumpedIds if val]) else: error("unknown option %s\n" % opt) usage() except getopt.GetoptError: error("error parsing input options\n") usage(exname) return try: dumper = PPTDumper(args[0], globals.params) if not dumper.dump(): error("FAILURE\n") if globals.params.dumpText: globals.dumptext() except Exception as ex: traceback.print_exc() error("Could not parse") sys.exit(1)
def main (): parser = optparse.OptionParser() parser.add_option("-d", "--debug", action="store_true", dest="debug", default=False, help="Turn on debug mode") parser.add_option("--show-sector-chain", action="store_true", dest="show_sector_chain", default=False, help="Show sector chain information at the start of the output.") parser.add_option("--show-stream-pos", action="store_true", dest="show_stream_pos", default=False, help="Show the position of each record relative to the stream.") parser.add_option("--dump-mode", dest="dump_mode", default="flat", metavar="MODE", help="Specify the dump mode. Possible values are: 'flat', 'xml', or 'canonical-xml'. The default value is 'flat'.") parser.add_option("--catch", action="store_true", dest="catch_exceptions", default=False, help="Catch exceptions and try to continue.") parser.add_option("--utf-8", action="store_true", dest="utf8", default=False, help="Output strings as UTF-8.") options, args = parser.parse_args() params = globals.params params.debug = options.debug params.showSectorChain = options.show_sector_chain params.showStreamPos = options.show_stream_pos params.catchExceptions = options.catch_exceptions params.utf8 = options.utf8 if len(args) < 1: globals.error("takes at least one argument\n") parser.print_help() sys.exit(1) dumper = XLDumper(args[0], params) if options.dump_mode == 'flat': dumper.dump() elif options.dump_mode == 'xml': dumper.dumpXML() elif options.dump_mode == 'canonical-xml' or options.dump_mode == 'cxml': dumper.dumpCanonicalXML() else: error("unknown dump mode: '%s'\n"%options.dump_mode) parser.print_help() sys.exit(1)
def main (args): exname, args = args[0], args[1:] if len(args) < 1: print("takes at least one argument") usage(exname) return try: opts, args = getopt.getopt(args, "h", ["help", "debug", "show-sector-chain", "no-struct-output", "dump-text", "id-select=", "no-raw-dumps"]) for opt, arg in opts: if opt in ['-h', '--help']: usage(exname) return elif opt in ['--debug']: globals.params.debug = True elif opt in ['--show-sector-chain']: globals.params.showSectorChain = True elif opt in ['--no-struct-output']: globals.params.noStructOutput = True elif opt in ['--dump-text']: globals.params.dumpText = True elif opt in ['--no-raw-dumps']: globals.params.noRawDumps = True elif opt in ['--id-select']: globals.params.dumpedIds = arg.split(",") globals.params.dumpedIds = \ set([int(val) for val in globals.params.dumpedIds if val]) else: error("unknown option %s\n"%opt) usage() except getopt.GetoptError: error("error parsing input options\n") usage(exname) return dumper = PPTDumper(args[0], globals.params) if not dumper.dump(): error("FAILURE\n") if globals.params.dumpText: globals.dumptext()
def __readCompObjStream (self, dirstrm): try: strm = olestream.CompObjStream(dirstrm.bytes) strm.read() except olestream.CompObjStreamError: globals.error("failed to parse CompObj stream.\n")
else: #?? sys.stdout.write("%s%s" % (value.encode("UTF-8"), sepstring)) elif name == "formula-cell": if "formula-result" in attrs and "col" in attrs: self.cells[int(attrs["col"])] = \ attrs["formula-result"].encode("UTF-8") def endElement( self, name, ): if name == "row": curidx = 0 for idx, value in self.cells.iteritems(): sys.stdout.write(sepstring * (idx - curidx)) sys.stdout.write('%s%s%s' % (dquote, value, dquote)) curidx = idx sys.stdout.write("\n") elif name == "worksheet": print("") try: xml.sax.parse(sys.stdin, XlsXmlHandler()) except BaseException as err: error("xml-parse: %s\n" % (str(sys.exc_info()[:2]), )) sys.exit(1) sys.exit(0)
def __readCompObjStream(self, dirstrm): try: strm = olestream.CompObjStream(dirstrm.bytes) strm.read() except olestream.CompObjStreamError: globals.error("failed to parse CompObj stream.\n")
else: value = unicode() if "col" in attrs: self.cells[int(attrs["col"])] = value else: # ?? sys.stdout.write("%s%s" % (value.encode("UTF-8"), sepstring)) elif name == "formula-cell": if "formula-result" in attrs and "col" in attrs: self.cells[int(attrs["col"])] = attrs["formula-result"].encode("UTF-8") def endElement(self, name): if name == "row": curidx = 0 for idx, value in self.cells.iteritems(): sys.stdout.write(sepstring * (idx - curidx)) sys.stdout.write("%s%s%s" % (dquote, value, dquote)) curidx = idx sys.stdout.write("\n") elif name == "worksheet": print("") try: xml.sax.parse(sys.stdin, XlsXmlHandler()) except BaseException as err: error("xml-parse: %s\n" % (str(sys.exc_info()[:2]),)) sys.exit(1) sys.exit(0)