Como calcular o endereço inicial de uma partição do MBR

2

Dado um MBR e a estrutura da tabela de partição / MBR, como você pode calcular o tamanho e o endereço inicial de cada partição?

Para esclarecimentos, digamos que eu recebi isso -

Answer: There are three partition table entries shown in the MBR.

Partition 1: Starting LBA Address: Sector 63 (decimal). If using hex representation, the starting address is 0000003f. Size: 20482812 Sectors (decimal). If using hex representation, the size is 01388afc.

Partition 2: Starting LBA Address: Sector 20482875 (decimal). If using hex representation, the starting address is 01388b3b. Size: 20482875 Sectors (decimal). If using hex representation, the size is 01388b3b.

Partition 3: Starting LBA Address: Sector 40965750 (decimal). If using hex representation, the starting address is 02711676. Size: 37142280 Sectors (decimal). If using hex representation, the size is 0236bf08.

Como você chega a essa resposta?

    
por 에이바 14.12.2011 / 16:29

3 respostas

1
Partições começam em 1be

Para descobrir onde 1be é primeiro, vá para o offset (offset é a primeira coluna) 0001b0. Agora em 0001b0: conte em hexadecimal para encontrar E. Por exemplo, se olharmos para o primeiro conjunto de números após 0001b0: 0000, contamos os dois primeiros dígitos (00) como 0 e os segundos dois como 1… continue a contagem até chegar a E que está em 8001 (80 é "E"). Este é o início da tabela de partições - que é sempre de 16 bytes, terminando em 3801 (ou o segundo ao último conjunto de números na linha de deslocamento 0001c0).

O endereço LBA sempre começa em 8 e termina em 11. Então, se olharmos para nossa primeira partição (8001 - 3801) e contar para 8, terminamos em 3f00 (3f é “8”) e o final é 0000 (último dois 00's são “11”). Assim, o endereço LBA inteiro é 3f00 0000, mas devemos inverter a ordem, porque está no formato little endian e queremos hexadecimal. Então, para fazer isso, quebre o número assim 3f 00 00 00
00 00 00 3f < - "invertido"

Repita o processo até o resto das informações da partição - pare se você encontrar todos os 0s. Nota: você não pode ter mais de 4 partições (primárias).

    
por 15.12.2011 / 21:01
1

Depende do sistema operacional, do sistema e do formato do sistema de arquivos.

A Wikipedia é um bom recurso sobre o assunto: link

Comece a seguir o layout. As entradas da tabela de partições começam em 000001BE ... com o registro de partição de 16 bytes ...

ignorando os bits não tão importantes ...

a primeira partição é NTFS (000001C3) e inicia em 0000003f (observe os 4 bytes em little-endian começando em 000001c6) e o tamanho é 01388acf (observe os 4 bytes em formato little-endian começando em 00001ca)

Se você não conseguir ler a página da Wikipédia & entendê-lo ... você provavelmente não deveria estar fazendo isso ... ou deveria ter estudado melhor em sala de aula.

    
por 14.12.2011 / 16:33
1

Eu acredito que o maior problema em entender a representação hexa da tabela de partição vem do problema de endianness . Os PCs Intel são baseados na arquitetura little-endian com uma ordem real de bytes invertida para representações de números de múltiplos bytes. Portanto, o número de deslocamento do setor do LBA, como 01388b3b , é armazenado como 3b8b 3801 - que está ali na sua tabela de partição / MBR, começando em 0x01dd. O fato de que o número é repetido logo em seguida é apenas uma coincidência - o comprimento da partição é igual ao deslocamento LBA da partição.

    
por 14.12.2011 / 16:58