Bash

Resettare una password di drupal

Posted in Bash, Web Dev on January 8th, 2010 by ildipendente – 4 Comments

Vi è capitato di dover resettare una password di Drupal? A me sì! Non capisco perchè ma mi fischiano le orecchie…

Come Drupal memorizza le password

Spulciando nel modulo user di Drupal si può notare che fino alla versione 6 la password viene memorizzata come semplice hash md5. Questo era il mio caso.

echo -n password |md5sum

et voilà. Potete inserire il valore ottenuto nella tabella utenti.

Ps: nella versione 7 la cosa è un filo più complicata. La password viene concatenata con un salt e il tutto viene compresso iterativamente e codificato base64..


  $hash = md5($salt . $password, TRUE);
  do {
    $hash = md5($hash . $password, TRUE);
  } while (--$count);

  $output =  $setting . _password_base64_encode($hash, 16);
  // _password_base64_encode() of a 16 byte MD5 will always be 22 characters.
  return (strlen($output) == 34) ? $output : FALSE;

fico! Non avrei idea di come ricavare l’originale… Per ricalcolare la password in questo caso è necessario farsi un piccolo script di shell o php…

Resettare una password di vBulletin

Posted in Bash, Web Dev on April 29th, 2009 by ildipendente – 1 Comment

I casi sono due: o siete come il 99% delle persone che usano una password per tutto, dal cancello automatico a gmail oppure siete come me, che ha la stessa password per tutto ma ogni tanto, in uno slancio di simpatia, decide di scegliere una password un pò meno stupda del solito. Risultato: la password verrà inesorabilmente dimenticata.

Un paio di giorni fa ero davanti ad una situazione simile. Avevo installato vBulletin e configurato tutto, fatto l’importazione dei contenuti e… dimenticato la password di admin appena avevo finito.

Quando qualcun altro voleva iniziare a lavorare sul forum sono iniziati i problemi. Per fortuna resettare una password non è una cosa difficile se si ha accesso al database.

Come vBulletin memorizza le password

Spulciando un pò nella tabella user di vBulletin possiamo vedere che la colonna password non contiene la password in chiaro (troppo facile se no…) ma una cosa del tipo edf7629646355502c7dbd4d1cc7454b8. vBulletin infatti calcola un hash md5 della password stessa, concatena il risultato con un salt (indovinate dove è contenuto? Esatto, nella colonna salt) e calcola un ulteriore hash md5 della stringa risultante. Se la password è “password” e il salt è “XvT”:

md5(md5('password').'XvT')

o se preferite in bash (io uso il mac ma su linux il comando per calcolare l’hash è md5sum se non sbaglio )

neuromante:~ orso$ echo -n password | md5
5f4dcc3b5aa765d61d8327deb882cf99
neuromante:~ orso$ echo -n 5f4dcc3b5aa765d61d8327deb882cf99XvT | md5
a754fb443a1a435efb6aa361f57f0120

A questo punto vi basta inserire il risultato nel campo password ed il gioco è fatto

Il file ha un’estensione sbagliata… come lo apro???

Posted in Bash on April 27th, 2009 by ildipendente – 3 Comments

Vi è mai capitato di avere un file con una estensione sbagliata e di non sapere con quale programma aprirlo? A me sì! L’altro giorno un cliente mi ha mandato un file che in teoria doveva essere il dump di un database (e quindi un tranquillissimo file di testo con una sfilza di istruzioni SQL) ma in pratica era una serie di allegri caratteri a caso. Per fortuna Manuel ha avuto l’idea di guardare la signature del file con hexdump:

head dump.sql | hexdump

i primi byte erano 1F 8B 08 cioè la signature dei file gz! Et voilà problema risolto! Grazie Oracolo!

Con una mini ricerca ho trovato una lista non credo esaustiva ma molto ricca di signature

Link simbolici ai file di una directory

Posted in Bash on April 22nd, 2009 by ildipendente – Be the first to comment

Ogni due/tre mesi mi capita di dover creare dei link simbolici a tutti i file di una certa directory. Se ci pensate poteva andare anche peggio… avrei potuto drogrami…

Ad ogni modo, dato che puntualmente mi dimentico come si fà, e ogni volta passo un buon quarto d’ora davanti a “man ln” con lo sguardo da triglia (segue un  broadcast all’interno di Ideato del tipo “come #@!! si fààààààà?????”) lo scrivo qui

In realtà è semplicissmo:

ln -s directory_sorgente/* directory_destinazione