GPT osa 2. GPT-otsikon rooli levyn eheydessä.

Johdanto

Tämän blogisarjan ensimmäisessä osassa tarkastelimme suojaavaa MBR:ää ja sen roolia nykyaikaisten GPT-osioidun levyn yhteensopivuuden turvaamisessa vanhojen järjestelmien kanssa. Perehdyimme siihen, miten Protective MBR toimii esteenä, joka estää vanhempia järjestelmiä tulkitsemasta GPT-levyjä väärin ja varmistaa siten, että koko levy on merkitty GPT-levyn käyttöön. Tämä perustavanlaatuinen ymmärrys luo pohjan syvemmälle sukellukselle itse GUID-osiointitaulukon (GPT) sydämeen - GPT-otsikkoon.

Tässä toisessa osassa puramme GPT-otsikon, joka on GPT-kaavion tärkeä osa ja joka antaa tärkeää tietoa levyn rakenteesta. Tarkastelemme GPT-otsikon jokaista kenttää ja selitämme sen merkityksen sekä sen, miten se vaikuttaa levyn yleiseen toimivuuteen ja eheyteen. Tämän viestin lopussa sinulla on kattava käsitys GPT-otsikosta, minkä ansiosta voit analysoida ja käsitellä GPT-osioidut levyt luotettavasti rikosteknisissä tutkimuksissa tai tietojen palautusskenaarioissa.

GPT-otsikon yleiskatsaus

GPT-otsikko (GUID-osiointitaulukko) on tärkeä osa levyn osiojärjestelmää. Se jakaa levyn erillisiin osioihin, joihin kuhunkin voidaan tallentaa erityyppisiä tietoja, kuten käyttöjärjestelmä, henkilökohtaisia tiedostoja, sovellustietoja tai pelejä. Nämä osiot voivat olla eri asemia (kuten C: -asema, D: -asema, E: -asema jne.).

GPT-otsikko sisältää varmuuskopion levyn lopussa, mikä on kuin vara-avain kirjastoluetteloon siltä varalta, että pääavain katoaa tai vahingoittuu. Näin varmistamme, että löydämme tietomme ja pääsemme niihin käsiksi, vaikka jokin menisi pieleen.

GPT-otsikko antaa varmuuskopionsa sijainnin ja GUID Partition Table Entry Array -osionimikerivistön sijainnin, joka on luettelo GPT-osionimikkeistä, jotka osoittavat, missä kyseiset osiot (osiot) sijaitsevat levyllä.

Kuva 1: Hypoteettisen Windows 10 -asennuksen ulkoasu, jossa on yksi levyke (n = aseman viimeinen sektori).

GPT-otsikko alkaa allekirjoituksella EFI PART. Muut arvot on jaoteltu alla olevassa taulukossa:

GPT-otsikon rakenne

GPT-otsikko alkaa allekirjoituksella "EFI PART." Muut arvot on jaoteltu alla olevassa taulukossa:

Lähde: https://uefi.org/specs/UEFI/2.10/05_GUID_Partition_Table_Format.html

Toistaiseksi GPT-otsikon 16 ensimmäistä tavua pysyvät vakiona eri GPT-levyillä.

GPT-otsikon CRC

Alla on esimerkki GPT-otsikon CRC32:n laskemisesta:

Voit käyttää Python-skriptiä eristettyjen tavujen CRC:n laskemiseen:

Python-skripti löytyy osoitteesta: https://github.com/eichbaumj/Python

Python-skripti ottaa tuloksena saadun CRC32-arvon ja muuntaa sen GPT-otsikon edellyttämään muotoon. Tässä tapauksessa laskettu arvo on 0x1B2C37BC. Mutta jotta se voidaan tallentaa GPT-otsikon kenttään, arvo luetaan little endian -muodossa: 0xBC372C1B. 

Levyn GUID

Alla olevassa kuvakaappauksessa näkyy GPT-otsikossa korostettu GUID:

GUID on 16 tavun heksadesimaaliarvo, mutta jos luulet, että voit vain kopioida arvot ja erottaa ne toisistaan sopivasti väliviivoilla ja lyödä niiden ympärille aaltosulkeet, olet väärässä. Tuloksena olisi väärä arvo.

HxD tarjoaa GUID-muunnoksen oikealla olevassa Data Inspectorissa. Mutta miten se tapahtuu? Miten:
55 BA 55 51 51 2B D8 59 41 BC 1F C4 17 80 0F D7 63

Tule:

{5155BA55-D82B-4159-BC1F-C417800FD763}

GUID-muoto

XX XX XX XX XX | XX XX | XX XX | XX XX | XX XX | XX XX XX XX XX XX XX XX XX XX

55 BA 55 51 | 2B D8 | 59 41 | BC 1F | C4 17 80 0F D7 63

Ensimmäiset neljä tavua muunnetaan pikku-endiaaniheksaksi: 51 55 BA 55 BA 55

Toinen 2 tavun sarja muunnetaan pikku-endiaaniseksi heksaksi: D8 2B

Kolmas kahden tavun sarja muunnetaan pikku-endiaaniheksaksi: 59 41

Loput kaksi heksan arvosarjaa jätetään sellaisenaan, big-endian: BC 1F | C4 17 80 0F D7 63

Kun kaikki muunnokset ovat valmiit, voimme koota ne yhteen, laittaa väliviivat sinne, missä niitä tarvitaan, ja sulkea ne sulkeisiin:

{5155BA55-D82B-4159-BC1F-C417800FD763}

Voimme varmistaa, että tämä on oikea GUID-koodaus, käynnistämällä diskpartin komentoriviltä ja tarkistamalla levyn uniikkitunnuksen:

GPT-osiotaulukon tarkistussumma CRC

Voimme käyttää samaa Python-skriptiä, mutta korvata heksan arvot Partition Entry Array -muodostelmasta löytyvillä arvoilla. 

Näemme, että arvo vastaa GPT-otsikon arvoa.

GPT-otsikon korjaaminen

Okei, nyt kun tiedämme, miten GPT-otsikko on rakenteeltaan ja että varmuuskopio sijaitsee levyn viimeisellä sektorilla, miten korjaamme GPT-otsikon, jos se vahingoittuu tai pyyhkiytyy?

Voit korjata GPT-otsikon kopioimalla 512 viimeistä tavua levyn lopusta ja liittämällä ne LBA 1:een (sektori #2). Huomaa, että tarvitaan muutamia muutoksia.

Alla on esimerkki siitä, miltä varmuuskopion GPT-otsikko näyttää levyn lopussa:

Näemme, että jotkin arvot pysyvät vakioina verrattuna alkuperäiseen GPT-otsikkoon. Nämä vakiot on korostettu punaisella alla:

Neljä arvoa on muutettava.

Ensimmäinen on GPT Header CRC, johon palaamme myöhemmin. Toistaiseksi nämä arvot voidaan nollata, koska meidän on käytettävä CRC:tä, joka on laskettu sen jälkeen, kun olemme muuttaneet muita arvoja, jotta saamme taas oikean CRC:n.

Seuraava on MyLBA-arvo, joka sijaitsee siirtymäalueella 24 4 tavun ajan. Tämä arvo osoittaa GPT-otsikon sijaintiin (jossa se on tällä hetkellä), ja sen nykyinen sijainti on LBA 1 eli 0x010000000000000000000. 

Kahdeksan tavun arvo siirtymässä 32 on arvo, joka osoittaa GPT-varmuuskopio-otsikon sijainnin. Varmuuskopio osoittaa tällä hetkellä alkuperäiseen, mutta meidän on muutettava tämä arvo niin, että se edustaa levyn viimeistä sektoria. Näin tapahtui edellisessä vaiheessa muuttamiemme heksan arvojen kanssa. Tässä esimerkissä arvo olisi muutettava muotoon 0xAFD23B77000000000000.

Siirrossa 72 sijaitsevan 8 tavun arvon on heijastettava GPT Partition Entry Array -osion sijaintia ja alkua. Tällä hetkellä varmuuskopio GPT-otsikko osoittaa kyseisen joukon varmuuskopioon. Varsinaisen GPT-osioaseman pitäisi olla LBA-kohdassa 2. Tämä arvo on muutettava arvoksi 0x02000000000000000000.

Kun nämä kolme arvoa on muutettu, on aika laskea CRC32-arvo. 

Tuloksena saatava tarkistussumma on:

Nyt voimme siis korvata 0x00000000-arvot offsetissa 16 arvoilla 0xBC372C1B:

HxD:ssä on CRC32-tarkistussummalaskuri sisäänrakennettuna kohdassa Analyysi -> Tarkistussummat. Tuloksena saatu arvo on vain lisättävä pikku-endian-arvona.

Uteliaisuuden vuoksi, jos eristämme nämä 512 tavua alkuperäisestä ja varmuuskopiosta, jotka palautimme, hash-arvot todellakin vastaavat toisiaan, mikä osoittaa, että onnistuimme palauttamaan alkuperäisen GPT-otsikon varmuuskopion avulla.

Päätelmä

GPT-otsakkeen monimutkaisuuden ymmärtäminen on tärkeää kaikille digitaalisen rikostekniikan, tietojen palautuksen tai järjestelmänhallinnan parissa työskenteleville. GPT-otsikko ei ainoastaan määrittele levyn asettelua ja rakennetta, vaan se myös varmistaa tietojen eheyden CRC32-tarkistussumman ja varmuuskopiointiotsikoiden kaltaisilla mekanismeilla. Kun hallitset GPT-otsikon yksityiskohdat, sinulla on paremmat valmiudet vianmääritykseen ja levyongelmien korjaamiseen, mikä takaa kriittisten tietojen luotettavuuden ja saatavuuden.

Kun jatkamme tätä sarjaa, keskitymme seuraavaksi GPT-osiotaulukon merkintärakenteeseen. Tutkimme, miten osiomerkinnät ovat rakenteeltaan ja miten ne toimivat yhdessä GPT-otsikon kanssa levyosioiden järjestyksen ja eheyden ylläpitämiseksi. Pysy kuulolla, sillä luvassa on kattava opas GPT Partition Table Entry Array -osioalustan analysoinnista ja korjaamisesta, joka antaa sinulle lisää tietoa, jotta voit käsitellä GPT-osioidut levyt luottavaisesti.

Jäikö osa 1 väliin?

Aloita alusta: Osa 1: Suojaavan MBR:n ymmärtäminen GPT-osioiduilla levyillä (osa 1) - jossa käsitellään sitä, miten GPT takaa taaksepäin yhteensopivuuden vanhojen järjestelmien kanssa.

Oletko valmis seuraavaan vaiheeseen?

Jatka Osa 3: Navigointi GPT-osion merkintärakenteessa - jossa tutkitaan, miten osiomerkinnät ovat rakenteeltaan ja miten ne täydentävät GPT-otsikkoa.

Facebook
Twitter
Sähköposti
Tulosta

2 Vastaukset

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *