Cabeçalho LUKS restaurado acidentalmente no sistema de arquivos regular

0

Estou com um grande problema agora, então uma solução MUITO rápida seria muito apreciada. Eu estava em uma sessão SSH no meu laptop com criptografia LUKS e pensei em restaurar o cabeçalho. Mais tarde, percebi que havia feito o SSH na minha área de trabalho e acidentalmente usei o arquivo de backup do cabeçalho LUKS para restaurar na minha área de trabalho, que não possuía nenhuma criptografia LUKS. Agora, não consigo inicializar no meu sistema de arquivos. Existe alguma maneira de recuperar meu sistema operacional ou, no mínimo, meus arquivos? Eu também apaguei tentei apagar o cabeçalho assim que percebi, mas não ajudou, o cabeçalho ainda permanece, todas as teclas estão desativadas.

Sistema de arquivos ext4 Kali Linux de 64 bits, inicializado com a partição Windows 10 A partição Kali Linux é aquela que teve o cabeçalho sobrescrito acidentalmente.

O comando que usei que acidentalmente restaurou o cabeçalho foi: cryptsetup luksHeaderRestore /dev/sda5 --header-backup-file header.bak

computer_geek64
fonte
Por favor, não adicione detalhes à sua pergunta nos comentários;  edite  sua pergunta para torná-la mais clara e completa.
Scott
Pode tentar o testdisk. Ou photorec para recuperar arquivos sem dir. estrutura e provavelmente nenhum nome de arquivo. Você pesquisou como recuperar o ext4 substituiu o primeiro 2M?
Xen2050 2/11/2018

Respostas:

0

Provavelmente você pode recuperar quase tudo, mas se algo der errado, você poderá se encontrar pior do que está agora.

A opção faça você mesmo é recuperar o sistema de arquivos de um dos superblocos de backup:

  1. Faça uma imagem de disco da partição danificada e faça todo o seu trabalho nessa imagem. Você precisará de um disco rígido com espaço vazio suficiente para armazenar esta imagem de disco.
  2. Use losetuppara configurar a imagem como um dispositivo de loopback. Isso fornecerá um nome de dispositivo como /dev/loop0.
  3. Execute mke2fs -nno dispositivo de loopback para descobrir onde estão os superblocos de backup. Você está fingindo criar um novo sistema de arquivos aqui (a -nopção), mke2fspara saber onde ele colocaria as coisas.
  4. Execute e2fsck -n -b <insert a superblock address here>no dispositivo de loopback com cada um dos endereços de superbloco de backup sucessivamente até encontrar um que funcione. Aqui, você está fingindo reparar o sistema de arquivos ( -nnovamente) para ver se ele funcionará. As probabilidades são de que você terá sucesso na primeira tentativa.
  5. Execute novamente e2fsckno dispositivo de loopback, apenas sem a -nopção Isso irá reparar o sistema de arquivos da melhor maneira possível.
  6. Monte o dispositivo de loopback como um sistema de arquivos e veja o quão grave é o dano.

Depois de fazer isso, você tem duas opções: pode repetir as etapas no sistema de arquivos original ou copiar os arquivos que deseja da imagem, apagar o sistema de arquivos original, reinstalar o Kali e copiar o arquivo recuperado. arquivos nele.

A opção segura é enviar sua unidade para uma empresa de recuperação de dados. Eles seguirão basicamente as mesmas etapas acima, mas, como estão familiarizados com o procedimento, não estragarão. Isso provavelmente custará algumas centenas de dólares.

Marca
fonte
Obrigado pela ajuda. Acho que a melhor opção agora é recuperar o sistema de arquivos e copiá-los para uma nova instalação do Kali, como você disse. Desta vez, lerei o STDOUT corretamente antes de substituir partes da minha partição. Você também pode elaborar um pouco mais sobre o uso de mke2fse e2fsck? Eu provavelmente poderia descobrir isso sozinho nas páginas de manual, mas acho que seria melhor ouvir isso de alguém em primeira mão também.
computer_geek64
0

O Mount tem uma opção para tentar usar um superbloco de backup ( -o b=40961por exemplo), portanto, um comando com somente leitura mais um de seus superblocos de backup, como

mount -v -o ro,b=40961 /dev/sda5 mountpoint

pode valer a pena tentar, pelo menos sendo somente leitura, não deve causar nenhum dano e não requer uma cópia.


Tentei criar um pequeno sistema de arquivos ext4 (50M), copiando 34M em 40 arquivos para ele e substituindo os primeiros 2M por zeros (o tamanho de um cabeçalho de backup luks).

O comando e2fsck (com e sem tentar todos os superblocos de backup com -b) não recuperou nenhum arquivo. Talvez tenha sido o tamanho pequeno e a porcentagem relativamente grande que foram substituídos, mas mesmo agora montáveis, nenhum arquivo estava lá (até o número de perdidos e encontrados estava vazio). Outra resposta ( https://superuser.com/a/1044614/307834 ) diz que a lista de arquivos e diretórios pode ter sido substituída e, evidentemente, um superbloco de backup pode não ajudar.

No entanto, o Photorec conseguiu recuperar 33 dos 40 arquivos (sem nomes de arquivos), 31 eram idênticos, embora 2 foram alterados (incompatibilidade md5). Aqui está um link para instruções passo a passo. (Ele também mostrará os superblocos de backup).

Se você tivesse uma lista de backup de todos os nomes de arquivos e um hash (como md5 de find | md5sumou mesmo crc32), seria muito mais fácil associar os arquivos aos nomes de arquivos. Obviamente, é melhor fazer o backup dos arquivos em si - não todos os arquivos do sistema, eles podem ser facilmente baixados e reinstalados novamente, mas apenas seus dados e arquivos pessoais ($ HOME?) E talvez alguns arquivos de configuração em / etc .


De qualquer forma, se alguém estiver interessado, aqui estão alguns comandos para criar um ext4 pequeno e quebrá-lo e tentar a recuperação:

$ fallocate -l 50M 50

$ mke2fs -v -t ext4 -E lazy_itable_init=0,lazy_journal_init=0 50
mke2fs 1.43.4 (31-Jan-2017)
fs_types for mke2fs.conf resolution: 'ext4', 'small'
Discarding device blocks: done                            
Discard succeeded and will return 0s - skipping inode table wipe
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
12824 inodes, 51200 blocks
2560 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33685504
7 block groups
8192 blocks per group, 8192 fragments per group
1832 inodes per group
Filesystem UUID: b42aef3d-4e2a-44c3-8bb1-967968f61e38
Superblock backups stored on blocks: 
        8193, 24577, 40961

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

$ sudo mount -v 50  /media/50
mount: /dev/loop1 mounted on /media/50.
$ cp -ar /usr/share/backgrounds /media/50/backgrounds # 40 files totaling 34M
$ sudo umount -v /media/50 
umount: /media/50 unmounted

Salve um arquivo "bom" original para comparar

$ cp -v 50 50-bak
'50' -> '50-bak'

Sem a conv, ddapenas sobrescreve 50 com um arquivo 2M preenchido com zero

$ dd if=/dev/zero of=50 bs=1M count=2 conv=notrunc
2+0 records in
2+0 records out
2097152 bytes (2.1 MB, 2.0 MiB) copied, 0.00552528 s, 380 MB/s

Salve uma cópia do arquivo quebrado, para tentar novamente mais tarde

$ cp -v 50 50-broken
'50' -> '50-broken'

A execução do "e2fsck 50" irá "reparar" o sistema de arquivos, mas a montagem não revela arquivos recuperados

Obter / verificar superblocos de backup

$ mke2fs -n 50
mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 51200 1k blocks and 12824 inodes
Filesystem UUID: 7a31ebab-ddc2-40a6-89f6-39ecc26578cc
Superblock backups stored on blocks: 
        8193, 24577, 40961

Os comandos do e2fsck que devem / podem ajudar:

$ e2fsck -v -b 40961 50
e2fsck 1.43.4 (31-Jan-2017)
Superblock has an invalid journal (inode 8).
Clear<y>? yes
*** journal has been deleted ***

Resize inode not valid.  Recreate<y>? yes
Pass 1: Checking inodes, blocks, and sizes
Root inode is not a directory.  Clear<y>? yes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Root inode not allocated.  Allocate<y>? yes
/lost+found not found.  Create<y>? yes
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  +(1--1875) +1878 +(8193--8450) +(24577--24834) +(40961--41218)
Fix<y>? yes
Free blocks count wrong for group #0 (6301, counted=6314).
Fix<y>? yes
Free blocks count wrong for group #2 (4096, counted=8192).
Fix<y>? yes
Free blocks count wrong (44438, counted=48547).
Fix<y>? yes
Inode bitmap differences:  +1 +(3--10)
Fix<y>? yes
Free inodes count wrong for group #0 (1820, counted=1821).
Fix<y>? yes
Directories count wrong for group #0 (3, counted=2).
Fix<y>? yes
Free inodes count wrong (12812, counted=12813).
Fix<y>? yes
Recreate journal<y>? yes
Creating journal (4096 blocks):  Done.

*** journal has been regenerated ***

50: ***** FILE SYSTEM WAS MODIFIED *****

          11 inodes used (0.09%, out of 12824)
           0 non-contiguous files (0.0%)
           0 non-contiguous directories (0.0%)
             # of inodes with ind/dind/tind blocks: 0/0/0
        6749 blocks used (13.18%, out of 51200)
           0 bad blocks
           0 large files

           0 regular files
           0 directories
           0 character device files
           0 block device files
           0 fifos
           1 link
           0 symbolic links (0 fast symbolic links)
           0 sockets
------------
           1 file

A montagem ainda não revela arquivos recuperados ...
Tente montar diretamente com um superbloco de backup (-b) não funcionou com nenhum bloco de backup

$ sudo mount -vo ro,b=40961 50 /media/50
mount: wrong fs type, bad option, bad superblock on /dev/loop1,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

# Nothing in syslog/dmesg.
Xen2050
fonte