uefivars
This is a set of Python modules and a helper application "uefivars" to introspect and modify UEFI variable stores.
Why do I need this?
UEFI variable stores are typically opaque to users. You access them using UEFI runtime services as function calls. However, the data is then stored in a binary data format. When running virtual machines or extracting UEFI variable stores directly from Flash storage, you can receive and write that binary data and thus modify variables directly.
This is useful in situations where you have incorrect UEFI variable data and need to modify variables without runtime service access. It can also be useful to analyze and introspect the variable store and check what data is stored inside.
How do I use it?
You can convert a variable store into human readable format by setting the output type to json. This will show you all variables that are currently present in the variable store.
$ uefivars -i edk2 -o json -I OVMF_VARS.secboot.fd
[
{
"name": "SecureBootEnable",
"data": "AQ==",
"guid": "f0a30bc7-af08-4556-99c4-001009c93a44",
"attr": 3
},
[...]
]
In addition, you can convert from the human readable json representation back into edk2 format:
$ uefivars -i json -o edk2 -I vars.json -O OVMF_VARS.fd
Given any variable store (including an empty one) the --PK , --KEK , --db and --dbx
switches can be used to (over-)write the four SecureBoot variables from input files.
(Usually .esl files). For a general rundown of the key generation process the ArchLinux wiki has proven itself
as a first point of guidance.
You can also use the tool to convert between the AWS EC2 uefi-data format and edk2 to import and export UEFI variable stores between an EC2 instance and QEMU:
$ uefivars -i edk2 -o aws -I OVMF_VARS.fd -O uefi-data.aws
$ uefivars -i aws -o edk2 -I uefi-data.aws -O OVMF_VARS.fd
How can I take a snapshot of my current UEFI variable store?
If you are running on a live UEFI system, the variable store that gets exposed to the Operating System is incomplete: It does not contain UEFI variables that are only present at boot time and it does not get access to variable authentication data.
If you don't need either - for example because you're only interested in saving the boot order - you can use the efivarfs backend to convert the local variable store into a file:
$ uefivars -i efivarfs -o aws -I /sys/firmware/efi/efivars -O uefi-data.aws
What formats are supported?
This package currently supports the following formats:
aws - File format used in AWS EC2
edk2 - File format used for flash storage in OVMF
efivarfs - Ingests all non-authenticated variables from an efivarfs mount point (read only)
Metadata
Release files for uefivars 1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| uefivars-1.2.tar.gz | 26.4 kB | Without provenance | Details for uefivars-1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| uefivars-1.2-py3-none-any.whl | Python 3 | none | any | Details for uefivars-1.2-py3-none-any.whl |
Total release size: 53.6 kB
Release files / uefivars-1.2.tar.gz
| Download URL | uefivars-1.2.tar.gz |
|---|---|
| Size | 26.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
415b1726a0ba83659b695fb500b6994d843603144b2c82036ddc35e58d750b74
|
|
BLAKE2b-256 checksum How to use checksums |
70f5589ce6fcd5d2feac681978dedc252389dfb139b8108114102158302ba968
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/4.0.2 CPython/3.11.8
|
Release files / uefivars-1.2-py3-none-any.whl
| Download URL | uefivars-1.2-py3-none-any.whl |
|---|---|
| Size | 27.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
29f3a126808b8588d78d7df15ecfbbc35f2182e0b9cecc8bd4149f2b107bf7ca
|
|
BLAKE2b-256 checksum How to use checksums |
14eaa3ec573f071d31b6e95521b94d29632bc210ad4a1a848441511cda56e1ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/4.0.2 CPython/3.11.8
|
Security for uefivars 1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.