extfs.py
ofrak.core.extfs
Ext2Filesystem (ExtFilesystem)
dataclass
Linux EXT2 filesystem.
Ext3Filesystem (ExtFilesystem)
dataclass
Linux EXT3 filesystem.
Ext4Filesystem (ExtFilesystem)
dataclass
Linux EXT4 filesystem.
ExtFilesystem (GenericBinary, FilesystemRoot)
dataclass
ExtFilesystem()
ExtUnpacker (Unpacker)
Unpack a Linux EXT filesystem.
unpack(self, resource, config=None)
async
Unpack the given resource.
Users should not call this method directly; rather, they should run Resource.run or Resource.unpack.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
resource |
Resource |
The resource that is being unpacked |
required |
config |
ComponentConfig |
Optional config for unpacking. If an implementation provides a default, this default will always be used when config would otherwise be None. Note that a copy of the default config will be passed, so the default config values cannot be modified persistently by a component run. |
None |
Source code in ofrak/core/extfs.py
async def unpack(self, resource: Resource, config: ComponentConfig = None) -> None:
with tempfile.NamedTemporaryFile(suffix=".extfs") as temp_fs_file:
temp_fs_file.write(await resource.get_data())
temp_fs_file.flush()
with tempfile.TemporaryDirectory() as temp_dir:
command = [
"debugfs",
"-R",
f"rdump / {temp_dir}",
temp_fs_file.name,
]
proc = await asyncio.create_subprocess_exec(
*command,
)
returncode = await proc.wait()
if returncode:
raise CalledProcessError(returncode=returncode, cmd=command)
fs_view = await resource.view_as(ExtFilesystem)
await fs_view.initialize_from_disk(temp_dir)