linuxboot / linuxboot/fiano

UTK does not display deeper than the top most layer

Open
#289 6 comments 0 reactions 0 assignees View on GitHub

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
}
```
![uefitool vs json](https://user-images.githubusercontent.com/10907336/68372611-83905e00-0141-11ea-93a3-d722a9bfeebf.png)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.