Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Created a filesystem abstraction around IDA's netnode API to allow interacting with large files in the database. #70

Open
wants to merge 13 commits into
base: master
Choose a base branch
from

Conversation

arizvisa
Copy link
Owner

@arizvisa arizvisa commented Aug 13, 2020

This PR wraps the IDAPython netnode API (supvals, and blobs) in order to allow the storage of arbitrarily-named and arbitrarily-sized files in a database. This is done using two types of netnodes. The $ filesystem.index netnode contains the directory index which is flat and is treated pretty much like a keystore, and then the $ filesystem.contents netnode which is responsible for containing the actual contents of the files described in the directory index.

Normally one could use the netnode API and simply store their contents in a blob, but due to the way IDAPython exposes this API the entire contents of the blob needs to be completely loaded into memory when reading or writing. The filesystem abstraction implemented by this PR thus allows a user to storage arbitrarily-large files and read them as an i/o stream instead of having to load the entire contents of the file in memory.

This feature was suggested in issue #8 and aims to close it.

…stem index with support for a dirty cache to do partial updates.
… an exception if the user tries to add a non-unique name.
… and fixed the way free-blocks were determined.
…allow reusing of blocks until they're completely empty.
…mmit()` as the semantics of the new name are more accurate.
… index class, and cleaned up their verbiage a bit.
@arizvisa arizvisa self-assigned this Aug 13, 2020
…so that the name (which should change less) is followed by the content.
…le so that it only contains sizes and the allocation table.
…ssistance with keeping track of interval overlap.
@arizvisa arizvisa force-pushed the master branch 2 times, most recently from 6872422 to af07f16 Compare December 3, 2023 05:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant