pe
- class pydecipher.artifact_types.pe.PortableExecutable(pe_path_or_bytes: str | PathLike | BinaryIO, output_dir: PathLike | None = None, **kwargs)
The artifact class representing a Portable Executable Windows binary.
Much of the functionality is just an augmentation of the pefile library to aid in analysis of python packaged artifacts.
- file_path
If this artifact comes from a file on disk, this is the path to that file.
- Type:
pathlib.Path, optional
- file_contents
The contents of the file read into memory.
- Type:
bytes
- output_dir
Where any output extracted from this artifact should get dumped.
- Type:
os.PathLike
- python_version
The version of Python used to create this frozen artifact.
- Type:
str
- overlay
The overlay of the PE (the data that is appended to the binary).
- Type:
bytes
- pe
The pefile library PE object for this file.
- Type:
pefile.PE
- version_info
The version info resource of this executable stored as key:value pairs.
- Type:
Dict[bytes, bytes]
- certificates_dumped
Whether or not the certificates (if they exist in the PE) have been dumped to the output directory on disk.
- Type:
bool
- INTERESTING_RESOURCES
String-matching patterns for resources that should be dumped to disk if found within a PE.
- Type:
List[str]
- kwargs
Any keyword arguments needed for the parsing of this artifact, or for parsing nested artifacts.
- Type:
Any
- Raises:
TypeError – Will raise a TypeError if the file_path_or_bytes item is not a recognizable PE object.
- dump_certificates(output_dir: Path | None = None) None
Dump Authenticode certificates from the PE’s certificate attribute table.
- Parameters:
output_dir (pathlib.Path, optional) – An optional alternative output directory to dump the certificates, besides the class’s output directory.
- dump_overlay() Path
Check to see if this binary has data appended, and if so, dump it for further analysis.
python’s pefile library puts the certificate table in the overlay section even though its not really traditional overlay data.
Relevant links: https://github.com/erocarrera/pefile/issues/104#issuecomment-429037686 https://www.cs.auckland.ac.nz/~pgut001/pubs/authenticode.txt https://blog.barthe.ph/2009/02/22/change-signed-executable/
- Returns:
The path to the dumped overlay on disk.
- Return type:
pathlib.Path
- dump_resource(resource_name: str) Path
Dump the specified resource to the output directory on disk.
- Parameters:
resource_name – The name of the resource within the PE’s resources to extract.
- Returns:
The path to the dumped resource.
- Return type:
pathlib.Path
- load_version_info(quiet: bool = False) None
Extract the VersionInfo dictionary from the pefile.PE object.
If pydecipher is running in anything but ‘quiet’ mode, it will print the version info to the log. Additionally, it will search for Python version strings within the version info.
- Parameters:
quiet (bool, optional) – Whether or not to print the version info dictionary to the log.
- unpack() None
Dump any interesting aspects of this PE for further investigation.
This will log the PEs version info resource for manual inspection, dump any Authenticode certificates, and look for frozen Python artifacts within the PE’s resources and overlay.