AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1792700
Accepted
user3629081
user3629081
Asked: 2023-06-30 22:16:53 +0800 CST2023-06-30 22:16:53 +0800 CST 2023-06-30 22:16:53 +0800 CST

Como você interpreta o Cluster Chain Run em um registro NTFS MFT?

  • 772

Por motivos principalmente acadêmicos, tenho aprendido a interpretar a execução da cadeia de clusters do bloco de atributos de dados de um registro MFT de um volume NTFS.

Assisti a um vídeo que mostra um exemplo. Aqui está o exemplo:

Bandeiras | Contagem de clusters | Primeiro cluster
41 02 f8 38 c7 01
21 02 c5 07
31 04 83 43 01
21 08 c0 fc
31 10 44 0b 00
31 01 f7 ef f9
21 1f c6 e7
21 10 6b 28
31 01 00 52 e4

Agora, o vídeo mostra algum software de edição de disco que está interpretando a saída hexadecimal. Isso é útil, porque o autor do vídeo pula completamente pelo menos 3 conceitos fundamentais:

  1. O campo "Primeiro cluster" é cumulativo. Fácil o suficiente para descobrir se você usar uma calculadora.
  2. O campo "First cluster" é um inteiro com sinal, para que possa navegar para trás no disco. Isso foi mais complicado de descobrir, mas eu entendi.
  3. O terceiro conceito completamente ignorado é quando o byte menos significativo do campo "First cluster" é zero. Como esses campos são interpretados como little-endian e como esse é um campo de comprimento flexível (os sinalizadores dizem quantos bytes), então por que você teria zeros à esquerda?

Então, aqui está como eu calculo.

Bandeiras | Contagem de clusters | Primeiro cluster
41 02 f8 38 c7 01
2 clusters começando no cluster # 29.833.464
21 02 c5 07
2 mais clusters começando em 1.989 de 29.833.464, que é o cluster # 29.835.453
31 04 83 43 01
Mais 4 clusters começando em 82.819 de 29.835.453, que é o cluster # 29.918.272
21 08 c0 fc
8 mais clusters começando em 832 antes de 29.918, 272, que é o cluster nº 29.917.440
31 10 44 0b 00
16 mais clusters começando em 2.884 de 29.917.440, que é o cluster # 29.920.324
É aqui que minha matemática se desvia da matemática deles. Eles dizem cluster # 29.840.452. Preciso de ajuda aqui.
31 01 f7 ef f9
21 1f c6 e7
21 10 6b 28
31 01 00 52 e4

Como funciona a matemática quando você tem zeros à esquerda em um dos campos? Também tenho um exemplo separado em que os zeros à esquerda estão no campo "Contagem de clusters", não no campo "Primeiro cluster"; isso é tratado de forma diferente?"

filesystems
  • 1 1 respostas
  • 74 Views

1 respostas

  • Voted
  1. Best Answer
    Joep van Steen
    2023-07-01T04:22:15+08:002023-07-01T04:22:15+08:00

    31 10 44 0b 00, mais 16 clusters começando em 2.884 de 29.917.440, que é o cluster # 29.920.324 É aqui que minha matemática se desvia da matemática deles. Eles dizem cluster # 29.840.452. eu preciso de ajuda

    Não é sua matemática que está errada, o cara demonstrando no vídeo está errado ou pelo menos ignora uma questão importante:

    Ele trapaceia um pouco e apenas lê os valores dos valores interpretados da coluna à esquerda como se estivesse convertendo os valores que destaca na hora.

    Mas seus valores convertidos práticos levam em consideração a matriz de sequência de atualização que ele não menciona.

    Atualizar matriz de sequência e valor de correção

    A execução com a qual você está tendo problemas não 31 10 44 0b 00 é . Se observarmos atentamente sua sequência de bytes no vídeo, veremos que os dois últimos bytes da execução são os dois últimos bytes em um setor de 512 bytes:

    insira a descrição da imagem aqui

    Portanto 0b 00 não são os dois bytes que pertencem a esta execução, é o 'conserto'. Para obter os valores reais, você precisa lê-los no chamado 'Array de seqüência de atualização' para o qual o deslocamento é armazenado no deslocamento de byte 4 na entrada MFT (geralmente 0x30).

    No deslocamento 0x30, você verá os bytes 0b 00 (o valor de correção), os próximos dois bytes serão os valores originais dos últimos dois bytes do primeiro setor da entrada da MFT, os próximos 2 os do próximo setor.

    Vou ilustrar usando uma entrada MFT da minha unidade:

    insira a descrição da imagem aqui

    Então 31 10 44 0b 00, na verdade, é 31 10 44 xx xxonde você substitui xx pelos bytes da matriz de sequência de atualização e, em seguida, faz suas contas.

    O objetivo dos valores de correção é detectar corrupção. Portanto, assim que lemos a entrada da MFT, verificamos o valor da correção e comparamos com os últimos 2 bytes de cada setor, eles devem corresponder, caso contrário, o setor está corrompido. Para realmente trabalhar com a entrada, precisamos primeiro corrigir o valor de correção com valores da matriz de sequência de atualização.

    Como esses campos são interpretados como little-endian e como esse é um campo de comprimento flexível (os sinalizadores dizem quantos bytes), então por que você teria zeros à esquerda?

    TBH, não tenho a menor ideia. Na época em que estava estudando isso, fiz isso para escrever um programa de recuperação de arquivos NTFS (além disso, redescobri seu código-fonte muito recentemente e recompilei para ver se ainda funcionaria. Funcionou ! )

    De qualquer forma, o que quero dizer é que, quando descobri as execuções de dados, nunca mais as observei com muita atenção porque escrevi o código para lidar com elas.

    Mas sim, você está certo. Mais uma vez, voltei-me para o meu próprio disco rígido e obtive esta entrada:

    insira a descrição da imagem aqui

    Assim obtemos:

    31 - 38 - 12 39 09 
    43 - 76 2B 01 - 42 77 BB 03 
    43 - A7 82 01 - 91 14 D6 00 <<
    33 - DC D1 01 - 5B 2B FE  
    33 - D9 E4 01 - A2 B3 FD 
    etc ..
    

    E, de fato, os << zeros não fazem nenhuma diferença, tanto quanto eu posso ver. De fato, se pedirmos ao DMDE para interpretar a lista de execução, ele simplesmente ignora os zeros também:

    insira a descrição da imagem aqui

    Referência: https://flatcap.github.io/linux-ntfs/ntfs/concepts/file_record.html

    • 2

relate perguntas

  • Nome de arquivo inválido dentro do arquivo zip

  • Como ver os logs do back-end de /sys

  • fusor não mostra o PID do processo com arquivo aberto

  • Não é possível descartar arquivos nos limites do sistema de arquivos ao usar o Thunar

  • É possível usar FTP sem sistema de arquivos no cliente?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve