Solution de prae_gitlab pour Échec OP 0/3

intro forensics mémoire linux

6 décembre 2024

Premières approches

On peut identifier l’UUID par trois approches différentes :

Avec le petit fdisk :

$ fdisk -l fcsc.raw | grep "Disk identifier"
Disk identifier: 60DA4A85-6F6F-4043-8A38-0AB83853E6DC

Avec son grand frère cfdisk :

$ cfdisk fcsc.raw
Label: gpt, identifier: 60DA4A85-6F6F-4043-8A38-0AB83853E6DC

Avec l’oncle blkid :

$ blkid fcsc.raw
fcsc.raw: PTUUID="60da4a85-6f6f-4043-8a38-0ab83853e6dc" PTTYPE="gpt"

Méthode à-la-Python

Si on se base sur la documentation de l’entête GPT : https://uefi.org/specs/UEFI/2.10/05_GUID_Partition_Table_Format.html#gpt-header

Le GUID se trouve à l’offset 56 après la signature GPT.

import sys
with open(sys.argv[1], "rb") as file:
        while buffer := file.read(8):
                if buffer == b"\x45\x46\x49\x20\x50\x41\x52\x54":
                        print(f"GPT Signature found at offset {file.tell()}")
                        break

        file.seek(file.tell() - 8 + 56)
        GUID = file.read(16)
        print("GUID =", GUID.hex())
        print("GUID =", GUID[0:4][::-1].hex(),
                        GUID[4:6][::-1].hex(),
                        GUID[6:8][::-1].hex(),
                        GUID[8:10].hex(),
                        GUID[10:16].hex()
        )

Et en l’exécutant :

$ ./scan.py fcsc.raw
GPT Signature found at offset 520
GUID = 854ada606f6f43408a380ab83853e6dc
GUID = 60da4a85 6f6f 4043 8a38 0ab83853e6dc