diff options
Diffstat (limited to 'python/binaryview.py')
| -rw-r--r-- | python/binaryview.py | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/python/binaryview.py b/python/binaryview.py index 76def834..e6e0ff61 100644 --- a/python/binaryview.py +++ b/python/binaryview.py @@ -266,12 +266,6 @@ class _BinaryViewTypeMetaclass(type): raise KeyError("'%s' is not a valid view type" % str(value)) return BinaryViewType(view_type) - def __setattr__(self, name, value): - try: - type.__setattr__(self, name, value) - except AttributeError: - raise AttributeError("attribute '%s' is read only" % name) - class BinaryViewType(object): __metaclass__ = _BinaryViewTypeMetaclass @@ -304,6 +298,27 @@ class BinaryViewType(object): return None return self.create(data) + @classmethod + def get_view_of_file(cls, filename, update_analysis=True): + """ + ``get_view_of_file`` returns the first available, non-Raw `BinaryView` available. + + :param str filename: Path to filename + :param bool update_analysis: defaults to True. Pass False to not run update_analysis_and_wait. + :return: returns a BinaryView object for the given filename. + :rtype: BinaryView or None + """ + view = BinaryView.open(filename) + if view is None: + return None + for available in view.available_view_types: + if available.name != "Raw": + bv = cls[available.name].open(filename) + if update_analysis: + bv.update_analysis_and_wait() + return bv + return None + def is_valid_for_data(self, data): return core.BNIsBinaryViewTypeValidForData(self.handle, data.handle) @@ -328,12 +343,6 @@ class BinaryViewType(object): return None return platform.Platform(None, plat) - def __setattr__(self, name, value): - try: - object.__setattr__(self, name, value) - except AttributeError: - raise AttributeError("attribute '%s' is read only" % name) - class Segment(object): def __init__(self, start, length, data_offset, data_length, flags): @@ -467,7 +476,7 @@ class BinaryView(object): if file_metadata is None: file_metadata = filemetadata.FileMetadata() self.handle = core.BNCreateBinaryDataView(file_metadata.handle) - self.file = filemetadata.FileMetadata(handle=core.BNNewFileReference(file_metadata)) + self.file = filemetadata.FileMetadata(handle=core.BNNewFileReference(file_metadata.handle)) else: startup._init_plugins() if not self.__class__._registered: |
