Category: Sorgenti

6
giu


Come preannunciato nell’artcolo precedente sui router Fastweb, mi sono adoperato a studiare la brillante ricerca della WhiteHatCrew sui router di Alice, denominati AGPF, al fine di implementare uno script per la generazione della chiave WPA di default.

More…

Popularity: 100% [?]

5
giu


Oggi mi sono inbattuto per caso in questo servizio, ovvero un servizio per “recuperare” la chiave WPA di un router Fastweb Pirelli.

“Bene” mi sono detto, “Se hanno questo servizio, avranno anche una pagina dove spiegano l’algoritmo e pubblicano il codice” .

Beh, la pagina c’era, e non era nemmeno un loro lavoro bensì quello di un altro gruppo (vedere il link “fonte” alla fine di quell’articolo), ma non c’era il sorgente!

In pratica, queste persone, hanno preso il lavoro che altri hanno pubblicato liberamente e per tutti, lo hanno ri-pubblicato (citando la fonte eh, per carità), ne hanno ricavato un servizio (guarda caso un servizio che fa gola a molti su un sito con degli ads pubblicitari) ma non hanno condiviso a loro volta le conoscenze distribuendo il codice del servizio … un po disonesto non vi pare?

Cioè, se io prendo un informazione libera, sono moralmente tenuto a rendere altrettanto libera qualsiasi opera io ne possa ricavare … non legalmente, ma moralmente.

Ebbene, ci penso io con un mio script fresco fresco :D

More…

Popularity: 73% [?]

22
apr
Redis client library for Hybris
Postato da il 22-04-2010 alle ore 18:18:57


E’ disponibile, presso questo repository, una libreria scritta in Hybris per connettersi al database Redis, progetto che sta facendo passi da gigante grazie al supporto della comunità open source e soprattutto del suo creatore Salvatore Sanfilippo.

Questa libreria vuole essere sia un omaggio che un contributo alla scena open italiana e soprattutto agli sforzi di uno sviluppatore brillante, in un paese che sembra ne incoraggiare ne ricompensare menti di questo tipo.

Popularity: 8% [?]

22
mar
Hybris memory lookup, now Google powered!!!
Postato da il 22-03-2010 alle ore 01:32:26


No, non ho inserito un motore di ricerca dentro Hybris (sarebbe figo però vero? XD) !

Mi spiego … profilando un po l’interprete, mi è parso evidente che una delle funzioni che veniva richiamata più spesso durante l’esecuzione di uno script, come è facile immaginare, è quella per il look up delle variabili in memoria.

In pratica è la funzione che, dato il nome di una variabile (quindi una chiave), deve trovare l’oggetto associato all’interno del’array associativo che rappresenta la memoria virtuale di Hybris .

Così ho pensato a come ottimizzare l’algoritmo di ricerca, che prima si limitava a scorrere l’array contemporaneamente dall’inizio verso la fine e dalla fine verso l’inizio (in realtà un espediente abbastanza inutile quando ci sono poche variabili, ma quando sono molte si fa sentire) e ho capito che mi conveniva utilizzare una hash table .

Questo tipo di struttura è tanto efficiente quanto difficile da realizzare e, pensando che avrei impiegato giorni, se non settimane, per buttare giù un implementazione ottimizzata al massimo, mi son messo a cercare online se ne esistevano già di pronte e soprattutto di facilmente integrabili con quanto scritto fin’ora .

E che ti vado a scoprire?

More…

Popularity: 8% [?]

20
mar
Gestione “Smart” Della Memoria In Hybris : Parte II .
Postato da il 20-03-2010 alle ore 23:20:46


Come detto nell’ultimo articolo, negli ultimi commit di Hybris è stato inserito un garbage collector strutturato in modo tale da districarsi al meglio tra le varie ricorsioni e i vari deliri di allocazione nell’interprete .

Nell’articolo avevo anche detto che questo sistema, nonostante avesse il vantaggio di diminuire drasticamente l’utilizzo della memoria durante l’esecuzione di uno script, aveva lo svantaggio di diminuire anche le prestazioni complessive dato com’era strutturato l’algoritmo per determinare se un dato oggetto era deallocabile durante l’esecuzione dello script stesso, algoritmo che effettuava diversi controlli, tra i quali due loop (quelli che rappresentavano maggiormente il collo di bottiglia) sul frame della funzione chiamante e su quello della memoria principale.

Ebbene, sono un coglione XD .

Si avete letto bene, sono un coglione perchè avevo strutturato l’algoritmo ragionando “a posteriori” senza pensare che prevenendo questo controllo si poteva risolvere il problema ed aumentare anche le prestazioni rispetto a prima .

More…

Popularity: 6% [?]

28
feb


Da quando ho preso un server dedicato (e ne ho cambiati parecchi XD), ho iniziato a studiare per bene il tuning dei vari demoni che utilizzo per ottenere il massimo delle prestazioni con il minimo consumo di risorse .

Inutile dire che mi si è aperto un mondo, ho decisamente rivalutato il lavoro dei sistemisti (di quelli seri almeno) che spesso può risultare ben più ostico di quello di uno sviluppatore, dovendosi barcamenare tra documentazioni fatte male, file di configurazione gigantenormi, miriadi di parametri per ogni demone ecc ecc ecc.

Una delle funzionalità che non conoscevo e che ho scoperto durante questo periodo di studio, è il caching delle query di MySQL .

In parole povere il server MySQL, dopo aver abilitato tale configurazione, inizierà ad inserire in un suo storage in memoria (almeno credo sia in memoria) i risultati delle query che secondo lui sono cachabili in modo tale da non dover ogni volta rieseguirle, ma dovendo semplicemente prelevare i risultati da quel suo storage aumentando di parecchio le prestazioni generali di una web application che faccia un uso massiccio del database (perchè esistono ora come ora web app degne di chiamarsi così che non usano un db? :P ).

E’ ovvio che questa funzionalità può essere abilitata se e solo se si ha la possibilità di mettere mano sui file di configurazione del proprio server, cosa che naturalmente è impensabile per coloro che hanno un normale hosting condiviso che a malapena sono liberi di smanettare nella loro directory web.

Per questo motivo ho scritto un piccolo set di funzioni PHP che fanno questa cosa al posto del demone MySQL dando a chiunque la possibilità di aumentare notevolmente le prestazioni del proprio sito PHP/MySQL based ^^

More…

Popularity: 8% [?]

21
dic
C Stack Inspection
Postato da il 21-12-2009 alle ore 17:13:49


Un po di tempo fa mi son posto un quesito :

Avendo un puntatore ad una variabile allocata sullo stack (non l’heap, quindi memoria statica), è possibile determinare quanti byte ci posso scrivere al massimo prima di andare in overflow ?

Naturalmente, nel caso di una stringa con la corretta terminazione nulla, basterebbe una semplice chiamata a strlen ed il gioco è fatto … ma avendo un puntatore “generico”, del quale non si sa niente, ne il tipo di dati ai quali punta, ne se è terminato, o altro ?

Voi potreste dire “e a che scopo fare una cosa del genere ?”

Beh, immaginate di dover scrivere una libreria .so o .a e, in una delle varie funzioni che volete esportare, di ricevere come parametro un puntatore del quale non conoscete la natura e nel quale dovete scrivere delle informazioni … non sarebbe utile (più che altro doveroso XD) accertarsi quanto potete scrivere prima di fottere tutto ?! :D

Inizialmente pensai ad una soluzione drastica, un piccolo modulo kernel che si interfacciava al gestore della memoria per darci le info necessarie sul puntatore in questione, ma oltre che ad estremamente complicata come soluzione, ho scoperto che era anche inutile!

Ebbene si, dopo tante ricerche e ore di studio, ho scoperto finalmente il modo :)

More…

Popularity: 17% [?]

3
nov
Aggiornamento Hybris : Strutture e Server Socket
Postato da il 03-11-2009 alle ore 18:22:35


Già da tempo Hybris è dotato (o dotatA ? :D ) delle funzionalità necessarie per il loading dinamico delle librerie (i file .so su Linux e in futuro le .dll di Windowz), così ieri mi sono messo a lavoro per estendere il supporto anche alle funzioni che richiedono come parametri delle strutture.

More…

Popularity: 3% [?]

19
giu
WP-Sentinel Pubblicato
Postato da il 19-06-2009 alle ore 13:32:45


Ho appena fatto le ultime modifiche fino ad arrivare alla versione 1.0 di WP-Sentinel e ho deciso di renderlo pubblico .

Potete trovare il codice e le istruzioni per l’installazione la configurazione a questa pagina … proprio perchè mi sono sbattuto per scrivere il file README, NON risponderò ad alcuna domanda riguardante installazione e configurazione ma solo ad eventuali domande tecniche o che comunque reputerò intelliggenti .

Riporto brevemente la versione italiana del readme :

More…

Popularity: 11% [?]

17
giu
Kerby – Light weight video surveillance system.
Postato da il 17-06-2009 alle ore 14:30:48


Con mio grande piacere ho avuto modo di constatare che l’installazione di una webcam v4l compliant sulla mia scheda Alix è estremamente semplice, così mi è venuto in mente di riadattare un mio vecchio sistema di video sorveglianza per questa scheda, migliorandone le prestazioni, ottimizzandolo, etc .

Così è nato Kerby, per ora è poco quello che fa (ho appena eseguito il primo commit su github), mostra semplicemente la percentuale di movimento che il software rileva dalla webcam, ma presto diventerà qualcosa di molto + utile ;)

Pagina del progetto

Popularity: 3% [?]