Um arquivo pode parecer modificado antes de ser criado? [duplicado]

8

É possível ter um arquivo que tenha uma data de modificação anterior à data de criação? Quais ações causariam esse evento?

    
por AlexanderRD 19.06.2016 / 21:31

6 respostas

8

Considere um arquivo .tar que é extraído. Normalmente, os arquivos extraídos terão um registro de data e hora da última modificação atribuído a partir do conteúdo do arquivo (que normalmente está no passado, a menos que você seja um usuário do tempo). No que diz respeito ao sistema de arquivos, esses arquivos acabam de ser criados.

Também existem utilitários para alterar o tempo de modificação de arquivos existentes, no Linux, por exemplo, é o toque no comando .

    
por 19.06.2016 / 22:22
7

No Windows, é muito fácil definir (falsificar, se desejar) os horários criados e modificados de um arquivo. Você não precisa mudar o relógio do computador; você nem precisa de acesso de administrador local. Tudo o que você precisa é de acesso de gravação ao arquivo em questão.

Para definir o horário de criação de um arquivo com o PowerShell usando SetCreationTime :

[System.IO.File]::SetCreationTime("C:\path\to\file.ext", (Get-Date "8/8/2088"))

Para definir o horário da última modificação usando SetLastWriteTime :

[System.IO.File]::SetLastWriteTime("C:\path\to\file.ext", (Get-Date "7/4/1776"))

No Linux, você pode alterar facilmente o horário da última modificação de um arquivo com o -d de touch , conforme mostrado em esta resposta Ask Ask . Não existe realmente uma noção de data de criação para arquivos em sistemas de arquivos Linux ( leituras adicionais no Unix & Linux ) .

    
por 19.06.2016 / 22:38
4

Se você criar um arquivo desde o início, ele terá um tempo de criação de "agora" e uma data de modificação de "agora". Agora imagine copiar este arquivo para outra unidade. O Windows manterá a hora da modificação, mas o horário de criação desse arquivo será definido para a hora em que você copiou o arquivo para essa unidade (ou seja, a hora em que o arquivo foi criado na unidade ). Simples assim.

Na verdade, está correto:

  • A última vez que o conteúdo do arquivo foi alterado é armazenado na hora da modificação.
  • A hora em que o arquivo foi criado nessa mesma unidade é armazenada no momento da criação.
por 19.06.2016 / 22:52
3

Sim. No Windows, faça uma alteração no arquivo e salve-o. Agora copie o arquivo. Olhando para as propriedades da cópia, você verá que ela tem uma data de modificação anterior.

    
por 19.06.2016 / 22:58
1

A coisa mais importante a observar aqui é que o tempo de modificação do arquivo não é realmente especial - ele é armazenado como qualquer outro dado. Não há como saber quando os dados foram realmente escritos ou lidos da última vez.

A partir daqui, podemos ver que é sempre possível modificar diretamente os bits em uma unidade que armazena o horário da última modificação, ou até mesmo o tempo de criação (excluindo mídia de gravação única, como um CD).

Mais praticamente, isso também é factível a partir de sistemas operacionais comuns, como outras respostas notaram. No Windows, isso é fornecido pela função SetFileTime do WinAPI e você pode fazer isso com utime no Linux. Ferramentas como touch são criadas com base nessas APIs.

O uso legítimo mais comum dessas APIs é preservar o horário da modificação, por exemplo, ao copiar arquivos, extraindo-os de arquivos, etc.

    
por 20.06.2016 / 02:07
0

Na minha experiência, foi quando um ou mais computadores foram usados para modificar o arquivo e um deles teve a hora errada do sistema. As três causas mais comuns para o tempo do sistema estar errado, em nenhuma ordem particular são:

  1. Nem todos os computadores estão configurados para mudar automaticamente para o horário de verão.
  2. As pessoas "acidentalmente" alteraram a hora do sistema em um computador.
  3. As pessoas "deliberadamente" alteraram a hora do sistema em um computador como uma piada.
por 19.06.2016 / 22:21