def main(): usage = "%prog olefile sid" description = "\n".join([ "Displays statistics about entries in an OLE compound file.", "", "If file is '-' then stdin is read." ]) parser = OptionParser( usage=usage, description=description, version=VERSION_STR ) (options, args) = parser.parse_args() if len(args) < 2: parser.error("Must specify both a file and stream identifier") # end if if args[0] == "-": cfb = CompoundFile(ByteIStream(sys.stdin.buffer.read())) else: cfb = CompoundFile(RawIStream(args[0])) # end if sid = int(args[1]) last_sid = len(cfb.dir_entries) header_sid = last_sid + 0 difat_sid = last_sid + 1 fat_sid = last_sid + 2 mini_fat_sid = last_sid + 3 if sid in cfb.dir_entries: entry = cfb.dir_entries[sid] if cfb.is_valid_dir_entry(entry): output = format_entry(cfb, sid) else: print("Invalid sid {0}".format(sid), file=sys.stderr) sys.exit(-2) # end if elif sid == header_sid: output = format_header(cfb) elif sid == difat_sid: output = format_di_fat(cfb) elif sid == fat_sid: output = format_fat(cfb) elif sid == mini_fat_sid: output = format_mini_fat(cfb) else: print("Invalid sid {0}".format(sid), file=sys.stderr) sys.exit(-3) # end if print ("\n".join(output))
def main(): usage = "%prog [options] olefile [dir. entry #]" description = "\n".join([ "Lists entries in an OLE compound file.", "", "If file is '-', then stdin is read.", "If a directory entry number is not specified, root is assumed." ]) parser = OptionParser( usage=usage, description=description, version=VERSION_STR ) parser.add_option( "-D", dest="only_dirs", action="store_true", help="Display only directories (storages)", default=False ) parser.add_option( "-F", dest="only_files", action="store_true", help="Display only files (streams)", default=False ) parser.add_option( "-l", dest="long_output", action="store_true", help="Display details in long format", default=False ) parser.add_option( "-m", metavar="PATH", dest="mactime_filename", action="store", help="Display details in mactime format (prefixed by PATH)" ) parser.add_option( "-p", dest="display_full_path", action="store_true", help="Display full path when recursing", default=False ) parser.add_option( "-r", dest="recurse", action="store_true", help="Recurse into sub-directories", default=False ) (options, args) = parser.parse_args() if options.only_dirs and options.only_files: parser.error("Can't specify both -D and -F") elif options.long_output and options.mactime_filename: parser.error("Can't specify both -l and -m") # end if if (len(args) < 1) or (len(args) > 2): parser.error("Invalid number of arguments") sys.exit(-1) # end if if args[0] == "-": cfb = CompoundFile(ByteIStream(sys.stdin.buffer.read())) else: cfb = CompoundFile(RawIStream(args[0])) # end if if len(args) == 1: start_sid = DEFAULT_START_SID else: start_sid = int(args[1]) # end if if start_sid in cfb.dir_entries: entry = cfb.dir_entries[start_sid] if cfb.is_valid_dir_entry(entry): entries = enumerate_entries(cfb, start_sid, options) if options.mactime_filename: path = "".join([options.mactime_filename, "/"]) else: path = "" # end if output = format_output(cfb, entries, options, path) else: print("Invalid directory {0}".format(start_sid), file=sys.stderr) sys.exit(-2) # end if else: print("Invalid directory {0}".format(start_sid), file=sys.stderr) sys.exit(-3) # end if print("\n".join(output))
def main(): usage = "%prog [options] olefile [dir. entry #]" description = "\n".join([ "Lists entries in an OLE compound file.", "", "If file is '-', then stdin is read.", "If a directory entry number is not specified, root is assumed." ]) parser = OptionParser(usage=usage, description=description, version=VERSION_STR) parser.add_option("-D", dest="only_dirs", action="store_true", help="Display only directories (storages)", default=False) parser.add_option("-F", dest="only_files", action="store_true", help="Display only files (streams)", default=False) parser.add_option("-l", dest="long_output", action="store_true", help="Display details in long format", default=False) parser.add_option( "-m", metavar="PATH", dest="mactime_filename", action="store", help="Display details in mactime format (prefixed by PATH)") parser.add_option("-p", dest="display_full_path", action="store_true", help="Display full path when recursing", default=False) parser.add_option("-r", dest="recurse", action="store_true", help="Recurse into sub-directories", default=False) (options, args) = parser.parse_args() if options.only_dirs and options.only_files: parser.error("Can't specify both -D and -F") elif options.long_output and options.mactime_filename: parser.error("Can't specify both -l and -m") # end if if (len(args) < 1) or (len(args) > 2): parser.error("Invalid number of arguments") sys.exit(-1) # end if if args[0] == "-": cfb = CompoundFile(ByteIStream(sys.stdin.buffer.read())) else: cfb = CompoundFile(RawIStream(args[0])) # end if if len(args) == 1: start_sid = DEFAULT_START_SID else: start_sid = int(args[1]) # end if if start_sid in cfb.dir_entries: entry = cfb.dir_entries[start_sid] if cfb.is_valid_dir_entry(entry): entries = enumerate_entries(cfb, start_sid, options) if options.mactime_filename: path = "".join([options.mactime_filename, "/"]) else: path = "" # end if output = format_output(cfb, entries, options, path) else: print("Invalid directory {0}".format(start_sid), file=sys.stderr) sys.exit(-2) # end if else: print("Invalid directory {0}".format(start_sid), file=sys.stderr) sys.exit(-3) # end if print("\n".join(output))