UTK does not display deeper than the top most layer
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 373
- Forks
- 59
- PR merge metrics
- No merged PRs in 30d
Description
I suspect it is supposed to show a deeper nested table but utk does only detect the top most layer on some images. See attached output table / json vs the UEFITool output.
github.com/linuxboot/fiano v5.0.1-0.20191025053120-41ac08f71926+incompatible
```
mimoja@Mimoja-FirmwareVM:~/Projects/Firmware/MFT/files$ utk AB5C8F19220DF31B1B0A5C5A26914530A44FC3822C0F4B92EAEBC8EC1FC1B758 table
Node GUID/Name Type Size
BIOS 0x2c0000
FV 7A9354D9-0468-444A-81CE-0BF617D890DF 0x230000
Free 0x0
FV 7A9354D9-0468-444A-81CE-0BF617D890DF 0x40000
Free 0x0
FV 7A9354D9-0468-444A-81CE-0BF617D890DF 0x30000
Free 0x0
FV 7A9354D9-0468-444A-81CE-0BF617D890DF 0x20000
Free 0x0
mimoja@Mimoja-FirmwareVM:~/Projects/Firmware/MFT/files$ utk AB5C8F19220DF31B1B0A5C5A26914530A44FC3822C0F4B92EAEBC8EC1FC1B758 layout-table
Node GUID/Name Offset Size
BIOS 0x00000000 0x002c0000
FV 7A9354D9-0468-444A-81CE-0BF617D890DF 0x00000000 0x00230000
Free 0x00230000 0x00000000
FV 7A9354D9-0468-444A-81CE-0BF617D890DF 0x00230000 0x00040000
Free 0x00270000 0x00000000
FV 7A9354D9-0468-444A-81CE-0BF617D890DF 0x00270000 0x00030000
Free 0x002a0000 0x00000000
FV 7A9354D9-0468-444A-81CE-0BF617D890DF 0x002a0000 0x00020000
Free 0x002c0000 0x00000000
mimoja@Mimoja-FirmwareVM:~/Projects/Firmware/MFT/files$ utk AB5C8F19220DF31B1B0A5C5A26914530A44FC3822C0F4B92EAEBC8EC1FC1B758 layout-table-full
Node GUID/Name Offset Size
BIOS 0x00000000 0x002c0000
FV 7A9354D9-0468-444A-81CE-0BF617D890DF 0x00000000 0x00230000
Free 0x00230000 0x00000000
FV 7A9354D9-0468-444A-81CE-0BF617D890DF 0x00230000 0x00040000
Free 0x00270000 0x00000000
FV 7A9354D9-0468-444A-81CE-0BF617D890DF 0x00270000 0x00030000
Free 0x002a0000 0x00000000
FV 7A9354D9-0468-444A-81CE-0BF617D890DF 0x002a0000 0x00020000
Free 0x002c0000 0x00000000
{
"Elements": [
{
"Type": "*uefi.FirmwareVolume",
"Value": {
"FileSystemGUID": {
"GUID": "7A9354D9-0468-444A-81CE-0BF617D890DF"
},
"Length": 2293760,
"Signature": 1213613663,
"Attributes": 4294938367,
"HeaderLen": 72,
"Checksum": 19565,
"ExtHeaderOffset": 0,
"Revision": 1,
"Blocks": [
{
"Count": 35,
"Size": 65536
}
],
"FVName": {
"GUID": "00000000-0000-0000-0000-000000000000"
},
"ExtHeaderSize": 0,
"DataOffset": 72,
"FVOffset": 0,
"ExtractPath": "",
"Resizable": false
}
},
{
"Type": "*uefi.FirmwareVolume",
"Value": {
"FileSystemGUID": {
"GUID": "7A9354D9-0468-444A-81CE-0BF617D890DF"
},
"Length": 262144,
"Signature": 1213613663,
"Attributes": 4294938367,
"HeaderLen": 72,
"Checksum": 19627,
"ExtHeaderOffset": 0,
"Revision": 1,
"Blocks": [
{
"Count": 4,
"Size": 65536
}
],
"FVName": {
"GUID": "00000000-0000-0000-0000-000000000000"
},
"ExtHeaderSize": 0,
"DataOffset": 72,
"FVOffset": 2293760,
"ExtractPath": "",
"Resizable": false
}
},
{
"Type": "*uefi.FirmwareVolume",
"Value": {
"FileSystemGUID": {
"GUID": "7A9354D9-0468-444A-81CE-0BF617D890DF"
},
"Length": 196608,
"Signature": 1213613663,
"Attributes": 4294938367,
"HeaderLen": 72,
"Checksum": 19629,
"ExtHeaderOffset": 0,
"Revision": 1,
"Blocks": [
{
"Count": 3,
"Size": 65536
}
],
"FVName": {
"GUID": "00000000-0000-0000-0000-000000000000"
},
"ExtHeaderSize": 0,
"DataOffset": 72,
"FVOffset": 2555904,
"ExtractPath": "",
"Resizable": false
}
},
{
"Type": "*uefi.FirmwareVolume",
"Value": {
"FileSystemGUID": {
"GUID": "7A9354D9-0468-444A-81CE-0BF617D890DF"
},
"Length": 131072,
"Signature": 1213613663,
"Attributes": 4294938367,
"HeaderLen": 72,
"Checksum": 19631,
"ExtHeaderOffset": 0,
"Revision": 1,
"Blocks": [
{
"Count": 2,
"Size": 65536
}
],
"FVName": {
"GUID": "00000000-0000-0000-0000-000000000000"
},
"ExtHeaderSize": 0,
"DataOffset": 72,
"FVOffset": 2752512,
"ExtractPath": "",
"Resizable": false
}
}
],
"ExtractPath": "",
"Length": 2883584,
"FRegion": null,
"RegionType": 0
}
```

Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the issue with the provided firmware image and the `utk ... table`, `layout-table`, and `layout-table-full` commands, then compare their output with UEFITool. Trace the firmware-volume parsing and table-generation entry points; done means nested firmware structures are detected and displayed consistently with the reference output.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- reverse-engineering, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100