Il flagging di un file come in sola lettura impedisce la modifica di un hash?

0

Qualche tempo fa ho sviluppato un semplice script per rilevare i file duplicati. Funziona nel seguente modo:

  • Individua i file Excel in una cartella.
  • Ottiene SHA-256 del file.
  • Memorizza una mappatura tra Nome file - SHA256.
  • Contrassegna il file come di sola lettura.

Ora, so bene che Excel memorizza i metadati nella sua stessa struttura, quindi aprire e salvare un file Excel anche se non sono state apportate modifiche modificherà lo SHA-256 per questo file.

La mia domanda è: se contrassegno il file come di sola lettura dopo aver ottenuto il suo SHA-256, è possibile ottenere un SHA-256 diverso mentre questo flag è abilitato?

Ho notato che sto ricevendo hash SHA-256 diversi per i file contrassegnati come di sola lettura, e vorrei capire se questo è persino possibile.

    
posta Jausk 01.03.2017 - 15:59
fonte

2 risposte

2

Ci sono due scenari che spiegherebbero perché il tuo file può ancora essere cambiato, nonostante sia protetto da scrittura:

  1. Se si avvia il programma (Excel) come utente a cui è consentito modificare le autorizzazioni, in particolare le autorizzazioni di scrittura, del file, il programma (Excel) potrebbe semplicemente riattivare il permesso di scrittura senza dirti . Questa è generalmente una cattiva idea, ma forse Excel è stupido. Libreoffice Calc chiede se si desidera modificare il flag di autorizzazione alla scrittura. Suppongo che anche Excel lo farebbe.

  2. Se il tuo programma cancella il file e ricrea un file con lo stesso nome, sembrerà che il file sia cambiato, anche se in realtà è stato completamente rimosso e sostituito da un file diverso che sembra per lo più identico . Ciò è possibile perché l'eliminazione di un file non viene impedita negando il permesso di scrittura al file.

risposta data 01.03.2017 - 16:21
fonte
0

Quando dici "contrassegna il file come di sola lettura", intendi la modifica degli attributi / permessi del file? Se è così, mi occuperò di questo.

Attributi (Windows) / Permessi (* nix) sono informazioni "meta" sul file system. In NTFS, questi dati sono memorizzati nella Tabella file master (MFT) . In ext3, questi dati verrebbero archiviati in inode . Ciò significa che la ridenominazione del file, lo spostamento del file o la modifica delle autorizzazioni del file non devono modificare il contenuto del file, che è l'hash.

Puoi sempre eseguire un test rapido per confermare:

>rem Sum the file first.
>sha256sum ExcelFile.xlsx
4bb7303b56a728665f639c36ffdc6169ac4debd774a0e9bedd27ca15b451c8ad *ExcelFile.xlsx

>rem Check the attributes of the file.
>attrib ExcelFile.xlsx
A            C:\Users\User\Documents\ExcelFile.xlsx

>rem Add the read-only attribute.
>attrib +r ExcelFile.xlsx

>rem Sum the file again.
>sha256sum ExcelFile.xlsx
4bb7303b56a728665f639c36ffdc6169ac4debd774a0e9bedd27ca15b451c8ad *ExcelFile.xlsx

>rem Rename the file.
>ren ExcelFile.xlsx ExcelFile.xlsx2

>rem Sum the file again.
>sha256sum ExcelFile.xlsx2
4bb7303b56a728665f639c36ffdc6169ac4debd774a0e9bedd27ca15b451c8ad *ExcelFile.xlsx2

>rem Check the attributes of the file again.
>attrib ExcelFile.xlsx2
A    R       C:\Users\User\Documents\ExcelFile.xlsx2

>rem Remove the read-only attribute.
>attrib -r ExcelFile.xlsx2

>rem Rename the file again.
>ren ExcelFile.xlsx2 ExcelFile.xlsx

>rem Sum the file again.
>sha256sum ExcelFile.xlsx
4bb7303b56a728665f639c36ffdc6169ac4debd774a0e9bedd27ca15b451c8ad *ExcelFile.xlsx

>

Ho anche provato ad aprire il file quando era impostato in sola lettura in Excel (aveva anche [Read Only] nella barra del titolo). Mentre il file era aperto, eseguivo nuovamente sha256sum e l'hash era ancora invariato. Ho provato a salvare le modifiche al file e mi ha richiesto un nuovo nome per il file.

    
risposta data 03.03.2017 - 01:08
fonte

Leggi altre domande sui tag