Archivi tag: hacking

Live from Moca 2008 (Day III)

Metro Olografix Camp 2008 /1Eccoci all’ultima (mia) giornata al Moca 2008: la manifestazione prosegue in realtà anche domani, ma il sottoscritto lascierà in anticipo causa partenza per Bruxelles programmata per domenica mattina (presto). Viste le previsioni del traffico per la giornata (bollino rosso), l’idea è di partire abbastanza presto, prima delle 18.

Nel frattempo le cose al Moca proseguono sufficientemente bene (con molta invidia di alcune persone che non hanno purtroppo potuto essere presenti): ovviamente persi tutti i talk (e come poteva non essere così), intavolate interessanti discussioni con alcuni dei guru presenti in loco (tra cui per altro da segnalare quattro simpatiche chiacchiere con Capitan Crunch) , fatto una interessante esperienza di packet generation usando le raw socket di Linux, arrivando a scendere fino alla generazione degli header ethernet, con un po’ di pasticci in memoria per ottenere qualcosa di simile al risultato voluto ma senza mai giungere realmente a centrarlo (per mia incompetenza naturalmente). Ci riproverò questa mattina, tanto per dare un senso di compiutezza a quanto appreso in questo frangente nelle utime ore.

Mentre un simpatico venticello ci accarezza (sollevandoci per qualche minuto dalla pesante cappa calda che è ormai protagonista assoluta delle mattinate del Moca 2008) e mentre la telecamera di una qualche emittente televisiva (non meglio identificata al momento) ci filma, impegnata ad intervistare il presidente di Metro Olografix, io chiudo il post.

Capture the flag!

ctf-results.pngErano anni che mi veniva proposto di partecipare a “Capture the flag“, il noto contest internazionale di sicurezza informatica. Più per poca fiducia nelle mie competenze tecniche in fatto di sicurezza informatica applicata che per mancanza di tempo, avevo sempre nicchiato ed evitato. Quest’anno invece, ho ceduto all’insistere di Danilo e Stefano, e alle 19 mi sono presentato al DEI, armato di portatile, pronto a tirare le due di notte insieme agli altri membri del team “The Tower of Hanoi” il cui passato glorioso non poteva che mettere soggezione ai diversi nuovi arrivati.

Dopo qualche minuto di disorientamento (la competizione era già iniziata quando sono arrivato, trattenuto da impegni di lavoro, per cui tutti erano troppo concentrati sui propri compiti per spiegare l sottoscritto i rudimenti necessari anche solo per accedere al sistema di test), ho attaccato la sezione dei quiz, insieme alla persona che mi stava vicino. Entrare nell’ottica del gioco non è stato semplice, ma il mio principale contributo, alla fine della serata, è stato la soluzione del seguente contest:

Dato un “key_validator”, era necessario trovare la “chiave” per ottenere il testo decifrato. Dopo un po’ di analisi, abbiamo appurato che si trattava di php offuscato, senza tag di apertura e chiusura, con una serie di complicazioni atte ad evitare che potesse essere lanciato ‘as is’. Il lavoro di “de-offuscamento” ha preso qualche tempo, e alla fine il codice derivante altro non faceva che uno xor tra un testo ed una chiave (encodata base64), generando una parte di codice php, che veniva poi eseguito passando un parametro via $_GET.

<?php

$key = "Hr5yvogypL";
$code  = "LgdbGgIGCBdQLyAXVhIpCxUULyctCx1dBg";
$code .= "4eFR8tLFtOWVYGAVlYaBc1cC0tTQwcCW4V";
$code .= "TwhMQVZeSUF+YQkVWVZPAhoYI2hSFzBWBR";
$code .= "IKBGwgE1FZF08LEAQ4JBcVHRMFBlkGOWpJ";
$code .= "FVkLT0ccHD8tUhVZDU9HWVApKxpaWyEdCB";
$code .= "cXbBgTRxgbChMcAm5zUhUEVhIBDB4vPBtaF";
$code .= "1YKHxwTOTwXHV0GDh4VHy0sW05ZVk9HGhgp";
$code .= "KxlqHQQCOBIVNWBQF1BNTxoLFTg9AFtZVAo";
$code .= "fHBM5PBcXQg==";

$code = base64_decode($code);

for( $j = 0 ; $j < 214 ; $j++ ) {
    $code[ $j ] = $code[ $j ] ^ $key[ $j % 10 ];
}

$result = eval( $code );
$result( $code );

?>

La soluzione paradossalmente è stata chiara nel momento in cui abbiamo inserito una print_r in una serie di punti del codice, tirando fuori il codice contenuto in quella che avevevamo chiamato $code.

Alla fine della gara (le 2:00 in Italia), ci siamo classificati settimi su trentasei squadre partecipanti, con un punteggio tutto sommato discreto. I miei personali complimenti vanno naturalmente ai vincitori (di gran lunga tra l’altro!), i “cioccolatai”, dell’Università degli Studi di Milano. Il CTF, anche quest’anno, è in Italia.

Guardarci dentro: il Telepass

Sono il (felice) possessore di un apparecchio Telepass, che mi consente di evitare, spesso e volentieri, le lunghe file ai caselli autostradali, ad un costo di servizio assolutamente irrisorio (approssimabile a zero). Recentemente però, da quando in particolare guido l’auto di mio padre, una Grande Punto, ho avuto parecchie noie con il mio fedele apparecchietto, che ha deciso di non volerne sapere di dialogare con le centraline di alcuni caselli. Da alcune valutazioni lanciate li per caso con Danilo, di rientro da Pisa (HackMeeting 2007), ho pensato di smontare il mio apparecchietto per vedere come fosse fatto al suo interno.

Il Telepass è un trasponder RFID attivabile a distanza da un’antenna che trasmette a microonde in DSRC (Dedicated Short Range Communication) ad una frequenza di 5.8Ghz. Si tratta di un apparecchio “semi-passivo”, quindi, dotato di una fonte di alimentazione propria, ma attivato solo su richiesta di un’antenna trasmittente in modo da ridurne il consumo energetico ed allungarne quindi la vita utile. Alcune interessanti informazioni statistiche sul Telepass e sul suo funzionamento, le possiamo reperire qui, anche se le slides non sono proprio aggiornate, e qui.

Step 0

Esternamente, il Telepass si presenta come una scatoletta di plastica dalla forma rettangolare e sezione schiacciata da un lato, di circa 7cm di lato, 3 di larghezza, ed un’altezza variabile tra 1 e 3cm a seconda del lato. Apparentemente sigillata, la scatoletta di plastica non presenta alcuna particolarità (alloggiamenti esterni per batterie o altre aperture), ed è dotata di una striscia di velcro che ne consente il fissaggio al parabrezza del mezzo di trasporto al quale sarà associato.Step 1

In realtà però, con un po’ di prove si scopre che è costituito da tre differenti parti esterne: un divisorio (la sezione gialla) e due coperchi grigi, uno dei quali non è agganciato al divisorio giallo ma solamente infilato tramite alcune punte in plastica. Facendo delicamente leva da un lato e poi dall’altro, lo si può sfilare senza traumi, svelando la piccola scheda elettronica al cui alloggiamento è destinata questa sezione dell’apparecchio.

Sin da subito, su questo lato della scheda, possiamo notare l’antenna (che ne occupa da sola quasi la metà) ed un piccolo circuito elettronico, preposto all’elaborazione del segnale ricevuto dall’antenna. Sull’altro lato della scheda invece, possiamo individuare la presa dell’alimentazione (che proviene tramite una coppia di fili dal vano batterie), ed alcuni altri integrati. Tra gli altri, spicca un componente che non ha apparentemente alcuna incisione indicante la sua natura (al punto che l’ho inizialmente preso per l’apparato preposto all’emissione del tipico suono del Telepass, che potete ottenere ricollegando l’alimentazione dopo averla lasciata staccata per alcune decine di secondi). Fate molta attenzione, perchè si tratta di un componente molto delicato, il cui coperchio si stacca molto facilmente, anche tramite il semplice contatto di un dito.

Step 2

Ai lati del divisorio giallo, possiamo poi individuare due aperture tramite le quali, con l’uso di un semplice cacciavite “a taglio”, possiamo sganciare l’altro coperchio, scoprendo cosi il vano d’alloggiamento delle batterie. Una volta aperto questo scomparto, scopriremo due banali pile AA al Litio (Panasonic nel mio caso) collegate tra loro in parallelo in modo da aumentarne la durata e l’affidabilità. Richiudere il tutto, a questo punto, è solo un gioco di incastri piuttosto semplici.

La tecnologia piuttosto semplice, effettivamente, quella di questo apparecchietto, ma di assoluta efficacia. Infatti, in coppia con l’antenna ricevente, è in grado di gestire oltre 1500 veicoli/ora (il parco clienti attuale è di circa 5.000.000 unità, per una media di 2.000.000 transiti giornalieri) con l’affidabilità di 35 “retry” per ogni transito, garantendo comunque un servizio di performance discrete (in corsia Telepass c’è un limite a 30 km/h, ma l’apparecchio riesce a funzionare, in condizioni ideali, anche a 60 km/h, anche se questo riduce drasticamente il numero di retry possibili sul singolo passaggio).

HackMeeting 2007 Day #0x00

Reduce da una salutare chiacchierata con pm10, che mi ha lasciato in custodia (e ricarica) il suo Shuffle, eccomi a scrivere un “breve” resoconto della giornata odierna, che volge ormai a…l mezzo del cammin di nostra giornata.

Sveglia, questa mattina, alle ore 5:30. Barba (per finta) e via a recuperare il buon Corrado (ore 6:15 pattuite, arrivo alle 6:20), Danilo (ore 6:30 pattuite, arrivo ore 7:00) ed infine Alessio (al quale avevo detto “ore 7:00” e invece sono state le 7:30), anche senza l’aiuto del famoso GPS di Danilo, il quale, basato su Windows CE, ha emesso un bel “bing, Fatal Application Error” dopo 50 metri dalla sua accensione, cercando di capire il perchè non avessi seguito una sua indicazione (perchè ero in senso opposto, ad esempio?).

A quel punto, via sparati in direzione Parma, poi da li verso La Spezia, poi verso Firenze, infine verso Pisa dove “bing, Fatal Application Error – aaaaargh!” siamo arrivati alla stazione, ed infine al CS Rebeldia (dopo aver effettivamente fatto un paio di giri per il centro di Pisa, persi tra i sensi unici, tentando di ottenere informazioni utili dal “bing – Fatal Application Error”).
Scaricati i bagagli e parcheggiata l’auto, abbiamo trovato posto nel LAN-space tra altre 200 persone ed aquistato le magliette della manifestazione (poche per la verità). Il posto è un po’ piccolo, ma ospitale; tra i vari presenti, Vecna, Zeph, Osprey, Asbesto, Giskard, Jaromil, i ragazzi dell’HackLab Caserta e persino “Emmanuel Goldstein” di 2600.

Intorno all’ora di pranzo, insieme a Danilo siamo riusciti a farci un giro fino al Campo dei Miracoli, raggiunta grazie alle preziose informazioni raccolte da Danilo:

Danilo- Salve scusi, sa indicarmi la direzione per Campo dei Miracoli?
Studentessa- Si
– imbarazzato silenzio –
Danilo- Se me la dicesse anche…

Riporto un paio di foto di Piazza del Duomo (il vero nome del Campo dei Miracoli, abbiamo poi scoperto) giusto per dimostrare che ci siamo davvero arrivati.

Campo dei Miracoli Danilo sostiene la Torre

Ritornati verso la stazione, abbiamo appena fatto in tempo a passare a dare un’occhiata al famoso murales di Keith Haring (“Tuttomondo”) ed a comprare 7 (sette) Kebab da distribuire ai 5 (cinque) affamati, di cui tre ci attendevano al centro sociale.

Pomeriggio passato all’insegna della lettura (Agatha Christie – Assassinio sull’Orient-Express), dei tentativi di connettersi ad internet (ho tutto protetto da SSL, tranne SMTP, quindi niente mail in uscita fino a nuovo ordine, non è posto dove dare password in giro :P) con una LAN che non regge il carico anche grazie ad un paio di furboni che la intasano di tentativi di arp-spoofing, e del LockPicking. A dimostrazione della mia prodezza, ho una foto documentale (ho anche un video che “dimostra” che l’ho fatto davvero io :P)

Aperto!!

Infine, 5 minuti fa (mentre già scrivevo questo post), cena vegetariana ed ora si prepara una notte memorabile…

Code is written, future is not

Giocando con Qemu

Ogni tanto a me vengono i 5 minuti, e tiro fuori le cose piu strambe. Probabilmente per tutti gli amici geek che ho quello che ho appena finito di fare non è una cosa strana, ma per i restanti 6 miliardi di persone nel mondo, si, eccome.

Allora, cominciamo a spiegare: qemu è un programma (FLOSS) che emula un computer dentro il computer stesso. Una volta lanciato questo programma, è possibile simulare, al suo interno, tutto quello che un normale pc farebbe. Installare un nuovo sistema operativo, installarvi programmi, formattarlo… tutto quello che si vuole. In gergo tecnico, questi programmi sono noti come “virtualizzatori”.

La cosa carina con cui ho giocato in questi ultimi giorni, è che non serve usare una partizione del disco fisso reale o un vero cdrom per il virtualizzatore. Si può fare l’installazione a partire dall’immagine ISO, usando un singolo file come hard disk.

E allora, mi sono scaricato l’installer della nuova debian Etch, e l’ho installata da iso a file, e ora ci sto giocando. Una volta preso gusto però… L’immagine di NetBSD è già in download. Ovviamente non quella per i386. Quella per ppc! Eh già… qemu virtualizza anche la piattaforma, simulando qualsiasi tipo di processore…

Giocando con SVG e CSS…

Da alcuni giorni, sono impegnato in un lavoro per conto dell’azienda.
Nemmeno la domenica è stata salva, stavolta. Va consegnato in fretta, avevamo altro da fare prima, e quindi va terminato, a costo di lavorare nel weekend. Mi sta bene, anche perchè mi sono divertito parecchio.

Il lavoro in se è piuttosto noioso, ma la parte che è toccata a me è forse quella piu divertente. Il mio compito era quello di scrivere uno script PHP che generasse un grafico circolare a partire da dati inseriti in un database, che poi qualcun altro si sarebbe occupato di riempire adeguatamente.

Al di la che finalmente ho avuto l’occasione di rimettere le mani su PHP e scrivere qualcosa con un minimo di stile (niente di eccezionale, ma sapete com’è, noi programmatori finiamo con l’innamorarci delle chicche che includiamo nei programmi e che di solito la gente poi non vede…), la cosa divertente è stata soprattutto mettere le mani su SVG.

SVG (Scalable Vector Graphic) è un formato di immagini interamente basato su XML. Il che significa che apreno un’immagine con un editor di testo, troveremo all’interno del testo. E questo è “f|k0” già di suo, perchè disegnare un’immagine usando un linguaggio di programmazione è divertente, soprattutto quando ci si deve infilare dentro qualcosa di “psicologicamente impegnativo”, come fargli randerizzare settori circolari in base a pesi diversi dei dati nel database… comunque dettagli.

Alla fine di questa mattinata, lo script era pronto, generava il suo bell’SVG d’esempio, pronto a bersi i dati che erano nel database.

A quel punto che faccio? Beh, mi dico, cominciamo a fare un po di pulizia e spostiamo gli stili fuori dall’SVG e mettiamo il tutto in un CSS. E cosi, sposta tutti gli stili dall’SVG al CSS, in modo da accentrare la configurazione di tutto il grafico (cambiare il colore assegnato ad una determinata tipologia di dato? Basta aprire il file css, sostituire il colore nell’apposita riga, ed il gioco è fatto).

Ma anche questo lavoro è finito presto. E allora? Beh, allora ho tirato fuori dal cilindro questo: animazioni SVG basate su CSS.

Avete presente i popup “pure CSS” di Eric Meyer? Ecco, esattamente la stessa cosa. Solo che invece di farlo stylizzando tag HTML, l’ho fatto su un SVG. Ed il risultato è davvero carino.

Per darvi l’idea, ho scritto un SVG che rappresenta un semaforo, e l’ho animato tramite lo stesso meccanismo, facendo apparire a lato una scritta a seconda del colore su cui puntate il mouse. Il codice SVG del semaforo lo vedete guardando il “sorgente” dell’immagine, mentre il CSS che lo anima è qui.

PS: Dimenticavo, per coloro che usano browser vecchi e che non supportano ancora il formato SVG, Adobe vi viene incontro un un apposito plugin

Motori di ricerca e Privacy

Presso la sede di OpenLabs, esporrò lunedi 26 marzo i risultati della mia “ricerca” relativa a privacy e motori di ricerca, svolta soprattutto analizzando le privacy lines attuali di Google (ma applicabile anche agli altri motori di ricerca) e cercando di vedere le cose con un’ottica d’insieme che troppo spesso tende a sfuggire.