Page 1 of 1

[TOOL] - Md5Check - Controlliamo i pacchetti

Posted: Mon Nov 22, 2004 10:53 am
by xchris
Md5Check ver 0.1_pre1

Code: Select all

wget http://www.xchris.net/download.php?file=files/md5check.tar.gz -O md5check.tar.gz 

http://www.xchris.net/download.php?file ... eck.tar.gz

------------------

Cosa fa Md5Check?

Specificato un pacchetto (in realta' un pattern che matchera' alla meglio) riporta quali file sono cambiati e quali no ed eventualemte riporta l'md5 per ogni file.

OK..A cosa serve?

Penso che qualche esempio sia meglio:

-Quali file STANDARD ho cambiato nel mio firweall shorewall?

Code: Select all

root@lyra md5check # ./md5check shorewall

* net-firewall/shorewall-2.0.4

  -Changed-     /etc/shorewall/masq
--NOT FOUND      /usr/share/doc/shorewall-2.0.4/releasenotes.txt.gz
  -Changed-     /etc/shorewall/zones
  -Changed-     /etc/shorewall/shorewall.conf
  -Changed-     /etc/shorewall/policy
  -Changed-     /etc/shorewall/interfaces
  -Changed-     /etc/shorewall/rules

ok! Quindi sappiamo quali file sono cambiati...e notiamo pure che ci manca un file (cancellato per l'occasione)

supponiamo ora che vogliamo restringere il controllo su /etc

Code: Select all

root@lyra md5check # ./md5check shorewall /etc

* net-firewall/shorewall-2.0.4

  -Changed-     /etc/shorewall/masq
  -Changed-     /etc/shorewall/zones
  -Changed-     /etc/shorewall/shorewall.conf
  -Changed-     /etc/shorewall/policy
  -Changed-     /etc/shorewall/interfaces
  -Changed-     /etc/shorewall/rules
Possiamo anche utilizzarlo al posto di etcat -f dspam! (elecare tutti i file)
Avremo pero' + dettagli!

Code: Select all

* mail-filter/dspam-3.2.2

--NOT FOUND      /usr/share/doc/dspam-3.2.2/README.qmail.gz
--NOT FOUND      /usr/share/doc/dspam-3.2.2/CHANGELOG.gz
  Unchanged     /usr/bin/dspam_admin
  Unchanged     /usr/include/dspam/libdspam.h
  Unchanged     /usr/share/man/man1/dspam_merge.1.gz
  Unchanged     /usr/include/dspam/storage_driver.h
  Unchanged     /var/log/dspam/.keep
  Unchanged     /usr/share/man/man1/dspam_dump.1.gz
  Unchanged     /usr/share/man/man1/dspam_corpus.1.gz
  Unchanged     /usr/bin/dspam_corpus
  Unchanged     /usr/share/man/man1/dspam.1.gz
  Unchanged     /usr/share/man/man3/libdspam.3.gz
  Unchanged     /etc/logrotate.d/dspam
  Unchanged     /usr/bin/dspam_genaliases
  Unchanged     /usr/bin/dspam_merge
  Unchanged     /usr/include/dspam/libdspam_objects.h
  Unchanged     /usr/lib/libdspam.a
  Unchanged     /etc/mail/dspam/.keep
  Unchanged     /usr/lib/libdspam.so.6.0.0
  Unchanged     /usr/include/dspam/buffer.h
  Unchanged     /usr/include/dspam/decode.h
  Unchanged     /usr/lib/pkgconfig/dspam.pc
  Unchanged     /usr/include/dspam/config.h
--NOT FOUND      /usr/share/doc/dspam-3.2.2/RELEASE.NOTES.gz
  Unchanged     /etc/env.d/40dspam
  Unchanged     /usr/bin/dspam_crc
  Unchanged     /usr/include/dspam/nodetree.h
--NOT FOUND      /usr/share/doc/dspam-3.2.2/README.postfix.gz
  Unchanged     /etc/cron.daily/.keep
  -Changed-     /etc/mail/dspam/dspam.conf
  Unchanged     /var/spool/dspam/.keep
  Unchanged     /usr/share/man/man1/dspam_clean.1.gz
  Unchanged     /usr/include/dspam/lht.h
  Unchanged     /etc/logrotate.d/.keep
  Unchanged     /etc/cron.daily/dspam.cron
  Unchanged     /usr/include/dspam/tbt.h
  Unchanged     /usr/lib/libdspam.la
  Unchanged     /usr/bin/dspam_2sql
--NOT FOUND      /usr/share/doc/dspam-3.2.2/LICENSE.gz
  Unchanged     /usr/bin/dspam
  Unchanged     /usr/include/dspam/error.h
  Unchanged     /usr/bin/dspam_clean
--NOT FOUND      /usr/share/doc/dspam-3.2.2/README.gz
  Unchanged     /usr/bin/dspam_stats
  Unchanged     /usr/share/man/man1/dspam_stats.1.gz
  Unchanged     /usr/bin/dspam_dump
in un colpo solo sappiamo:
quali file dovrebbe contenere il pacchetto,quali mancano,quali sono stati modificati.

-Potrebbe essere anche visto come un tripwire dei poveri :) (per vedere se qualcuno ha manomesso uno dei nostri pacchetti)
-Puo essere utilizzato per vedere se un crash di sistema ha provocato problemi su pkg vitali!! (magari su glibc)
-puo' essere utilizzato come un etc-purger PRIMA di rimuovere un pacchetto con delle semplici regexp (sapendo eventualemente quali file salvare..)
-costituisce un ottima base per un etc-update avanzato (che magari implementero' presto...perche' mi sono un po' rotto di quello attuale)


Conclusioni:
Usatelo come preferite :)
Allo stato dei fatti Overlappa un po' con checkintegrity...magari in futuro li posso fondere. (anche perche' usano routine simili)

Se qc ha voglia e tempo di provarlo,riporti le impressioni :) (e i bug)
Grazie :)
ciao

Posted: Mon Nov 22, 2004 11:21 am
by gutter
Premetto che è possibile che commetta qualche errore io nella sintassi (in tal caso mi punisco in anticipo).

Ho un problema con il tuo tool:

Code: Select all

gutter@morpheus ~/tmp/md5check $ ./md5check x11-plugins/gaim-encryption 

No file match your search options for: x11-plugins/gaim-encryption-2.32 
EDIT:

Idem nel caso:

Code: Select all

gutter@morpheus ~/tmp/md5check $ ./md5check gaim-encryption 

No file match your search options for: x11-plugins/gaim-encryption-2.32 

Posted: Mon Nov 22, 2004 11:25 am
by xchris
non devi punirti...
di dafult cerca i file cambiati...

con -u mostra quelli non cambiati
con -a li mostra tutti

con -sm mostra anche md5

ciao

Posted: Mon Nov 22, 2004 11:29 am
by gutter
xchris wrote:non devi punirti...
di dafult cerca i file cambiati...

con -u mostra quelli non cambiati
con -a li mostra tutti

con -sm mostra anche md5

ciao
Ok tutto chiaro. Il messaggio comunque mi pare un poco criptico dal momento che mi sembrava non capisse quale pacchetto volessi indicare. Non pensi sia meglio scrivere qualcosa tipo:

Nessun file cambiato in questo pacchetto

ovviamente tradotto in inglese :wink:

Posted: Mon Nov 22, 2004 11:29 am
by fedeliallalinea
Aggiunto ai post utilissimi sezione tools

Posted: Mon Nov 22, 2004 11:31 am
by xchris
gutter wrote: Il messaggio comunque mi pare un poco criptico
concordo :)

in realta' e' un messaggio comune per tutti i metodi di ricerca...
(la pigrizia... brutta bestia)
lo cambio alla prossima uscita :)
ciao

Posted: Mon Nov 22, 2004 11:32 am
by DaVe&OpenMOsix
Bravo xchris!
la tua è un'ottima idea, credo che sia molto utile.
non ho ancora provato lo script, ma a priori ho un dubbio...
l'MD5 è un sistema di hashing che porta ad avere firme diverse per file diversi, e fin qui ci siamo.
se si tratta di controllare un file binario l'MD5 credo sia ottimo, perchè se cambia (per errore o per crash) anche un solo byte del file, probabilmente non funzionerà più.
ma nel caso di un file di testo, quale ad esempio un file di configurazione, cambiare un byte non sempre porta ad errore.
ad esempio se viene aggiunto uno spazio a fine file, l'MD5 è completamente diverso, e verrebeb segnalato come possibile errore un file che magari funziona lo stesso. chiaro che è cambiato, ma imho nel caso di file di configurazione il classico diff è meglio.
spero di essermi spiegato bene, e spero che il mio intervento sia d'aiuto nel proseguire il tuo ottimo lavoro!
ciao
DV

Posted: Mon Nov 22, 2004 11:43 am
by xchris
si hai ragione.

parlando di solo /etc spesso capita che alcuni file non vengano proprio toccati e in questo modo vengono rilevati.
Avere un indicazione almeno se e' stato toccato o meno un file e' gia' qc cosa. (se poi contiene solo uno spazio in +....amen)

Se ti riferisci ad discorso di etc-update si potrebbero combinare i 2 metodi.Se md5 e' diverso passa al diff....

Grazie per l'osservazione ;)
ciao

Posted: Mon Nov 22, 2004 11:56 am
by DaVe&OpenMOsix
Avere un indicazione almeno se e' stato toccato o meno un file e' gia' qc cosa. (se poi contiene solo uno spazio in +....amen)
sì, è vero che sapere che è stato toccato è buono, ma se ha solo un carattere cambiato, voglio vedere che ansia viene a trovare cosa è successo... :lol:
è ottima l'idea dell'accoppiata MD5/diff, risolverebbe proprio! :wink:
bravo xchris!
DV

Posted: Mon Nov 22, 2004 12:00 pm
by gutter
Concordo con entrambi.

@xchris: potresti inserire un flag che se attivato mostri kle differenze non banali. Per differenze banali intendo: uno spazio righe vuote, ecc...

Potresti usare una tiga tipo:

Code: Select all

Tivial Changes /etc/nome_file

Posted: Mon Nov 22, 2004 12:12 pm
by xchris
si..
anche se etc-update-ng per lavorare sugli md5 dovrebbe fare:

- snapshot /etc md5 pre emerge
- emerge
- controllo

purtroppo servono questi passi altrimenti i vecchi md5 vanno persi...
ma a me tornerebbe comodissimo quando si tratta di fare l'upgrade di xorg!!!

ciauz

EDIT: dimenticavo :oops: @fedeliallalinea: grazie :)

Posted: Mon Nov 22, 2004 12:37 pm
by FonderiaDigitale
io uso samhain per il momento.. dove e' meglio di lui (apparte la categorizzazione dei pacchetti)?

Posted: Mon Nov 22, 2004 12:44 pm
by xchris
certo..
non si propone di rimpiazzare un app del genere.

Il punto e' che con portage Tutti hanno a disposizione da subito un controllo su md5 senza installare nulla.(spesso utenti non skilled sentono la necessita' di app del genere quando ormai e' troppo tardi... ma utilizzando l'md5 gia' qc indicazione la hai)

ciao ciao

Posted: Thu Jun 09, 2005 10:13 pm
by fabius
Riesumo questo post per segnalare un possibile baco. Nel report ottengo

Code: Select all

* app-text/sablotron-1.0

--NOT FOUND      /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-.Sablotron
--NOT FOUND      /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-.Debugging
--NOT FOUND      /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-DOM
--NOT FOUND      /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-.Known
--NOT FOUND      /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-.Errors logs.html
--NOT FOUND      /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-.Named
Il problema è dovuto al fatto che i file esistono ma contengono uno spazio. Da un estratto di /var/db/pkg/app-text/sablotron-1.0/CONTENTS

Code: Select all

obj /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-.Sablotron DOM.html ab1ff23425590637e5c73f50ac26f52b 1115143220
obj /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-.Debugging XSLT.html dcc60280edbb463b7542871dc17d5130 1115143220
obj /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-DOM types.html 184e63e47a1d9e4c59871e11c7b1c694 1115143220
obj /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-DOM functions.html e04fd6e8622141683510680cdbd2eb71 1115143220
obj /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-.Known Issues.html 3d922b333be475c7353c97fbd603f12d 1115143220
obj /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-.Errors and logs.html 10ec3a15a622795977b4d65982a91e87 1115143220
obj /usr/share/doc/sablotron-1.0/html/sablot/apidocs/api-.Named buffers.html 046531928d32c252e87fc2cce6c24a8c 1115143220

Posted: Fri Jun 10, 2005 8:18 am
by xchris
uploadata nuova versione.
Vedi un po' se e' ok,
Grazie mille per la segnalazione!
ciao

Posted: Fri Jun 10, 2005 10:19 am
by Cazzantonio
Bello! Bellissimo! :D Complimenti ancora per i tuoi utilissimi script... :wink:

Accetti qualche suggerimento per feature aggiuntive?
E' possibile implementare una cosa del tipo: md5check world ? (o magari anche md5check -D world per le dipendenze...)
L'idea sarebbe di generare un elenco di tutti i file di configurazione cambiati in modo da generare un backup "intelligente"....
Diciamo una lista da dare direttamente poi in pasto a tar :wink:
occhei che con un paio di pipe, cut e grep in fila si ottiene una cosa simile... ma implementarla direttamente sarebbe carino :D

Posted: Fri Jun 10, 2005 10:28 am
by xchris
Cazzantonio wrote:Bello! Bellissimo! :D Complimenti ancora per i tuoi utilissimi script... :wink:
:oops: :D
Cazzantonio wrote: Accetti qualche suggerimento per feature aggiuntive?
mi pare di essere sempre ben disposto a commenti,critiche suggerimenti ;)
(per lo meno so che vengo cagato)
Cazzantonio wrote: E' possibile implementare una cosa del tipo: md5check world ? (o magari anche md5check -D world per le dipendenze...)
L'idea sarebbe di generare un elenco di tutti i file di configurazione cambiati in modo da generare un backup "intelligente"....
Diciamo una lista da dare direttamente poi in pasto a tar :wink:
occhei che con un paio di pipe, cut e grep in fila si ottiene una cosa simile... ma implementarla direttamente sarebbe carino :D
sul world non ci sarebbero' problemi..
sulle dipendenze si... a meno di non usare lo zio pino ;)

Tieni cmq conto che alcuni file che tu scrivi exnovo non potrebbero essere intercettati con md5check!

In teoria dovevo modificare checkintegrity e integrarlo in md5check per dare un tool + completo... in teoria..
(checkintegrity uso lo stesso motore e controlla tutto il sistema... ma controlla solo l'esistenza... non l'md5)

Ci pensero' cmq ;)
Grazie Mille!

Ciao :)

Posted: Fri Jun 10, 2005 10:37 am
by Cazzantonio
xchris wrote:sul world non ci sarebbero' problemi..
sulle dipendenze si... a meno di non usare lo zio pino ;)
In realtà (imho) basterebbe la lista di tutti i file di conf cambiati... stare a fare differenze tra le dipendenze e i pacchetti in world serve a poco secondo me... :roll:
Tieni cmq conto che alcuni file che tu scrivi exnovo non potrebbero essere intercettati con md5check!
Ovvio, però intanto darebbe una bella mano a tenere dietro a quelli "ufficiali" modificati... :wink:
Ci pensero' cmq ;)
Grazie Mille!
Grazie a te :D ... io non ho proprio fatto nulla...

Posted: Fri Jun 10, 2005 10:47 am
by Cazzantonio
ecco un'implementazione semplicissima di quello che intendevo

Code: Select all

#!/bin/bash
emerge -ep world |grep ebuild |cut -d" " -f 8 > /tmp/tuttiipacchetti
for i in `cat /tmp/tuttiipacchetti`
do
md5check $i |grep Changed
done
effettivamente non serve poi così tanto inegrarlo in md5check :wink:

[EDIT]
piccolo dubbio....
come mai mi lista anche tutte queste librerie? 8O

Code: Select all

  -Changed-     /usr/lib/python2.3/base64.pyc
  -Changed-     /usr/lib/python2.3/idlelib/Debugger.pyo
  -Changed-     /usr/lib/python2.3/fnmatch.pyc
  -Changed-     /usr/lib/python2.3/hmac.pyo
  -Changed-     /usr/lib/python2.3/fnmatch.pyo
  -Changed-     /usr/lib/python2.3/hmac.pyc
  -Changed-     /usr/lib/python2.3/shelve.pyc
  -Changed-     /usr/lib/python2.3/curses/wrapper.pyo
  -Changed-     /usr/lib/python2.3/curses/wrapper.pyc
  -Changed-     /usr/lib/python2.3/encodings/cp864.pyo
(piccolissimo estratto di tutte le librerie elencate)

inoltre mi sengnala anche file di conf che non ho mai cambiato :roll:

Code: Select all

  -Changed-     /etc/security/pam_env.conf
  -Changed-     /etc/pam.d/su

Posted: Fri Jun 10, 2005 11:00 am
by xchris
python e' un discordo molto complicato...
prova a vedere un emerge --oneshot python

per i file che non hai mai modificato....eh..

prova a verere con "-sm"

in qualche modo sono cambiati...

ciao

EDIT: i file pyo,pyc vengono cambiati run-time

Posted: Fri Jun 10, 2005 6:22 pm
by fabius
xchris wrote:Vedi un po' se e' ok
Ora funziona, grazie mille!!