Encontre a sequência em arquivos usando o Editor HEX

2

Há alguns dias, decidi desfragmentar e otimizar meu disco rígido externo de 2 TB usando o Auslogics Defragmenter. Agora, um pouco de fundo aqui. A partição que eu desfragmentei foi uma partição de 1,8 TB criptografada pela VeraCrypt, uma bifurcação da TrueCrypt. Depois que a desfragmentação foi concluída, descobri que vários arquivos foram corrompidos. Os arquivos em que eu poderia detectar a corrupção foram todos os arquivos compactados, compactados usando a compactação padrão do Windows 10. Abri os arquivos no WinHex e vi uma coisa curiosa: o final de todos esses arquivos corrompidos tinha um bloco de seqüência "DF DF DF". Aqui está a captura de tela do problema. Por favor, note que, embora a imagem mostre que é um arquivo de arco, ainda era compactado pela compactação do Windows. O curioso é que, embora os arquivos tivessem esses blocos DF, uma Busca Binária da partição montada não produziu nenhuma sequência.

Agora quero criar um arquivo em lote que:

  • Crie uma lista de arquivos compactados no disco
  • Verifique se há sequência DF no final do conteúdo binário de cada arquivo
  • Faça uma lista de todos os arquivos afetados

Eu tentei resolver isso usando o script Powershell, mas não tive sucesso. Acho que abordar o problema na plataforma Linux seria muito mais fácil, mas não tenho ideia de como fazer isso. Qualquer ajuda ou sugestão seria muito apreciada.

Nota adicional: Muitos disseram que a pesquisa binária da partição montada foi mal sucedida devido ao fato de que a partição é criptografada. Isto é errado. Eu montei a partição antes da pesquisa. Assim, a pesquisa não foi em dados RAW do disco rígido, mas os dados da partição não criptografada.

Detalhes adicionais: SO: Windows 10 Professional X64 / Ubuntu 14.04 x64 Sistema de arquivos: NTFS

    
por Sabyasachi Mukherjee 29.07.2016 / 21:45

2 respostas

2

O cmdlet Get-Content com as opções -Encoding Byte e -Tail fornece o que você deseja comparar no PowerShell. Assumindo que é aí que você falha.

    
por 29.07.2016 / 23:14
0
Get-ChildItem -recurse -file -Attributes Compressed -path $Path | Foreach-Object -Process { if ((Get-Content -Tail 1 -encoding String -literalpath $_.fullname).endswith("ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß")) { Write-Output "$($_.Name) 't $($_.FullName) 't $($_.length)"}  }

Simples um forro. Basicamente baseado no que kRush disse. Substitua $ Path pelo caminho correto.

    
por 31.07.2016 / 04:11