Windows 10 O carregador de boot quebrou meu disco Linux LUKS

1

Eu tenho 3 discos:

  1. Main OS (CentOS)
  2. HDD criptografado com LUKS para dados (hardware RAID10, LSI Logical Volume)
  3. Windows 10 (instalado recentemente para teste)

Meu problema é que quando eu instalei o Windows 10, ele quebrou meu disco LUKS criando um gerenciador de inicialização ... Agora não consigo descriptografar meu disco e realmente preciso dos meus dados.

Posso reverter o processo com o Gparted ou outra ferramenta? Espero que meus dados não sejam destruídos por esse gerenciador de inicialização ...

Eu realmente preciso de ajuda, por favor!

EDIT 1 Adicionou algumas informações

fdisk -l

Disk /dev/sda: 12000.0 GB, 11999999164416 bytes, 23437498368 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x385dcf68

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000    7  HPFS/NTFS/exFAT

Após a resposta do Xen2050, aqui está o meu resultado:

LANG=C grep -obUaP "\x4C\x55\x4B\x53\xBA\xBE" /dev/sda

164822601573:LUKS��

Então a esperança é retornada!

Eu dd meu cabeçalho com tamanho de bloco de 1 bytes com isso

dd if=/dev/sda of=luks_header bs=1 skip=164822601573 count=2097152

Agora eu tenho o meu cabeçalho luks, posso confirmar que comece com LUKS com vi

LUKSº¾^@squashfs^@sqsh^@hsqs^@lvm2pv^@LVM2 001^@btrfs^@

Agora, o próximo passo é reescrever o cabeçalho luks ...

EDIT 2 Adicionado desenvolvimento

A partir desta unix.stackexchange: link

Encontrei o começo se meu cabeçalho

hexdump -s 164822601573 -C /dev/sda | grep LUKS
2660314f65  4c 55 4b 53 ba be 00 73  71 75 61 73 68 66 73 00 |LUKS...squashfs.|

Configurar dispositivos de loop

losetup -o 0x2660314f65 -r -f /dev/sda
losetup -a
cryptsetup luksOpen /dev/loop0 luksrecover

Mas tenho esta mensagem de erro:

Unsupported LUKS version 115.

Acho que meu cabeçalho está corrompido ... Aqui está o começo do meu:

|LUKS...squashfs.|
|sqsh.hsqs.lvm2pv|
|.LVM2 001.btrfs.|
|_BHRfS_M.f2fs.. |
|...<device.</dev|
|ice>.PRI.TIME.DE|
|VNO.%s-XXXXXX.w.|
| PRI="%d".>%s</d|
|evice>.. %s="%s"|
|.%s.old.1.42.9.2|
|8-Dec-2013......|
|................|
*
|...............d|
|.... n;.0.&.A.v.|
|QkkXa.M<q.P ...D|
|.........a...d..|
|...x............|
|.............T..|
|..........@.....|
|.i@<device DEVNO|
|="0x%04lx" TIME=|
|"%ld"...........|

E aqui está um cabeçalho funcional

|LUKS....aes.....|
|................|
|........xts-plai|
|n64.............|
|........sha1....|
|................|
|............... |
|2x.l...r0....8|.|
|...'..[!D..J..tp|
|....?J...~.x"s.=|
|.?.....]981be66e|
|-a0b0-4daa-8a2c-|
|5a6e5d8ed3ae....|
|..q....ZG..}#..,|
|...w..!|..3..>.?|
|.;.&...-........|
|................|
|................|
    
por William Perron 10.03.2017 / 05:44

1 resposta

1

Realmente, um backup do cabeçalho LUKS é o que você precisa. Mas, talvez seja possível que, na verdade, não tenha sido sobrescrito e apenas a tabela de partição de disco tenha sido confundida e você não consiga encontrar o início do dispositivo LUKS.

O cabeçalho LUKS realmente começa com os caracteres LUKS , depois dois caracteres não-ascii 0xba e 0xbe, então você pode procurar em todo o seu disco procurando por essa string. Tudo em hexadecimal, é

4C 55 4B 53 BA BE

Tenha uma pesquisa de programa

PhotoRec deve ser capaz de encontrar cabeçalhos / arquivos LUKS e está no Debian & Fontes do Ubuntu, e disponíveis para o Windows também, dizem para pesquisar toda a sua unidade.

Ou tente TestDisk também (do mesmo autor), ele pode tentar procurar por partições perdidas & pode encontrar o LUKS.

Pesquise "você mesmo"

Ou, você poderia pesquisar o tipo inteiro de byte-by-byte "você mesmo", com seu editor hexadecimal favorito (Bless é legal) ou com grep no linux (encontrado em esta outra Q ):

LANG=C grep -obUaP "\x4C\x55\x4B\x53\xBA\xBE" /dev/your-hard-drive-device

Sem a configuração inicial de LANG=C não estava funcionando para mim, minha "linguagem" usual é aparentemente UTF-8, e essas opções são a forma abreviada de - somente correspondência - byte-offset --binary --text --perl-regexp veja man grep ou info grep )

Deverá produzir o byte onde o cabeçalho LUKS é iniciado, se encontrar um. Você poderia então usar dd para copiar o contêiner LUKS em algum lugar seguro, ou usar essa informação para criar uma partição que começa no ponto certo, embora fazer uma cópia de segurança primeiro seja mais seguro, você não queira sobrescrever o cabeçalho erro.

  • Por exemplo:

    $ LANG=C grep -obUaP "\x4C\x55\x4B\x53\xBA\xBE" file
    5242880:LUKS��
    

    Aqui, são 5.242.880 bytes no arquivo (no linux tudo é um arquivo, todo o disco rígido também, por exemplo, /dev/sdb ).

Agora é um bom momento para fazer um backup de cabeçalho, eles têm 1M ou 2M, então copie o próximo 2M com dd .

dd requer um pouco de matemática para descobrir um bom tamanho de bloco ( -bs), it tends to read extremely slow with a low block size, the default 512 bytes is probably too slow for more than a few megabytes on a hard drive, 1M (1048576 bytes, dd 'sabe M, G, K, etc) deve estar ok.

  • No exemplo acima, é exatamente 5M desde o início (5242880/1048576 = 5), então este comando iria copiar de 5M para o final do arquivo / dispositivo, gravando no arquivo outfile (no diretório atual):

    dd if=file of=outfile bs=1M skip=5
    

Para um backup somente de cabeçalho, você pode usar count=N para interromper a cópia após N blocos, apenas descobrir quantos blocos do seu bs= selecionado estão em 2 megabytes, acima seria apenas 2. Ver dd de ajuda para informações.

    
por 10.03.2017 / 14:49