O carregador de boot do Windows 10 quebrou meu disco Linux LUKS


1

Eu tenho 3 discos:

  1. SO principal (CentOS)
  2. HDD criptografado com LUKS para dados (Hardware RAID10, LSI Logical Volume)
  3. Windows 10 (instalado recentemente para teste)

Meu problema é 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!

EDITAR 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 o LUKS com o vi

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

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

EDIT 2 Adicionado desenvolvimento

A partir desta unix.stackexchange: https://unix.stackexchange.com/questions/177831/recovering-a-luks-partition

Eu 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 eu 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..>.?|
|.;.&...-........|
|................|
|................|

1
Portanto, o Windows substituiu o cabeçalho LUKS por seu bootloader. A menos que você tenha um backup do cabeçalho, não há como recuperar a partição (ou seu conteúdo).
Larssend

1
Você tem certeza que realmente foi substituído o dispositivo LUKS? O LUKS estava em toda a unidade bruta, não havia tabela de partições ou partições? Se o seu LUKS estava na segunda ou posterior partição, então talvez o Windows apenas apagasse a tabela de partição & amp; ou o início da primeira partição. Com o que o disco se parece agora no gparted ou fdisk ou gdisk, e como ele se parecia?
Xen2050

Eu suponho que você não fez backup de nada antes de tentar algo tão arriscado?

@FleetCommand Eu não posso fazer o backup de todo o disco, eu não tenho disco de tamanho similar. Eu acho que não faço nada muito arriscado até agora. Talvez perca?
William Perron

Respostas:


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 então dois caracteres não-ascii 0xba e 0xbe, então você poderia procurar em todo o seu disco procurando por aquela 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 & amp; 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 & amp; pode encontrar o LUKS.


Pesquise "você mesmo"

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

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

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

Ele deve gerar o byte no qual 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 comece no ponto certo, embora fazer uma cópia de segurança primeiro seja mais seguro, você não quer sobrescrever o cabeçalho por engano.

  • 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 são 1M ou 2M de comprimento, 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, acontece exatamente 5M desde o início (5242880/1048576 = 5), então este comando iria copiar de 5M para o final do arquivo / dispositivo, escrevendo para o 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 parar de copiar depois de N blocos, apenas descobrir quantos blocos de sua seleção bs= estão em 2 megabytes, acima seria apenas 2. Veja dd ajuda para informações.


Muito obrigado Xen2050! Agora eu tenho meu cabeçalho e sei onde ele começa, mas qual é a maneira mais segura de reconstruir meu disco LUKS? Eu não tenho outro disco de 12 TB para backup. Eu editei minha pergunta com todo o comando e resultado.
William Perron

Parece que o cabeçalho LUKS foi pelo menos parcialmente sobrescrito para que nada seja deixado no cabeçalho (ou talvez sejam apenas os 6 primeiros caracteres de um cabeçalho LUKS que foram escritos por algum outro motivo). Mas dependendo de quantas senhas foram armazenadas, e quanto foi sobrescrito, algo pode ser deixado. cryptsetup tem um comando de reparo, poderia tentar em uma cópia de 10 ou 20MB do "cabeçalho" foreward? Ou a resposta vinculada em unix.stackexchange mostra o formato do cabeçalho em um PDF, poderia tentar extrair dados se sobrou algum? Um backup de cabeçalho é realmente necessário, infelizmente
Xen2050
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.