Architecture Overview¶
CHIPSEC Architecture¶
Core components¶
chipsec_main.pymain application logic and automation functions
chipsec_util.pyutility functions (access to various hardware resources)
chipsec/chipset.pychipset detection
chipsec/command.pybase class for util commands
chipsec/defines.pycommon defines
chipsec/file.pyreading from/writing to files
chipsec/logger.pylogging functions
chipsec/module.pygeneric functions to import and load modules
chipsec/module_common.pybase class for modules
chipsec/result_deltas.pysupports checking result deltas between test runs
chipsec/testcase.pysupport for XML and JSON log file output
chipsec/helper/helpers.pyregistry of supported OS helpers
chipsec/helper/oshelper.pyOS helper: wrapper around platform specific code that invokes kernel driver
Commands¶
Implement functionality of chipsec_util.
CHIPSEC utilities provide the capability for manual testing and direct hardware access.
Warning
DIRECT HARDWARE ACCESS PROVIDED BY THESE UTILITIES COULD MAKE YOUR SYSTEM UNBOOTABLE. MAKE SURE YOU KNOW WHAT YOU ARE DOING!
Note
All numeric values in the instructions are in hex.
- List of Utility components
- chipsec.utilcmd.acpi_cmd module
- chipsec.utilcmd.chipset_cmd module
- chipsec.utilcmd.cmos_cmd module
- chipsec.utilcmd.config_cmd module
- chipsec.utilcmd.cpu_cmd module
- chipsec.utilcmd.decode_cmd module
- chipsec.utilcmd.deltas_cmd module
- chipsec.utilcmd.desc_cmd module
- chipsec.utilcmd.ec_cmd module
- chipsec.utilcmd.igd_cmd module
- chipsec.utilcmd.interrupts_cmd module
- chipsec.utilcmd.io_cmd module
- chipsec.utilcmd.iommu_cmd module
- chipsec.utilcmd.lock_check_cmd module
- chipsec.utilcmd.mem_cmd module
- chipsec.utilcmd.mmcfg_base_cmd module
- chipsec.utilcmd.mmcfg_cmd module
- chipsec.utilcmd.mmio_cmd module
- chipsec.utilcmd.module_id_cmd module
- chipsec.utilcmd.msgbus_cmd module
- chipsec.utilcmd.msr_cmd module
- chipsec.utilcmd.pci_cmd module
- chipsec.utilcmd.reg_cmd module
- chipsec.utilcmd.smbios_cmd module
- chipsec.utilcmd.smbus_cmd module
- chipsec.utilcmd.spd_cmd module
- chipsec.utilcmd.spi_cmd module
- chipsec.utilcmd.spidesc_cmd module
- chipsec.utilcmd.tpm_cmd module
- chipsec.utilcmd.txt_cmd module
- chipsec.utilcmd.ucode_cmd module
- chipsec.utilcmd.uefi_cmd module
- chipsec.utilcmd.vmem_cmd module
- chipsec.utilcmd.vmm_cmd module
HAL (Hardware Abstraction Layer)¶
Useful abstractions for common tasks such as accessing the SPI.
- List of HAL components
- chipsec.hal.acpi module
- chipsec.hal.acpi_tables module
- chipsec.hal.cmos module
- chipsec.hal.cpu module
- chipsec.hal.cpuid module
- chipsec.hal.ec module
- chipsec.hal.hal_base module
- chipsec.hal.igd module
- chipsec.hal.interrupts module
- chipsec.hal.io module
- chipsec.hal.iobar module
- chipsec.hal.iommu module
- chipsec.hal.locks module
- chipsec.hal.mmio module
- chipsec.hal.msgbus module
- chipsec.hal.msr module
- chipsec.hal.paging module
- chipsec.hal.pci module
- chipsec.hal.pcidb module
- chipsec.hal.physmem module
- chipsec.hal.psp module
- chipsec.hal.smbios module
- chipsec.hal.smbus module
- chipsec.hal.spd module
- chipsec.hal.spi module
- chipsec.hal.spi_descriptor module
- chipsec.hal.spi_jedec_ids module
- chipsec.hal.spi_uefi module
- chipsec.hal.tpm module
- chipsec.hal.tpm_eventlog module
- chipsec.hal.tpm_interface module
- chipsec.hal.ucode module
- chipsec.hal.uefi module
- chipsec.hal.uefi_common module
- chipsec.hal.uefi_compression module
- chipsec.hal.uefi_fv module
- chipsec.hal.uefi_platform module
- chipsec.hal.uefi_search module
- chipsec.hal.virtmem module
- chipsec.hal.vmm module
Fuzzing¶
CHIPSEC_MAIN Program Flow¶
Select OS Helpers and Drivers
Load Driver (optional)
Load Configuration Files
Load Modules
Run Loaded Modules
Report Results
Cleanup
CHIPSEC_UTIL Program Flow¶
Select OS Helpers and Drivers
Load Driver (optional)
Load Configuration Files
Load Utility Commands
Run Selected Command
Cleanup
Auxiliary components¶
setup.pysetup script to install CHIPSEC as a package
Executable build scripts¶
<CHIPSEC_ROOT>/scripts/build_exe_*.pymake files to build Windows executables