def browse_stream (ole, stream): """ Browse a stream (hex view or save to file) """ #print 'stream:', stream while True: msg ='Select an action for the stream "%s", or press Esc to exit' % repr(stream) actions = [ 'Hex view', ## 'Text view', ## 'Repr view', 'Save stream to file', '~ Back to main menu', ] action = easygui.choicebox(msg, title='olebrowse', choices=actions) if action is None or 'Back' in action: break elif action.startswith('Hex'): data = ole.openstream(stream).getvalue() ezhexviewer.hexview_data(data, msg='Stream: %s' % stream, title='olebrowse') ## elif action.startswith('Text'): ## data = ole.openstream(stream).getvalue() ## easygui.codebox(title='Text view - %s' % stream, text=data) ## elif action.startswith('Repr'): ## data = ole.openstream(stream).getvalue() ## easygui.codebox(title='Repr view - %s' % stream, text=repr(data)) elif action.startswith('Save'): data = ole.openstream(stream).getvalue() fname = easygui.filesavebox(default='stream.bin') if fname is not None: f = open(fname, 'wb') f.write(data) f.close() easygui.msgbox('stream saved to file %s' % fname)
def main(): """ Main function """ try: filename = sys.argv[1] except: filename = easygui.fileopenbox() try: ole = olefile.OleFileIO(filename) listdir = ole.listdir() streams = [] for direntry in listdir: #print direntry streams.append('/'.join(direntry)) streams.append(ABOUT) streams.append(QUIT) stream = True while stream is not None: msg = "Select a stream, or press Esc to exit" title = "olebrowse" stream = easygui.choicebox(msg, title, streams) if stream is None or stream == QUIT: break if stream == ABOUT: about() else: browse_stream(ole, stream) except: easygui.exceptionbox()
def main(): """ Main function """ try: filename = sys.argv[1] except: filename = easygui.fileopenbox() try: ole = olefile.OleFileIO(filename) listdir = ole.listdir() streams = [] for direntry in listdir: #print direntry streams.append('/'.join(direntry)) streams.append(ABOUT) streams.append(QUIT) stream = True while stream is not None: msg ="Select a stream, or press Esc to exit" title = "olebrowse" stream = easygui.choicebox(msg, title, streams) if stream is None or stream == QUIT: break if stream == ABOUT: about() else: browse_stream(ole, stream) except: easygui.exceptionbox()
def browse_stream(ole, stream): """ Browse a stream (hex view or save to file) """ #print 'stream:', stream while True: msg = 'Select an action for the stream "%s", or press Esc to exit' % repr( stream) actions = [ 'Hex view', ## 'Text view', ## 'Repr view', 'Save stream to file', '~ Back to main menu', ] action = easygui.choicebox(msg, title='olebrowse', choices=actions) if action is None or 'Back' in action: break elif action.startswith('Hex'): data = ole.openstream(stream).getvalue() ezhexviewer.hexview_data(data, msg='Stream: %s' % stream, title='olebrowse') ## elif action.startswith('Text'): ## data = ole.openstream(stream).getvalue() ## easygui.codebox(title='Text view - %s' % stream, text=data) ## elif action.startswith('Repr'): ## data = ole.openstream(stream).getvalue() ## easygui.codebox(title='Repr view - %s' % stream, text=repr(data)) elif action.startswith('Save'): data = ole.openstream(stream).getvalue() fname = easygui.filesavebox(default='stream.bin') if fname is not None: f = open(fname, 'wb') f.write(data) f.close() easygui.msgbox('stream saved to file %s' % fname)