Skip to content

rminnich/fiano

This branch is 6 commits ahead of, 21 commits behind linuxboot/fiano:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ea4ae00 · Sep 17, 2024
Sep 15, 2024
Sep 17, 2024
Sep 17, 2024
Sep 16, 2024
Sep 17, 2024
Sep 16, 2024
Nov 5, 2021
Feb 25, 2019
Jan 27, 2019
Aug 13, 2021
Feb 13, 2019
Feb 27, 2019
Sep 16, 2024
Sep 16, 2024

Repository files navigation

fiano

Go-based tools for modifying UEFI firmware.

CircleCI Go Report Card GoDoc CodeCov License

Fiano

Contributing

For information about contributing, including how we sign off commits, please see CONTRIBUTING.md

UTK: Generic UEFI tool kit meant to handle rom images

Example usage:

# For a comprehensive list of commands
utk -h

# Display the image in a compact table form:
utk winterfell.rom table

# Summarize everything in JSON:
utk winterfell.rom json

# List information about a single file in JSON (using regex):
utk winterfell.rom find Shell

# Dump an EFI file to an ffs
utk winterfell.rom dump DxeCore dxecore.ffs

# Insert an EFI file into an FV near another Dxe
utk winterfell.rom insert_before Shell dxecore.ffs save inserted.rom
utk winterfell.rom insert_after Shell dxecore.ffs save inserted.rom

# Insert an EFI file into an FV at the front or the end
# "Shell" is just a means of specifying the FV that contains Shell
utk winterfell.rom insert_front Shell dxecore.ffs save inserted.rom
utk winterfell.rom insert_end Shell dxecore.ffs save inserted.rom

# Remove a file and pad the firmware volume to maintain offsets for the following files
utk winterfell.rom remove_pad Shell save removed.rom

# Remove two files by their GUID without padding and replace shell with Linux:
utk winterfell.rom \
  remove 12345678-9abc-def0-1234-567890abcdef \
  remove 23830293-3029-3823-0922-328328330939 \
  replace_pe32 Shell linux.efi \
  save winterfell2.rom

# Extract everything into a directory:
utk winterfell.rom extract winterfell/

# Re-assemble the directory into an image:
utk winterfell/ save winterfell2.rom

DXE Cleaner

Delete unnecessary DXEs from your firmware. Free up space, speed up boot times and decrease the attack surface area! See the demo:

asciicast

FMAP: Parses flash maps.

Example usage:

  • fmap checksum [md5|sha1|sha256] FILE
  • fmap extract i FILE
  • fmap jget JSONFILE FILE
  • fmap jput JSONFILE FILE
  • fmap summary FILE
  • fmap usage FILE
  • fmap verify FILE

Installation

# Golang version 1.13 is required:
go version

# For UTK:
go install github.com/linuxboot/fiano/cmds/utk

# For fmap:
go install github.com/linuxboot/fiano/cmds/fmap

The executables are installed in $HOME/go/bin.

Updating Dependencies

# Fiano utilizes Go modules.
Use the following to download the dependencies:
```
go mod download
go mod verify
```

If you desire to update a existing dependency to a newer version:
```
go get path/to/dependency/module@tag
```
Execute this in any directory of fiano repository

About

Go-based tools for modifying UEFI firmware

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 99.8%
  • Shell 0.2%