Skip to main content
  1. Comandi/

diff - confronta differenze tra due file

·2 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cosa fa
#

Confronta due file riga per riga e mostra le differenze. Fondamentale per rilevare modifiche non autorizzate a file di configurazione o log.

Sintassi
#

diff [opzioni] file1 file2

Comandi essenziali
#

ComandoFlagSignificato flagCosa fa
diff file1 file2Output classico con < e >
diff -u file1 file2-uunifiedOutput unificato con contesto — più leggibile
diff -r dir1 dir2-rrecursiveConfronta due directory intere
diff -i file1 file2-iignore caseIgnora differenze maiuscolo/minuscolo
diff -q file1 file2-qquietDice solo se i file sono diversi, senza mostrare le differenze

Come leggere l'output
#

Output classico
#

42c42                        ← riga 42 del file1 è Changed rispetto a riga 42 del file2
< riga_in_file1              ← contenuto nel primo file
---
> riga_in_file2              ← contenuto nel secondo file

Codici di modifica:

c = changed   (riga modificata)
a = added     (riga aggiunta)
d = deleted   (riga cancellata)

Output unified (-u)
#

--- file1                    ← primo file
+++ file2                    ← secondo file
@@ -39,7 +39,7 @@           ← posizione nel file
 riga_contesto               ← riga uguale (contesto)
-riga_rimossa_da_file1       ← presente solo in file1
+riga_aggiunta_in_file2      ← presente solo in file2
 riga_contesto               ← riga uguale (contesto)

Combinazioni utili
#

# Confronta file di configurazione e salva le differenze
diff -u config.old config.new > modifiche.patch

# Confronta due directory ricorsivamente
diff -r /etc/backup/ /etc/

# Verifica se due file sono identici (exit code 0 = uguali)
diff -q file1 file2 && echo "Identici" || echo "Diversi"

Scenario Reale
#

Durante un incident response, un analista confronta la versione attuale di /etc/passwd con il backup di ieri: diff -u /backup/passwd /etc/passwd. Se appare una riga con + che aggiunge un nuovo utente con UID 0 — è un backdoor. diff è uno degli strumenti più semplici ma più potenti per rilevare file integrity violations.

Dove l'ho usato
#

  • bandit-17 — trovare la riga cambiata tra passwords.old e passwords.new

Note personali
#

Ricorda: il primo file è sempre - o <, il secondo è sempre + o >. Per trovare flag utili nel man: cerca /unified, /recursive, /ignore. In ambito Blue Team, diff su file di configurazione critici è uno dei check base durante un IR.

Collegato a
#

  • system — categoria
  • incidents — categoria
  • grep — grep cerca dentro un file, diff confronta tra file
  • file-integrity — diff è uno dei tool base per verificare integrità

Related