Archivi tag: hacking

Abilitare Mi sento fortunato su Opera

Recentemente avevo spiegato come abilitare il Mi sento fortunato di Google su Chrome, ora vediamo lo stesso procedimento per Opera.

Andiamo su Strumenti => Preferenze, clicchiamo su Aggiungi, ed inseriamo le impostazioni come in figura:

Cliccare per ingrandire

Quella importante è l’indirizzo, dovete inserire:

http://www.google.com/search?sourceid=navclient&ie=UTF-8&q=%s&gfns=1

ed abilitare Usa come motore di ricerca predefinito.

Ora la ricerca è funzionante, ma c’è un problema: se inseriamo solo un termine nella barra della ricerca, Opera non va a chiedere a Google il risultato predefinito. Purtroppo a questo non pare esserci soluzione, aggiornerò il post in caso trovi qualcosa.

Abilitare il Mi Sento Fortunato su Google Chrome

Google Chrome

Chi come me è passato da Mozilla Firefox a Google Chrome (Chromium per Linux), sente la mancanza di un’ottima caratteristica del browser, che consente di risparmiare un sacco di tempo durante il suo utilizzo abituale.

In Firefox, se scrivo una parola nella barra degli indirizzi, posso avere due comportamenti:

  1. Se la ricerca è rilevante in percentuale altissima, redirige automaticamente sulla pagina più rilevante (in pratica è come fare Mi sento fortunato)
  2. Se i risultati della ricerca sono dubbi, lascia all’utente la scelta di quale pagina visitare, mostrando la pagina classica dei risultati di Google.

In Chrome invece questa caratteristica non è presente: mostra sempre i risultati della ricerca classica.

Per portare anche in Chrome questa ottima caratteristica, seguire questi passi:

  • Cliccare sulla chiave inglese (in alto a destra) e scegliere Opzioni
  • Sulla Ricerca Predefinita, scegliere Gestisci
  • Premere Add e impostare parametri come questi:
    I parametri per la nuova ricerca

    In URL inserire questo:

    {google:baseURL}search?{google:RLZ}{google:acceptedSuggestion}{google:originalQueryForSuggestion}sourceid=navclient&ie={inputEncoding}&q=%s&gfns=1

    (Fare click su View source code qui sopra per visualizzare il testo completo)

  • Fare Salva e poi impostarlo come predefinito nella finestra successiva.
  • Ora se scriviamo delle parole chiave nella barra, si comporterà come Firefox. Se però volessimo temporaneamente fare una ricerca con Google classico, ho preferito utilizzare questo stratagemma:
  • Tra i motori, cliccare su Google (quello che punta a google.it), e scegliere Modifica
  • Cambiare la parola chiave ed inserire g al suo posto.
  • D’ora in avanti, se vogliamo fare una ricerca temporanea su Google, basterà anteporre g alle parole chiave. Ad esempio: g polpoinodroidi.
  • Servire freddo (D)

Decriptare file PHP protetti con SourceCop

Mi è capitato oggi di imbattermi in un file criptato, di questo tipo:

<?php if(!function_exists('findsysfolder')){function findsysfolder($fld){$fld1=dirname($fld);$fld=$fld1.'/scopbin';clearstatcache();if(!is_dir($fld))return findsysfolder($fld1);else return $fld;}}require_once(findsysfolder(__FILE__).'/911006.php');$REXISTHECAT4FBI='BLABLA';g0666f0acdeed38d4cd9084ade1739498(f0666f0acdeed38d4cd9084ade1739498(__FILE__));$REXISTHEDOG4FBI='BLABLABLA';$REXISTHECAT4FBI='94CD76CD371C5A7BC70C186E779C293B9B49BACA5A781A6'; eval(y0666f0acdeed38d4cd9084ade1739498('1034 6 E73D03055E3',$REXISTHEDOG4FBI));?>

Dopo una rapida ricerca ho scoperto che tale codice è prodotto da un simpatico programma (a pagamento), di nome SourceCop.

Questo programma permette di criptare dei file PHP, in modo da poterli distribuire ma senza renderli apparentemente comprensibili per un essere umano.

Apparentemente. Perché in pochi minuti ho trovato un rapido modo per decriptarli, vediamolo insieme.

  • Modificare il file ./scopbin/911006.php, e modificare la stringa:
    return (strstr($s,'echo')==false?

    in:

    return (strstr($s,'NONROMPERE')==false?
  • tornare al file criptato, e alla fine del file modificare:
    eval(y0666f0acdeed38d4cd9084ade1739498('1034 6 E73D03055E3',$REXISTHEDOG4FBI));

    in:

    echo(y0666f0acdeed38d4cd9084ade1739498('1034 6 E73D03055E3',$REXISTHEDOG4FBI));
  • eseguire lo script, e verrà mostrato il sorgente precedentemente criptato.
  • servire freddo. (D)

Per capire cosa ho fatto: il programma lascia salvato il codice criptato in una variabile, che decripta alla fine del file e la esegue (attraverso eval). Quindi è sufficiente stampare a video il contenuto della variabile già decriptata, invece che eseguirla.

Nota: nel file 911006.php c’è una debolissima protezione contro attacchi di questo tipo: si controlla che il file criptato non contenga funzioni come echo(), print()

Ovviamente basta eliminare questo piccolo controllo per poterle comodamente utilizzare.

Aggiungere smileys animati con Pidgin? Certo!

Il piccione parlante
Il piccione parlante

UPDATE 30/05/09: ho riscritto la patch da zero in seguito alle modifiche recenti nel ramo di sviluppo, gli effetti sono gli stessi ma il procedimento seguito diverso :-)

Con pidgin, se cerco di aggiungere uno smiley ricevuto da un amico ai miei smileys, ho come effetto che viene salvato solo il primo frame, in pratica perde l’animazione.

Irritante.

Più irritante se penso che questo problema c’è da tempo immemore ma gli sviluppatori continuano a chiudere il ticket con stato: wontfix, perché il GdkPixBuf (non sviluppato da loro) non supporta il salvataggio in gif.

Bene, siccome mi ero rotto il cazzo di questa cosa, e un po’ per sfida, ho scritto una patch che utilizza un metodo non troppo pulito, ma che permette di aggiungere sto coso.

Come provarla?

Il metodo più semplice è quello di installare la versione di pidgin del mio repository, oppure se siete smanettoni dovrete applicare la patch al sorgente che dovete prendere dal ramo di sviluppo (attraverso monotone), applicarla, compilare ed installare pidgin! :-) [se avete bisogno di info a riguardo, contattatemi]

Per gli utenti di windows: la patch funziona (credo) anche per win, solo che non ve la posso compilare, dovrete farlo voi :-P

Problemi noti:

  • La patch permette di aggiungere uno smiley, non di salvarlo come immagine. Almeno per il momento. La nuova versione della patch (v0.6) permette anche di salvarli su file :-)
  • L’ho testata un pochino, ma non è mai sufficiente: ho bisogno di feedback ragazzi, datevi da fare e provatela!
  • Utilizzerà un po’ più memoria. Beh a dire il vero si parla magari di una 50ina di kB con un migliaio di smileys visualizzati, ma sono pignolo :-P
  • L’ho testata solo sul ramo di sviluppo (attualmente la 2.6.0dev), se qualcuno vuole portarla al ramo stabile (2.5.5) è il benvenuto :-)

Nerd area: come funziona funzionava (prima della v0.7)

Al momento della ricezione dello smiley, lo stream di dati viene salvato come file all’interno della cartella ~/.purple/remote_smiley_cache, con un nome univoco e nel formato originale inviato dal nostro contatto.

Viene creata una corrispondenza smiley_visualizzato<==>file_in_cache, in modo che al momento in cui faccio tasto destro sullo smiley e clicco su Aggiungi smiley personalizzato, lui non vada a chiedere al GdkPixBuf di salvarglielo, piuttosto gli chiedo di andare a leggere il contenuto del file in cache e di salvarlo tra gli smileys personalizzati.

Leggetevi la patch per maggiori info. Lo so, non è commentata, ma il codice di pidgin purtroppo non lo è mai, quindi ho semplicemente seguito lo stile attuale.

Firefox, errore nssessionstore NS_ERROR_NOT_AVAILABLE

Da ormai 2 anni un problema mi affliggeva: firebug segnalava i seguenti errori, in ogni pagina:

[Exception… “Component is not available” nsresult: “0x80040111 (NS_ERROR_NOT_AVAILABLE)” location: “JS frame :: file:///usr/lib/firefox-3.0.7/components/nsSessionStore.js :: sss_saveState :: line 1909” data: no]

[Exception… “Illegal value” nsresult: “0x80070057 (NS_ERROR_ILLEGAL_VALUE)” location: “JS frame :: file:///usr/lib/firefox-3.0.7/components/nsSessionStore.js :: sss_saveState :: line 1909” data: no]

In pratica è dovuto al fatto che la sessione, in seguito ad uno dei tanti crash del browser, si era corrotta. Il problema è che non c’erano solo questi fastidiosi errori, ma la sessione si salvava SOLO se chiudevo regolarmente il browser, mentre se crashava addio tab aperte.

Ora, grazie ad un commento su un blog, ho finalmente trovato la soluzione, e creato una patch che risolve il problema.

Procedimento

Installiamo (se non ce l’abbiamo già) il programma patch:

sudo apt-get install patch

Eseguiamo in un terminale i seguenti comandi:

cd /usr/lib/firefox-3.0.7/components
wget http://polpoinodroidi.com/download/plugins/firefox-ns-error.patch -O- | sudo patch -p1

Nei comandi qui sopra, sostituite 3.0.7 con il numero di versione del vostro Firefox.

Riavviate firefox e sorridete alla vita. (D)

IMPORTANTE: dovete ripetere il procedimento ad ogni aggiornamento di firefox che farete (a meno che non correggano direttamente loro questo bug).

Wardriving

Molto bene, passiamo ora ad un argomento puramente informatico, il wardriving.
Cos’è?
Il wardriving e’ l’arte di andare a caccia di reti wifi, cercando di penetrare nelle normali reti 802.11b/g.
Perchè?
Per vari motivi. Innanzitutto per divertirsi, cercando di superare le barriere; oltretutto per aumentare la propria conoscenza nel campo della sicurezza: infatti ho imparato come rendere sicura la mia rete wireless proprio imparando dagli errori degli altri; se io riesco ad entrare nella loro rete, vuol dire che non e’ abbastanza protetta. In tal caso, e’ sempre bene cercare di avvisare l’utente, facendogli presente che la sua rete e’ piena di buchi, e dovrebbe correre ai ripari prima che qualche malintenzionato faccia uso della sua rete a sua insaputa, magari per scopi terroristici, garantendosi l’anonimato.
Let’s Rock!
Cosa ci serve? Consiglio Linux, perche’ permette di fare cose molto complesse ed e’ super flessibile, e’ decisamente adatto a questo scopo. Gli esempi di questi articoli si basano su Ubuntu Linux Feisty Fawn (7.04).
Installiamo i vari programmi di cui avremo bisogno: (controllate di avere i multiverse e universe abilitati tra i vostri repository)

sudo apt-get install kismet aircrack-ng

(continua)