mercoledì 19 dicembre 2007

Nuovo progetto su sourceforge: szTreeView

In questi giorni, io ed un mio amico, stiamo preparando un nuovo progetto sf. E' il lavoro che abbiamo fatto per l'esame di Sistemi Distribuiti (che mi è valso un 30L ed una collaborazione di 6 mesi in università..).

Il risultato finale è piuttosto difficile da spiegare in poche parole, ma ci proverò lo stesso, senza entrare troppo nei dettagli: una libreria javascript per gestire strutture dati ad albero con metodi per accedere alla struttura e modificarla (getNode, openNode, addNode, removeNode ..)in "java style". Infatti abbiamo cercato di imitare la struttura degli alberi java, prevedendo per esempio la presenza di uno UserObject associato ad ogni nodo.
L'albero inoltre è in grado di usare una libreria ajax (ajaxLoader, scritta ad hoc) per caricare il sottoalbero e notificare eventuali modifiche effettuate dall'utente. Altra caratteristica importante è la possibilità di rappresentare e tenere allineate una struttura dati java lato server con la visualizzazione javascript lato client (condivisa tra più utenti).

E qua si arriva al problema grosso: gestire le modifiche in ambiente distribuito. La soluzione è la seguente: come ogni sistema di controllo di versione non facciamo altro che affidarci ad un revisionNumber incrementale; visto che su http non è prevista l'opzione 'push' (con il server che avvisa di sua spontanea volontà il client) abbiamo implementato gli altri modi possibili: il polling e la notifica dei cambiamenti al momento della risposta di un messaggio del client.

Abbiamo inoltre preparato diverse classi java atte alla gestione dell'albero e degli accessi in modifica. Per cui esistono classi base da estendere e interfacce da implementare per poter adattare la libreria alla propria situazione: per esempio in alcuni casi la struttura ad albero deriva da query ricorsive su database piuttosto che da un file xml o altro

Nel package trovano posto anche delle taglib JSP per velocizzare la stesura delle pagine jsp che utilizzano questa libreria.

Il nome del progetto originariamente era jsTreeView, che su sourceforge è già presente, per cui abbiamo usato le iniziali dei nostri cognomi.. per cui il risultato è szTreeView.

Vista la dimensione che ha raggiunto, è un progetto a cui teniamo molto, per cui spero di riuscire a dedicargli abbastanza tempo da tenerlo vivo ed utilizzabile. A breve il primo commit e se qualcuno ha intenzione di utilizzarlo mi contatti senza problemi

lunedì 17 dicembre 2007

u4j2rsf: First Commit

Ho finalmente effettuato il primo commit su svn del mio progetto.
A causa di una leggera forma di influenza sono rimasto decisamente indietro. Ho cominciato a committare più che altro perchè mi serve poter accedere da più computer (per ora sviluppavo questo progetto sul portatile, che sta letteralmente cadendo a pezzi), ed un ottimo sistema di controllo di versione è la cosa ideale.

il fatto che automaticamte il repository sia pronto rende tutto più semplice: infatti non dovendo fare l'svn import, per iniziare a sparare i sorgenti su sf, non ho dovuto fare altro che:


svn co https://u4j2rsf.svn.sourceforge.net/svnroot/u4j2rsf u4j2rsf
mkdir trunk
[ aggiunta di tutti i miei file dentro questa cartella ]
svn add trunk


ora ricreo il progetto eclipse, setto i vari svn:ignore ed è tutto pronto :)

lunedì 10 dicembre 2007

L'importanza di loggare

Visto che sto cercando il modo migliore per utilizzare il package java.util.logging (JUL) per il mio progetto u4j2rsf, spendo due secondi per sottolineare l'importanza di usare una infrastruttura di logging all'interno delle applicazioni.

Da tempo ormai uso log4j per java e devo dire che mi trovo davvero bene. Ho usato anche commons logging ed ora sto provando ad usare direttamente il package JUL, già incluso nella jdk.

Il concetto alla base è il seguente: nel codice inserisco dei comandi di questo framework per tracciarne l'esecuzione e verificare il contenuto degli oggetti o delle variabili centrali su cui si svolge l'esecuzione del programma.

Questi comandi definiscono una priorità, per esempio log4j ha trace, debug, info, warning, error e critical, il JUL usa altri termini: finest, finer, fine, config info, warning e severe, ma il concetto è lo stesso.
In base ad un file di configurazione, posso decidere fino a quali messaggi stampare, per cui in fase di sviluppo vorrò leggere almeno i debug, se non proprio i trace, mentre in produzione posso limitarmi ai warning, in caso di problemi posso abbassare la priorità e monitorare meglio i file di log.

Ma ovviamente non finisce qui la questione: posso definire diverse destinazioni per i log. Per esempio posso stamparli in console, su file o addirittura (log4j) spedirli via mail.

Framework del genere esistono per tutti i linguaggi (pure javascript, per intenderci..), non appesantiscono più di tanto l'esecuzione del programma ma rendono la fase di debug meno stressante e, secondo me, l'attività di log è un fattore importante per valutare la qualità di un software.

sabato 8 dicembre 2007

WebService per cambio valute

Io adoro i web service. L'idea che Internet venga usato come rete di servizi invece che rete di informazioni la trovo interessante.
E non per niente, su questo argomento, ci ho fatto la tesi della laurea di primo livello.

Ed ora, dopo tre anni, mi trovo ad usarli per la prima volta in ambito lavorativo. Altri progetti in cui avevo proposto di utilizzarli non sono mai partiti. Invece ora devo accedere al più classico dei web service: il cambio di valuta.

Dopo un po' di giri per la rete ecco qui quello che fa al caso mio: http://www.webservicex.net/WS/WSDetails.aspx?CATID=2&WSID=10.

c'è anche, ovviamente, il link al descrittore del webservice: il WSDL.

In pochi step riesco ad accedervi dal mio codice java:
- scaricare apache axis
- dare in pasto il descrittore a WSDL2Java, che genera classi java per accedere al web service lì descritto: java org.apache.axis.wsdl.WSDL2Java http://www.webservicex.net/CurrencyConvertor.asmx?WSDL (dopo aver messo i jar di axis nel classpath)
- importare le classi generate nel mio progetto
- utilizzare le classi:

CurrencyConvertor convertor = new CurrencyConvertorLocator();
double rate = convertor.getCurrencyConvertorSoap().conversionRate(Currency.EUR, Currency.USD);

Ed il gioco è fatto: attraverso il contenuto del WSDL, axis ha generato il metodo conversionRate che effettua (su un protocollo condiviso in formato xml, SOAP) la chiamata "ConversionRate" al webservice passandogli due Currency come parametri, e ricevendo come risposta un double.

In questo modo io non so com'è la logica dietro all'esecuzione del metodo, ma so che ci posso accedere tranquillamente ed essendo tutto basato su XML, ho l'interoperabilità tra linguaggi, per cui, per esempio, posso scrivere un web service in Java ed accedervi da Perl.

venerdì 7 dicembre 2007

Nuovo progetto su sourceforge: u4j2rsf

La mia latitanza dal blog, anzi da internet in generale, attualmente è dovuta ad un progetto che mi serve per un esame: u4j2rsf.

Praticamente: visto che non si è trovato un modo per tradurre i report generati da Understand for Java al formato Rigi Standard Format necessario ad ARMIN, ho deciso di provare a scriverne uno.

Mi sono appoggiato a sourceforge per poter avere una serie di strumenti necessari a me e a chi dovrà usare il software in futuro, per segnalare bug, fornire documentazione e seguire l'andamento dello sviluppo.

Ed ho scelto sourceforge ovviamente perchè credo nel software libero e sono sicuro che questo sarà solo il primo mio contributo alla causa. Ben presto, infatti, arriverà anche la libreria javascript per la gestione di strutture dati ad albero, a cui ho dedicato un sacco di tempo e di cui vi parlerò un'altra volta..

mercoledì 28 novembre 2007

ARMIN: Architecture Reconstruction and Mining 2

Le mie avventure con armin procedono meglio di quanto potesse sembrare al momento del
primo post a riguardo
. Per cui l'obiettivo è dare l'esame entro due settimane.

Comunque la cosa che trovo al momento più interessante è il fatto che questo strumento si appoggi a due file (semplici file di testo, per fortuna) distinti per compiere il suo lavoro.
Il primo file è uno schema, una definizione di relazioni per cui, potenzialmente, ne possiamo aggiungere ad oltranza per spiegare meglio i rapporti tra i vari componenti di un'architettura software.
Il secondo è un file generato attraverso un parser: il rigi. E' interessante notare la semplicità del report del rigiparse che consiste in un file di testo con 3 colonne: ; per cui se la funzione fkt3 accede alla variabile var3 nel file .rsf (Rigi Standard Format) trovo:

accesses fkt3 var3

Riga che verrà correttamente interpretata da ARMIN grazie alla presenza nel file .txt di schema della riga:

accesses, function, variable

che definisce la relazione accesses.
A questo punto credo che il grosso lavoro "concettuale" sia fatto dal parser, che deve tracciare la presenza e l'utilizzo delle funzioni e delle variabili, mentre ARMIN si occupa di raccogliere queste informazioni, collegarle e renderle visualizzabili.

Resta il dubbio sull'utilizzo del package borland.. appena ho tempo indagherò bene sulle funzioni di quelle classi

lunedì 19 novembre 2007

mtr - a network diagnostic tool

Visto che per l'ennesima volta stavo monitorando la mia adsl con questo tool, ho deciso di dedicare qualche riga a mtr, un tool pratico e leggero per analizzare la situazione della rete, nel caso qualcuno non l'avesse mai sentito.

Premessa:la mia fottutissima linea VOIP ha un sacco di problemi.
Quando mi chiamano a casa, c'è una buona probabilità che la linea cada nei primi 5 secondi (giusto il tempo di capire chi chiama). Se invece si passa indenne questa prima fase, si può parlare all'infinito. Questo capita soprattutto durante il giorno ed, usando mtr, coincide con un alto ping tra il mio gateway voip ed il primo hop.
Perdere 200/300 millisecondi tra casa mia e la centralina di riferimento non mi sembra ottimale.. Mentre la sera questa latenza scende ad un valore più accettabile (ma comunque alto) di 85-120.
Vabbè, arrivo al dunque: questo tool è semplice da usare e vi elenco i parametri più comuni:
mtr <opzioni> <nome-host>
dove le <opzioni> possono essere:
* -c <count>: manda <count> pacchetti su cui fa una breve statistica (min, max, avg e deviazione standard)
* -r: modalità report: in combinazione con -c stampa i risultati dopo pacchetti
* --interval <seconds>: attesa in secondi tra un pinh e l'altro
* --no-dns per non risolvere gli hostname ma lasciare gli indirizzi ip

quindi per dare un'occhiata rapida allo stato della rete:
mtr -c 5 -r www.debian.org

per mandare invece pacchetti fino all'interruzione con control-c:
mtr www.debian.org

Sinceramente secondo me ci sarebbero delle migliorie da fare, del tipo al control-c stampare il report, perchè allo stato attuale lanciare mtr -r www.debian.org non ha alcun senso..

domenica 11 novembre 2007

Il calcolo parallelo

Nonostante l'esame di domani (uno degli ultimi dannatissimi 4 esami che mi mancano), spendo qualche minuto per citare una definizione di calcolo parallelo data dal mio docente sulle slide del corso.

Non so se è farina del suo sacco o è a sua volta una citazione, ma è sicuramente di grande effetto.. e mi ha colpito, anche se forse ci sarebbero da aggiungere delle precisazioni..


Il calcolo parallelo è un tentativo di massimizzare quella risorsa infinita ma apparentemente scarsa chiamata tempo.


spettacolo :)

venerdì 2 novembre 2007

Funzionamento CDT part2

Un punto da chiarire che ho tralasciato nel post precedente è che CDT non è un compilatore, ma un ambiente di sviluppo, un IDE, a sua volta incluso in un IDE, Eclipse. Le operazioni che esegue sono quindi finalizzate a supportare l'utente nella stesura del codice e non alla creazione di eseguibili.

Per far questo fornisce al programmatore un aiuto considerevole in fase di sviluppo grazie principalmente a tre caratteristiche: la ricerca, la navigazione nel codice (ricreando una outline per raggiungere e organizzare alcuni punti salienti del file sorgente) ed il content assist (cioè fornisce suggerimenti legati al contesto).
Per raggiungere questo obiettivo, puntando anche a mantenere alte le prestazioni, si è resa necessaria la stesura di una serie di componenti atti all'analisi del codice, attività che si svolge in due macro fasi: Scanning/Preprocessing e Parsing (vedi questo post) .

Altro nodo centrale è la compatibilità tra compilatori. Infatti esistono innumerevoli compilatori C, ognuno con supporto a diverse caratteristiche e con diverse estensioni che li rendono generalmente incompatibili. L'obiettivo di CDT è di effettuare in modo ottimale il parse per del codice da compilare con GCC, il Gnu C Compiler.

venerdì 26 ottobre 2007

Little form hack

Stavo leggendo il blog di Matteo Flora. Seguo abbastanza spesso il suo blog, soprattutto da quando ho scoperto che abita a pochi km da me.

Prima o poi lo contatterò, giusto per una chiacchierata. O magari andrò ad un incontro del MiSec, anche se non so se è ancora un progetto attivo. Avevo visto questo progetto appena era stato varato, quando ancora segnavano sul blog gli incontri. Però purtroppo sono parecchio preso tra la mia attività di consulente e l'università da finire, per cui finora non sono mai riuscito ad andarci.

Comunque, stavo leggendo di un giochetto innocuo che ha fatto ai danni di una specie di concorso tra blogger e per cui è stato ampiamente criticato da chi l'ha subito.
Evidentemente questa persona non si è resa conto del favore che gli è stato fatto.. la cosiddetta Full Discolsure non è compresa da tutti, non è una novità.
Infatti quando si fanno delle applicazioni su web, troppo poco spesso vengono considerati alcuni fattori, ed è giusto che vengano fatti notare, senza cercare di trarne eccessivo vantaggio.

Pensiamo per esempio a sine, di cui avevo parlato tempo fa, la cui struttura non prevedeva controlli sui commenti.
Mentre il concorso in questione effettuava un check base: il voto veniva considerato valido se era passato almeno un minuto dall'ultimo voto proveniente da quell'ip.

LastKnight ha automatizzato il voto usando un componente ruby che si attacca a safari e lo pilota per cui con poche chiamate riesce ad effettuare un click sul bottone del voto.

Scelta interessante, come lo è quel componente, però personalmente avrei agito diversamente, grazie al mitico lynx. Infatti con lynx si possono effettuare sia GET che POST in automatico. Lasciando perdere le GET che sono davvero banali, ho guardato un attimo come si effettua un HTTP POST per loggarsi su wordpress:

echo 'log=&pwd=b&redirect_to=/wp-admin/' | lynx -dump http://www.host.com/wp-login.php --post_data

Per cui in ogni caso, basta vedere i parametri del form, il metodo e l'action, e ricreare una roba del genere, in cron o in ciclo con sleep 1.2m (giusto per..).

Grazie a questo utilizzo di lynx, si può anche facilmente pensare di fare un attacco a dizionario su un form di login tutto in shell..giusto come esercizio di stile :)

mercoledì 24 ottobre 2007

Super Grub Disk

Oggi batto tutti i miei record e scrivo pure il secondo post!
Perchè sono sollevato tantissimo per aver trovato questo tool che dopo diverse ore di tentativi mi ha risolto una situazione intricata in cui mi ha cacciato il dannato sistema operativo che merita di essere usato solo per monitorare il consumo delle macchinette di caffè.

L'ho postato su arabianfenix, perchè là potrà essere visto da più persone, e salvare il culo a tanti che si ritrovano col problema di dover reinstallare grub nell'mbr. Però ci tenevo a linkarlo anche da qua, perchè c'è lo spaccato di questa mia giornata di passione..

Tra l'altro ora devo anche mettermi a lavorare di brutto per recuperare il tempo perso..
quindi passo e chiudo

JQuery

Oggi vi parlo brevemente di JQuery, una libreria javascript che ho cominciato ad utilizzare ieri. Non ho ancora capito bene i limiti e le eventuali implicazioni dell'utilizzo di questo componente, però al momento trovo estremamente interessante avere un modo standard per navigare nella struttura DOM di una pagina HTML con poche chiamate javascript con una sintassi comunque comprensibile (certo, un po' più concisa, ma leggibile, con delle conoscenze di base di html). Ieri ne sono venuto a conoscenza e subito ho integrato in una mia applicazione web due plugin che ne fanno uso.
E qui arrivo ad un punto estremamente interessante: infatti sul sito c'è un elenco di plugin ufficiali, anche se secondo me non è il termine giusto. Infatti non sono delle estensioni, ma dei componenti che fanno uso di questa libreria.. ma vabbè, ognuno può pensarla un po' come vuole..

Con la sola inclusione di due componenti del genere, la mia web app ha cambiato volto, con un'interfaccia più comprensibile, più rapida e più accattivante.
Ormai, secondo me, ha poco senso sviluppare applicazioni desktop se si possono fare applicazioni web così belle e dinamiche.

mercoledì 17 ottobre 2007

Shazbot!

In questo periodo sono abbastanza inquieto sui vari progetti. Continuo a mettere carne al fuoco ed iniziare progetti vari, che finirò col tempo.

Da qualche settimana dedico un'oretta serale (dalle 23.30/24) a smanettamenti vari. Il primo risultato è che nel mio paese (che ho sempre considerato arretrato) ci sono un sacco di reti wireless, soprattutto quelle di Alice con WPA. Ma di questo ve ne parlerò un'altra volta. Come anche dedicherò un post alle bestemmie sul protocollo di interrogazione del server Tribes.

E qua mi avvicino al punto di arrivo di questo post. Infatti nel gioco Tribes, si utilizzano dei comandi a tastiera per scegliere tra un vasto set di espressioni da dire (con tanto di file audio) per coordinarsi con gli altri giocatori. Oltre alle frasi organizzative ci sono i vari taunt ed esclamazioni tra cui, appunto, "Shazbot!", generica esclamazione di disappunto (cfr urbandictionary).

Da qualche tempo questa parola è anche il nome del mio irc bot (eh dai, ricorda il mio nick e contiene "bot".. meglio di così :) ).

E' un'istanza di supybot, un motore per bot scritto in python, con supporto di plugins e licenziato BSDLicense. Per ora sto giocando con le plugin base (quella RSS fa davvero schifo, secondo me), ma ben presto inizio a svilupparne alcune.

La mia idea è di iniziare con una che esegue uno stupidissimo "fortune" per capire il funzionamento, le API messe a disposizione e quindi le potenzialità. Poi l'obiettivo è creare una sorta di fserve, per i vari ebook;prima avevo un piccolo server ftp dedicato, ma riuscire a fare tutto via irc sarebbe davvero niente male. Certo, poi bisogna vedere le policy del server irc :P

Mi sa che posto tutto nel forum di ArabianFenix in cerca di eventuali collaboratori pythonisti.

lunedì 15 ottobre 2007

ARMIN: Architecture Reconstruction and Mining

Per uno degli ultimi esami che mi mancano da dare, il progetto consiste nell'analizzare ed utilizzare il software in oggetto traendo conclusioni anche dal confronto con tool simili di altre fonti.

E' un tool sviluppato dall'università carnegie mellon. Come primo impatto fa veramente schifo. Già un tool scritto in java (che si lancia attraverso un java -jar) che funziona solo sotto windows fa capire che probabilmente è stato scritto col culo.
Capisco che ci siano dei software in java che richiedano uno strato di software dipendente dal sistema operativo (due nomi per tutti: Eclipse e OpenOffice), ma questo strumento potrebbe benissimo farne a meno.

Si presenta con un'interfaccia old-school in awt e me l'hanno data insieme ad una directory dal nome mediamente esplicativo: "examples". Ma la cosa che mi lascia perplesso è che non c'è un esempio che funzioni.

Il bello è che questo strumento mi potrebbe tornare utile anche per la tesi, ma se non funziona io come lo do l'esame? e come lo sfrutto per la tesi?

Beh, davvero una merda per ora. Le eccezioni sparate a video quando lo si lancia da righe di comando non si contano. E, come se non bastasse, tra i package che vedo all'interno del jar c'è un com.borland.

...rabbrividiamo
se non avete dei brividi di paura e terrore vi pongo la question: "Avete mai dovuto programmare in Delphi?"

sabato 13 ottobre 2007

Internet is for Porn

Come potete notare, raramente (o forse mai?) aggiungo contenuti multimediali ai post, che siano immagini o filmati ma questo è sicuramente imperdibile :)



Chi ha fatto questo video è un fottuto genio :D

lunedì 8 ottobre 2007

Un nobel italiano (ma non del tutto)

Nonostante in questo periodo sia davvero difficile portare avanti i miei vari progetti (questo blog, , ArabianFenix ed altro) per la quantità di grossi cambiamenti che sto cercando di affrontare nella vita reale, volevo dedicare qualche minuto ad una notizia che non può che fare piacere: insieme ad altri due colleghi, Mario Capecchi ha vinto il nobel in medicina.

Il mio primo pensiero, appena ho sentito che vive e studia da anni negli Stati Uniti è stato "un'altra delle menti geniale fuggite perchè non valorizzate dal nostro cazzo di paese". Ed invece mi sbagliavo.
La sua storia è ben altra: se avete un secondo leggetevi la scheda preparata dal corriere.it.

E' sicuramente una interessante ed un po' tutti cercheranno di estrapolare una morale. Che forse, dopotutto, non è neanche sbagliata.

lunedì 1 ottobre 2007

Ottobre!

Porco mondo è già ottobre. Cazzo come passa il tempo.

Da agosto ho ridotto drasticamente le ore di lavoro (o meglio, lavoro di più da casa) eppure non sono riuscito ancora a concludere un cazzo con l'università. Sono in ballo con 3 esami sui 4 che mi mancano (con tesi già iniziata). Fine prevista: aprile.
E fin qua non ci sarebbe nulla di nuovo. Se non fosse che sto avendo dei contatti con una grossa ditta di sicurezza informatica che fa pentest, forensic e altre robe estremamente interessanti.
Loro di default fanno contratto full-time a tempo indeterminato. Un contratto che al momento non mi posso permettere.
Ho iniziato a lavorare con partita iva per portare avanti in modo proficuo l'università, potendomi permettere di lavorare più o meno giorni a seconda delle sessioni di esame. Ed ora arriva questa grossa opportunità che implica anche una grossa scelta.
Ed io sono davvero indeciso.. ed intanto è già ottobre

mercoledì 26 settembre 2007

Folding@Home vs Rosetta@Home

Dopo aver scritto un post riguardante la notizia del raggiungimento da parte di Folding@Home della potenza di calcolo strabiliante di un petaflops, ho letto il commento di XIM che invece supporta il progetto Rosetta@Home, nato nell'ambito boinc.
Sinceramente non ricordo il motivo per cui decisi di supportare il progetto FAH (pagina del mio account). E' passato diverso tempo..
Comunque, ho fatto un po' di ricerche, in quanto ero all'oscuro dell'esistenza del progetto Rosetta, ed il risultato è stato interessante.
Il progetto pare essere niente male e, forse, avrà presto il sostegno della Microsoft, incarnato in un client per xbox360. Che strano senso dell'umorismo che hanno a Redmond.. "google e sony supportano FAH? e allora noi supportiamo Rosetta!". Beh, comunque a parte queste cose secondarie, pasto di seguito il contenuto del mio commento di risposta a XIM:
Dunque, sono due progetti nello stesso ambito (capire l’evoluzione e la possibile risoluzione di malattie) partendo da punti di vista diversi. FAH cerca di capire come si avvolgono le proteine e come questo possa portare allo sviluppo di certe malattie dovute all’errato avvolgimento delle proteine, quali, giusto per citarne due largamente conosciute, l’Alzheimer e BSE (mucca pazza, per intenderci). Mentre, partendo dalle sequenze di amminoacidi, Rosetta cerca di prevedere la struttura finale delle proteine saltando praticamente la fase dell’avvolgimento. Questo può aiutare gli scienziati a cercare cure per malattie quali l’HIV, l’Alzheimer, il cancro ed altro.

Comunque, per chi avesse cicli di idle da sfruttare, credo che i progetti si equivalgano, l'importante è cercare di dare una mano a risolvere questi problemi computazionalmente pesanti :)

e poi se volete joinare il team di arabianfenix (da cui aspide è uscito da quando ha formattato il pc diverso tempo fa..), in FAH basta mettere il team 48813

lunedì 24 settembre 2007

I polli ed il campo magnetico

Singolare esperimento all'università di Francoforte che, per quanto sia un serissimo esperimento fisico, non ha mancato di farmi sorridere.

Ingredienti:
- un numero vario di pulcini
- una palla rossa
- 4 schermi protettivi
- il necessario per creare un campo magnetico artificiale

Ricetta: prendere alcuni pulcini appena nati e metterli in una grossa scatola. Addestrarli fin da piccoli per far credere loro che la madre sia la palla rossa. Posizionare i quattro pannelli verso i punti cardinali, in modo che la palla possa essere nascosta dietro al pannello orientato a nord rispetto al centro della scatola. Abituare i pulcini a credere che la mamma (cioè la palla) sia sempre dietro il pannello disposto a nord.
Dopo qualche tempo, investire il tutto con un campo magentico in direzione est (od altro, a scelta.. ovviamente diverso da nord ...).

Ora i polli cercheranno la madre verso est.
Lasciare raffreddare e servire freddo

Link

mercoledì 19 settembre 2007

liferea feed reader

Come detto nel post precedente, ho iniziato ad usare liferea, un feed reader installato di default in debian testing.

Sinceramente la mia esperienza con i feed reader è davvero limitata.. dopo aver provato ad usare mozilla thunderbird (icedove per gli amici debianisti) come aggregatore ed essere rimasto abbastanza deluso, mi ero rassegnato all'idea di utilizzare solo i live bookmarks di firefox.

Ma trovarsi un reader già installato mi ha spinto a provare ad utilizzarlo. Devo dire che mi sono trovato bene. Probabilmente ce ne sono di più completi, ma in liferea ho trovato un buon compromesso tra funzionalità ed usabilità. Senza mangiarti troppa memoria, tra l'altro.

L'esportazione dell'elenco dei feed avviene in un formato xml (c'erano dubbi, forse? :) ) detto OPML, un formato particolarmente semplice, perchè alla fine si deve gestire un elenco di link (eventualmente organizzato in cartelle) e nulla più. Un formato semplice, leggibile e lineare, a differenza di quello usato per l'esportazione dei bookmark in firefox, che sinceramente mi sembra fatto un po' male.

Ovviamente la pagina di OPML su it.wikipedia non c'è ancora, ma la farò presto..

giovedì 6 settembre 2007

La Fenice è risorta: voglio un bug!!

La Fenice è risorta. Ufficialmente ArabianFenix è tornato online, dopo qualche mese di chiusura, causa elevato numero di impegni miei e di Aspide in primis, più tutti i ragazzi che si sono affiancati per qualche periodo a noi.

Uno delle prime news che avevo scritto era un bug su Firefox abbastanza pericoloso. E anche questa volta avrei voluto aprire il sito con un bel bug taggato 5/5 (extremely critical) su Secunia. Beh, niente da fare, finora..

Peccato, cmq una prima versione dei feed è stata rilasciata. E' un'idea che mi venne un sacco di tempo fa: visto che usavo (e tutt'ora uso) tantissimo i feed su firefox, ho pensato che sarebbe stato davvero utile ai nostri utenti poter scaricare un elenco di feed selezionati da noi, già pronti ed impacchettati.
Con questa versione ho cominciato a spostarmi verso una direzione ben precisa: categorizzare ancora meglio i feed, in modo tale da metterne a disposizione una quantità maggiore senza appesantire troppo il menù.. boh, speriamo di avere un po' di feedback.
Tra l'altro dopo aver installato ex-novo debian lenny, mi sono ritrovato un aggregatore di nome liferea, che non pare niente male.. chissà che non mi metta ad adattare i feed anche per questo Feed Reader per Gnome..

venerdì 31 agosto 2007

Funzionamento CDT part1

L'acronimo CDT sta per C/C++ Development Tools. E' la plugin di eclipse per lo sviluppo in ambiente C.

La parte sicuramente più importante è il DOM parser che si passa in rassegna tutto il codice dell'utente e ne effettua un'analisi approfondita da cui estrae una struttura dati ad uso interno, indicizzata e facilmente parsabile dal resto della plugin: AST (Abstract Syntax Tree). Questa è un'operazione assolutamente standard per i parser.
La seconda operazione importante effettuata dal DOM parser è creare una seconda struttura dati (credo sia una semplice lista contenente oggetti speciali chiamati "completion nodes") che sarà utilizzata per le proposte di completamento (il cosiddetto "content assist").

Il motivo di tutto ciò è, prevalentemente, l'ottimizzazione. Infatti indicizzare la struttura AST associata al codice sorgente è un'operazione meno pesante che indicizzare _il_ codice sorgente.

Il processo di parsing, in generale, si divide in tre parti: analisi lessicale, sintattica e semantica.
Nel primo si controlla la correttezza dei termini (token) usati nelle espressioni, nella seconda la correttezza delle espressioni formate dall'unione dei token mentre nella fase finale si effettuano controlli più ad alto livello (a livello semantico, per esempio si controlla se sono rispettati i tipi delle variabili, nel dettaglio se una variabile è un intero non si può assegnargli un valore stringa, anche se formalmente sarebbe corretto, cosa che eviterebbe quindi di generare errore ai passaggi precedenti)

Nel secondo post approfondirò la parte di preprocessing

giovedì 23 agosto 2007

Mawk, sine e lo spam sui commenti

Da parecchio tempo ormai il sito mawk è tempestato di spam sui commenti, ma mentre prima avveniva abbastanza sporadicamente, ora è un fenomeno quasi continuo.
La piattaforma su cui si basa il sito è sine cms, un progetto di 2 ragazzi italiani (di cui uno se non sbaglio girava dalle parti di hacker school). Sinceramente non ho usato questo cms a sufficienza da poterne dare un giudizio critico. Per cui mi limiterò all'ambito del problema.

Secondo me, prima di tutto, c'è qualcosa da controllare a basso livello: per esempio se si inserisce un nuovo commento cambiando il parametro hidden dell'id del post, riesco ad inserire un commento su un articolo inesistente, per prova infatti ho inserito come id del post 999. Il risultato è che è stato pubblicato tranquillamente in homepage, tra gli ultimi commenti. Un vincolo referenziale di chiave esterna eliminerebbe rapidamente questo problema delegandone la gestione al dbms, ma basterebbe anche effettuare una query sulla tabella delle news prima di accettare di inserire il commento.

Guardando la struttura del database, si nota una cosa che non mi piace molto: nella tabella dei commenti non viene loggato l'indirizzo ip. Bisognerebbe prima di tutto sapere se c'è una volontà precisa dietro questa scelta o solo una svista, ma il sito ufficiale sine è giù da mooolto tempo. Beh, cmq il modo più efficace per controllare che uno stesso utente non stia spammando è fare dei controlli sul database prima dell'inserimento della nuova entry: controllare se quell'ip ha lasciato un commento da poco tempo (poi c'è il problema di quantificare, ma vabbè)

Un'altra soluzione sarebbe tenere traccia nella sessione utente, ma è aggirabile rapidamente, cancellando i cookie di sessione, ma si può iniziare ad implementare questa per comodità e rapidità di esecuzione. E' sicuramente da valutare.
Sarebbe anche interessante capire con che UserAgent si presentano gli spammer. Su arabianfenix avevo implementato un metodo per bloccare l'inserimento di contenuti da parte di utenti senza javascript attivato, contando di intercettare e bloccare così il software dello spammer. Ma evidentemente in quel caso era un utente particolarmente simpatico che arrivava lì col proprio browser e aggiungeva un commento con decine di link.. che fondamentalmente non può essere bloccato. Invece nel caso di mawk pare più una cosa automatica, anche perchè vengono inseriti una sessantina di commenti a botta, per cui una soluzione di check prima di inserire è assolutamente da introdurre.

Il tutto per tentare di porre limiti all'attività degli spammer, prima di cominciare a mettere gli odiosissimi captcha..

lunedì 13 agosto 2007

Smanettare è un po' come rinascere

Finalmente sono riuscito a ritagliarmi un po' di tempo tra lavoro, tesi, donna, dipendenza da tribes, ripartenza di arabianfenix ed altri impegni minori per smanettare un attimo.

Cazzo mi sento davvero sollevato, è da tantissimo che non mi dedicavo alla sala macchine. La premessa è che in una delle ditte per cui lavoro, dopo aver virtualizzato tutti i computer su due rack fisici messi in farm, abbiamo letteralmente smantellato la sala macchine.

Sono riuscito a portare a casa diversi componenti a prezzi davvero ottimi, e non è detto che la campagna acquisti sia già finita. Per evidenziare la mia passione per il networking, tra le altre cose ora ho 2 ethernet pci, una pci- 802.11g ed un simpatico switch.

Fondamentalmente l'idea è di aggiungere un'interfaccia di rete al barebone su cui gira xen: utilizzare eth0 per la vpn ed eth1 per xen. Così dovrei risolvere i problemi che ho lasciato in sospeso un sacco di tempo fa. Spero così di poter dare accesso dall'esterno via vpn a castor e pollux, le mie debian virtuali :)

Ne approfitto anche per una ridistribuzione più logica delle varie prese di corrente.. non vorrei trovarmi a rimpiangere di non avere in zona un estintore..

venerdì 3 agosto 2007

Le ceneri non sono male, ma risorgere è meglio

Con questo titolo, ci apprestiamo a ricominciare i lavori su ArabianFenix . E' un titolo che mi è venuto senza pensarci troppo, giusto per sostituire il "test" che avevamo prima, eppure mi piace. Forse rende l'idea dello stile ironico e delle posizioni controverse del sito o forse no.. ;)

Da qualche giorno abbiamo cominciato a prendere confidenza con la nuova piattaforma (wordpress) e a sistemare il tema. Abbiamo cercato di sistemare un po' i post con i tag e tutto il resto, ma il lavoro da fare è ancora molto.

Per prima cosa il forum, e poi chissà .. forse trasferiamo anche il dominio su altri lidi..

E' tutto in divenire, ma fa piacere tornare online :)

Soprattutto contando che torna anche il terzo del triumvirato storico di Hacker School :) :)

giovedì 2 agosto 2007

Ma per piacere, Sir John!

Leggevo proprio oggi sul giornale del j'accuse di Sir Elton John verso Internet. Sicuramente una provocazione. E mi aggiungo al coro di reazioni:

Con una serie di luoghi comuni e di frasi già sentite, egli si scaglia contro internet, che non permette la socializzazione. Lui pare essere pubblicamente un tecnofobo, ben lontano quindi dal mondo in cui, in così tanti, ci aggiriamo quotidianamente. E già questo è un segnale che forse non è la persona più adatta a dire una cosa del genere.

Certo, trovo interessante l'idea dell'esperimento di spegnere internet per 5 anni e vedere cosa capita. Chissà. Probabilmente avrei una crisi di astinenza. Certo, so di avere una forma di dipendenza, ma non voglio guarire, per cui sono fermamente contrario a questo ipotetico esperimento. Tanto più che Internet ci permette di tenerci in contatto con le persone, oppure il proliferare di msn et similia è dovuto ad altro?

Poi, come al solito, dipende da come le persone fanno uso di questo strumento. Gli eccessi non sono mai un bene, in nulla.

Ma se la mancanza di socializzazione fosse dovuta solo ad Internet, io conoscerei quasi tutti i pendolari della mia zona.. d'altra parte in treno non c'è segnale, per cui dovremmo tutti chiacchierare amabilmente, no? Eppure la gente magari dorme, legge o peggio, ascolta la musica!! Allora via la musica per 5 anni, vietate autoradio, lettori, walkman, radioline e tutto il resto!

E tu che farai, john, il panettiere? (senza offesa per la categoria, ovviamente)

martedì 31 luglio 2007

Pillole di incompetenza Javascript pt1

Rispetto al post precedente, per ora abbiamo deciso di aggirare il tutto ed affrontare il problema nientemeno che con python e interfaccia COM per pilotare Exploder. La ditta è decisamente refrattaria alle mie insistenze di OpenSource, ma vabbè.

Partendo dal fatto che il sito in questione è di una azienda le cui bollette sono note a tutti e che si parla di un sottodominio di pubblicazione dei dati dei consumi aziendali, vi cito delle ottime parti di codice javascript, presenti nella pagina che sto cercando di navigare automaticamente per arrivare a scaricare i dati dei consumi.

In un form compaiono e scompaiono dei campi in base alla selezione di un radio button, il cui valore viene salvato nella variabile n.

// x Netscape non vi e` la gestione campi a scomparsa
if (!document.all)
return;

Prima cazzata, se non sai come fare una cosa almeno cerca su internet e lascia perdere questi assiomi, soprattutto se poi il sito non è assolutamente comprensibile sotto altri browser.
In base al valore di del radio button si vanno a nascondere e visualizzare alcuni campi:

if (n==1)
{
document.download2.gg1.style.display="";
document.download2.mm1.style.display="";
document.download2.aa1.style.display="";
document.download2.aa2.style.display="none";
document.download2.mm2.style.display="none";
document.download2.aa3.style.display="none";
document.download2.mm3.style.display="none";
document.download2.ss3.style.display="none";
return;
}

Ovviamente il codice prosegue con tanti altri if sul valore di n in base al quale si nascondono o visualizzano diversi campi. Il tutto programmato con la regola del copia-incolla. Molto più intuitivo e meno dispendioso in termini di byte sarebbe stato inizializzare il display di tutti a "none" (ma anche visibility hidden, se proprio siamo persone serie e sappiamo come far scomparire le cose in netscape) e poi con l'if si vanno cambiare due o tre property. Sicuramente più leggibile. E poi il colpo di genio: gestione delle date, si vuole avere il giorno precedente ad oggi, quindi controllando se devo scalare di mese, per cui devo sapere quanti giorni ha il mese precedente

gg = 31; <-- giorno corrente, stampato nella pagina da jsp
mm = 6 + 1; <-- mese corrente, stampato 0-based da jsp, incrementato per averlo 1 based
yy = 2007;

// calcolo giorno precedente
gg = gg - 1;
if (gg == 0) <-- Se ero al primo giorno, devo andare all'ultimo del mese precedente
{
if (mm == 1)
{
gg = 31;
mm = 12;
yy = yy - 1;
}
if (mm == 2)
{
gg = 31;
mm = 1;
}
if (mm == 3)
{
if ((yy % 4) > 0)
gg = 28;
else
gg = 29;
mm = 2;
}
if (mm == 4)
{
gg = 31;
mm = 3;
}

[.. e così fino a 12]

Ora, quanto ci vuole a fare dei controlli con un "or" sui mesi da 31 e su quelli da 30? Oppure una cosa più simpatica ma abbastanza fine a se stessa di un array di 12 valori, uno per ogni mese? e non puoi fare un generico mm--; ad inizio di tutta questa puttanata? Ma soprattutto, non hai mai sentito la parola ELSE???

lunedì 30 luglio 2007

Google e i tanti corsi

Stavo cazzeggiando alla grande su internet. Ad un certo punto metto nella parte della barra degli strumenti di iceweasel dedicata a google la frase:
corso di

e guardo i suggerimenti, che suppongo vengano dettati dal frequente utilizzo da parte degli utenti. Ed ecco in ordine:
corso di spagnolo
corso di inglese
corso di italiano
corso di fiori (??)
corso di chitarra
corso di bestemmie
...

Ma la gente non ha proprio un cazzo da fare? :D

mercoledì 18 luglio 2007

Java Applet Hacking

Mentre rido ancora per l'ultima barzelletta trovata pochi minuti fa in rete, vi racconto di un problema che ho dovuto affrontare ieri. Partiamo con ordine: scenario è un sistema di autenticazione online a cui è iscritta una ditta per cui lavoro; esso fornisce una comune applet java per autenticarsi sul server, per poi accedere sul dominio principale nelle aree di pubblicazione dei dati. Dall'applet si fa un comune POST su https con upload di file di certificato + inserimento password. Il server risponde con alcuni cookies di sessione grazie ai quali si riesce ad accedere ai dati.

Ora: l'idea era di accedere all'area protetta con un script, che salva i dati, li formatta in un modo più intelligente per poi usarli all'interno delle nostre applicazioni. Ovviamente, essendo clienti, si potrebbe cercare di contattare la ditta e chiedere della API per accedere in modo diverso; questo in teoria, ma in pratica le persone preposte sono allegramente in vacanza, per cui si cercano strade alternative sicuramente più stimolanti.

Ovviamente si parte dal decompilatore java JAD. L'applet è decisamente complessa, formata da diversi package ed il tutto è "offuscato". Per cui mi trovo a dover capire cos'è la classe a dentro il package j. Davvero una rottura, tanto più che il decompilato è ben lontanto dall'essere perfetto, e si hanno diversi errori, per cui non posso neanche cercare di sistemare un po' i nomi da eclipse con il refactor, perchè il progetto non compila. E la cosa si fa lunga.

Il POST viene effettutato dall'applet su https, quindi non mi sono d'aiuto nè HTTPLiveHeader (vediamo solo la riposta del server, che setta alcuni cookie) nè wireshark (perchè tutto crittato) . Devo quindi passare da java.

La prima idea è di cercare di sostituire a runtime la classe che gestisce le connessioni https, e redirigere lo stream anche su file o su stdout, in modo da vedere nella javaconsole del browser cosa cazzo sta inviando l'applet, per cercare poi di replicarlo in uno script.
Il problema è che dovremmo capire bene come viene lanciata la console e inserire lì dentro il codice per caricare le nostre classi. Allora io ed il mio collega compagno di tante avventure decidiamo di sostituire direttamente la classe che gestisce https nella libreria ufficiale di sun. Cerchiamo il jar, lo scompattiamo, prendiamo la classe (appartentente al package sun.net.www , quindi proprietario) e la decompiliamo con JAD. Il risultato è sicuramente migliore che con l'applet, ed il codice è leggibile e compilabile.

Aggiungiamo un paio di brutali System.out e via. Ricompiliamo, rimettiamo nel jar e riavviamo firefox. Questo procedimento è stato eseguito diverse volte su diverse classi, ma alla fine ce l'abbiamo fatta: ecco sulla java console comparire un po' di dati interessanti. Per capire che.. il tutto è crittato anche a livello applicativo! Ovviamente la trasformazione di quello che spedisce è presente nel codice del decompilato, per cui magari appena ho tempo cerco di reversare il tutto..

giovedì 12 luglio 2007

Nintendo ds lite + DS Browser

Premessa:negli ultimi due mesi ho dato una mano ad un mio amico per alcuni lavori. Quando mi ha dato dei soldi per questo, mi sono detto "questi soldi finiscono in cazzate".

E così è stato.

Prima cosa che ho preso: nintendo ds lite con Brain Training, ottimo compagno di viaggio per la mia condizione di pendolare. In treno aprire un portatile è un po' problematico. Aprire un fottuto ds decisamente no. E poi speravo di poterlo usare per leggere i pdf, ma non è così, almeno per ora. Poi ieri capita che mi lascio prendere da un pallino che avevo da tempo: il ds browser. Cazzo, costa un botto, però ci metto un secondo ad accedere ad internet, senza accendere nessun pc, ma solo l'access point. Detto fatto.. torno a casa, preparo tutto e lo provo subito: non va.

Error code 51300

Credo che lassù in alto si ricorderanno ancora per un pezzo delle cose che ho detto in quel momento.. di sicuro mi staranno aspettando, ma vabbè. La sera stessa vado dalla donna. Il ds non vede neanche la sua rete wireless. Oggi in università: si connette. Cazzo allora non è un pacco come pensavo.. forse si riesce ancora a sistemare. Finito in università vado al lavoro. E lì non funziona. Altre frasi a dir poco ingiuriose, ma vabbè. Torno a casa e capisco che: alla nintendo ignorano l'esistenza di utenti un minimo preparati sul funzionamento di una wireless. Cazzo, che problema c'è a fare un elenco delle impostazioni?! Ma dico io, siete proprio degli infami.

Così si usa il vecchio metodo da smanettoni: via a tentativi. Ed il risultato è stranamente positivo :)

In questo momento sono sul sito mawk con il ds (chissà cosa si vede nelle statistiche.. riguardo al browser e SO.. ) e sull'access point ho le seguenti impostazioni:

Essid attivo, dhcp attivo, solo 802.11b, data rate 2M (credo sia questo il motivo principale del malfunzionamento di ieri), IAPP disabled, sul canale 6 (ma chi se ne frega di questo..sarebbe meglio non andare sul 14) e nessuna WEP (la sala macchine è in taverna.. non c'è bisogno di proteggerla, tanto più che non prendo neanche al piano terra)

L'ap è un vecchio digicom, che ha qualche malfunzionamento in caso di impostazioni troppo pesanti.. però almeno funziona :)

venerdì 22 giugno 2007

A chi si dedica al WebDesign come hobby

Andateveneaffanculo!!!!

e che palle.. tutti che si improvvisano webdesigner, e poi ci si ritrova con un sito che va solo sotto exploder e che _quindi_ non è minimamente standard. Mi spiego: per errore avevo lasciato attivata firebug. Dico errore perchè tengo le plugin non indispensabili disattivate.

Ebbene, finisco sul sito sbagliato.. mi rendo conto del numero di errori individuati da firebug che cresce a dismisura, in particolare appena muovo il mouse. Mi lascio prendere dal delirio, muovo il mouse velocemente per la pagina... tempo zero il counter arriva a 10453 errori.. e poi mi ritrovo a dover killare firefox.

E che cazzo! fare siti web non è facile come sembra.. ed evidentemente non è roba per tutti!

domenica 17 giugno 2007

Firefox + Debug : Firebug

Mentre bestemmio per finire un progetto per l'università che ormai porto avanti da troppo tempo, mi prendo 5 minuti per scrivere un breve post per segnalare una delle estensioni di firefox più fighe in assoluto, secondo me: firebug.
Ha tutto quello che può servire per il debug di una applicazione web. In particolare mi torna davvero utile la parte "NET", che salva e visualizza le richieste HTTP effettuate, permettendo il debug di applicazioni AJAX, per esempio. Infatti si possono analizzare le richieste effettuate in background e aprirle comodamente in un nuovo tab per vedere che l'xml (eventuale) di risposta della servlet/pagina jsp/pagina php/checazzoneso sia effettivamente quello voluto.

Oltre a questo c'è di imperdibile il debugger javascript, molto più integrato e usabile del venkman, il quale, a onor del vero, offre però caratteristiche in più. Questione di preferenza.. io scelgo firebug, un mio collega è assolutamente pro venkman. Ma in fondo l'importanza di un debugger sta nel fatto che ti salva il culo nel momento in cui non sai che pesci pigliare, no?

giovedì 14 giugno 2007

sabato 26 maggio 2007

Xen @ (my) Home: pt. 3

Le macchine virtuali ora funzionano allegramente. Il passaggio successivo è creare una vpn, in modo che n client riescano ad accedere direttamente a castore e polluce.
Ho fatto diversi tentativi con einyx , ma per ora non siamo riusciti. In verità non abbiamo neanche indagato troppo, però la cosa che mi lascia perplesso è questa:
Se metto la vpn sull'host e configuro il nat/forward, einyx riesce tranquillamente ad accedere alla mia LAN, a condizione che il demone XEN sia fermo. Appena lancio lo start del demone basta, non va più un cazzo. Ho il dubbio che sia un problema delle troppe interfacce virtuali (tun e le vif) su un'unica interfaccia fisica. Questo problema ad un passo dalla fine della configurazione mi ha abbattuto, al punto che sono giorni che non ci smanetto più.

Cazzo, ce l'avevo quasi fatta.. Non so proprio cosa potrei fare, tanto più che non c'è spazio per un'altra scheda di rete.. e mi scazza anche pensare di lasciare acceso un pc apposta per forwardare la vpn.. sarebbe uno spreco inutile..
Comunque ora mi sono convinto di dover ricominciare a metterci le mani sopra, in quanto al lavoro ora è tutto "up & running" e proprio oggi sono finito sul port di FreeBSD per XEN .Magari ci provo..

giovedì 24 maggio 2007

XEN @ farm + dnsmasq

Ieri abbiamo portato i due server in farm, ed è stato meno problematico del previsto. Il primo passo per la migrazione dell'ufficio è stato effettuato. Ora tutta la lan (la parte dei server fissi) è stata replicata con macchine virtuali sui due server: sul primo server c'è il gateway ed il firewall. sulla seconda girano 4 macchine virtuali: produzione, sviluppo, repository ed una blindata per tenere le home e i vari certificati/dati mediamente sensibili.

Il networking è davvero incasinato, nel senso che ogni tanto ci si ritrova ad avere problemi davvero strani. A partire dal ping che funziona ma altri protocolli basati sia su tcp (testavo http in particolare) che udp (risoluzione dns) no.

La soluzione è un bel ethtool -K eth0 tx off , che non fa altro che disabilitare l'attesa per la trasmissione sull'interfaccia specificata.

Prima di trovare la soluzione, avevo risolto mettendo dnsmasq sul gateway. Questo è un progetto davvero interessante. Tralasciando la parte dhcp, fa un buon lavoro di cache dei dns. basta configurare il file /etc/resolv.conf e mettere come prima riga nameserver 127.0.0.1 e poi i server dns dell'ISP. la prima richiesta verrà risolta dai server e memorizzata in locale, pronta per le richieste successive. Ed ovviamente può servire i nomi a tutta la lan, centralizzando quindi la risoluzione dei dns e, altra caratteristica interessante, la risoluzione dei nomi salvati in /etc/hosts . Personalmente non ho dovuto cambiare la configurazione di default, ma ho visto che si possono fare dei numeri davvero interessanti.. quindi per una rete locale di piccola dimensione è sicuramente un'ottima scelta!



Prossimamente scriverò qualche riga su dig, per mostrare quanto migliorano le prestazioni con dnsmasq

giovedì 17 maggio 2007

Word non è essenziale!

Stavo discorrendo amabilmente con un cliente riguardo a windows. Di come sia riuscito ad entrare nella visione collettiva (cioè del grande pubblico) dell'informatica grazie ad un fattore fondamentale: la pirateria. Non è nulla di nuovo nè di sconvolgente, ma le persone esterne con poca dimestichezza col computer non sempre ci pensano: windows è così importante perchè è sempre stato facilissimo crackarlo e quindi trovare la versione crackata.
Per anni mi sono chiesto da che parte arrivasse il windows 98 second edition o l'ME che installavo a casa e da amici, e come mai fosse così facile trovarli su internet.
Dopo anni ti ritrovi ad avere a che fare con persone che non riescono ad immaginare un computer senza windows o senza office e ti chiedi, ma la pirateria ha danneggiato Microsoft? Il fatto che _tutti_ da sempre hanno sul computer a casa un sistema operativo crackato ed un office con licenza generata ha portato le aziende a non poter far altro che usare windows, perchè gli utenti sanno usare solo quello. Ed ecco che una mail non può viaggiare senza allegato Word, anche quando è totalmente inutile.
Il cliente in questione è un signore particolarmente negato col pc, ma aperto al dialogo, infatti chiede spiegazioni.
Allora apro notepad e scrivo "1 2 3 prova" salvo e chiudo.
Apro Word, scrivo "1 2 3 prova" salvo e chiudo.
Ora indovinate quale dei due formati (.txt vs .doc) mi ha generato un file di 11 bytes e quale ne ha generato uno di 14KB, e calcolate la percentuale di overhead.
.

domenica 13 maggio 2007

ArabianFenix: Cosa bolle in pentola

Da una settimana abbiamo deciso di riprendere in mano la situazione e chiudere temporaneamente AF. Scelta forse difficile, ma non certo sofferta.
Infatti era più spiacevole vedere un portale del genere abbandonato a se stesso.

AF è stato fin dalla partenza, secondo me, un progetto un po' strano. Abbiamo iniziato io e aspide, per assecondare la nostra voglia di parlare di informatica. Nelle nostre intenzioni c'era un sito di informatica di livello medio-alto. Purtroppo non sono più i tempi di Hacker-School, quando eravamo dei ragazzini con un sacco di tempo libero. Ora la situazione è diversa, tra università e lavoro è stato difficile trovare tempo per un progetto del genere che, anche se non ha mai raggiunto un grandissimo livello di pubblico, ci ha dato diverse soddisfazioni. Il nostro modo di scrivere news ci è valso il secondo posto nella categoria giovani per la libertà di espressione all'eContent award. (Tra l'altro durante la premiazione ha avuto luogo un mio memorabile discorso.. :) ).

Abbiamo "inventato" il servizio di download di bookmark di feed rss per firefox. I nostri siti preferiti. Ed è stato un piccolo successo.

Ma in questi ultimi mesi abbiamo veramente tempo ridottissimo, al punto di aver abbandonato per un po' il progetto.. ed ora? ed ora stiamo lavorando pian piano alla messa a punto di una nuova versione del progetto (potete banalmente dare un'occhiata, ma non vi dico altro..se non che è davvero banale!). Certamente torneremo, con un progetto lievemente diverso, a partire dalla struttura del portale.. ma torneremo.
Le tempistiche non esistono.. si va avanti nei tempi morti.. ma torneremo.

giovedì 10 maggio 2007

Xen @ (my) home, pt 2

Usare le immagini del già citato jailtime è davvero una figata.
Si scarica l'allegra immagine (per esempio debian sarge da 45 mb), la si scompatta e si edita il file di configurazione. Si cambiano i vari parametri tipo nome del kernel, locazione del file .img e .swap e via, con un bel xm create config_file -c

In questo modo si fa avviare la macchina virtuale attaccandosi direttamente alla console. E già lì ci si sente un po' Dio. Come prima cosa ho editato /etc/apt/sources.list, per passare ad etch.
Dopo un apt-get update e apt-get dist-upgrade ho cominciato ad installare roba.
E fin qui tutto bene.

Poi mi è venuto in mente che su jailtime c'è anche spiegato come aumentare le dimensioni del file .img. Eseguo fedelmente i comandi, e ben presto ho una macchina con 15GB di spazio. La fase di ingrandimento dell'immagine consiste praticamente nell'accodare al file tanti zeri.. e qualche comando di manutanzione per il filesystem.
Dopo aver fatto altre prove spengo la macchina virtuale.
E fin qui tutto bene.

Parto con la seconda macchina virtuale, dedicandole, come nel caso precedente, 512 MB di RAM (la macchina su cui gira ha su 1.5 GB.. per cui la mia idea era 512 MB a testa, per le due virtuali e l'host). Stesse operazioni sopra descritte, con la differenza che a questa macchina finiscono 50giga, visto che sarà il repository di un sacco di roba (si spera!).
E fin qui tutto bene.

Avvio la prima macchina virtuale (il cui hostname è Castore) senza spegnere Polluce. Mi si riavvia l'host. Ci riprovo più e più volte.. ma il risultato è sempre lo stesso: due macchine virtuali up = total reboot. Non entro nel dettagli di quello che ho detto in quei momenti, nè tantomeno di quello che ho pensato.. non sarebbe molto edificante...

Cercando in giro per la rete trovo gente che ha gli stessi sintomi, e che dà la colpa alle librerie a 64bit. Ma dai cazzo.. perchè deve essere così indietro il supporto ai 64bit?? ormai AMD praticamente fa solo questa architettura, e anche intel ci si è dedicata intensamente, soprattutto per la fascia server. Al pensiero di dover radere al suolo tutto e ripartire con una stronzissima distribuzione a 32 bit mi viene naturale riprendere il discorso con Dio interrotto pochi minuti prima.

Però mi sorge subito un dubbio: che sia qualche puttanata relativa alla ram. Questo perchè nelle opzioni di boot del kernel avevo già avuto dei problemi con il parametro dom0_mem. Allora riconfiguro le macchine virtuali per partire con 256 MB di RAM l'una. Cazzo, se una da sola si può riservare 512 non vedo perchè due non possano avere 256 a testa! ed infatti non partono.
Provo a 128 MB. Secondo voi è andato? No, certo che no.
"Ok, ultimo tentativo: vi metto 64MB di RAM e vedete di non rompere le palle".

-- E magicamente le macchine si alzarono e camminarono --

venerdì 4 maggio 2007

Read the F*cking Manual : Wireless

Ho trovato un log che pensavo di non aver salvato.

(13:31:55) A: linux te conosci mica un sw per sgamare le password per reti wireless? :P
(13:49:22) S: http://www.aircrack-ng.org/doku.php
(13:49:36) A: belloooooo
(13:50:00) A: come funza?
(13:50:21) S: funziona che ti leggi la documentazione
(13:50:24) S: :)
(13:50:28) A: AZZ
(13:50:39) A: hai mica un riassunto in ITA? :P
(13:51:22) S: e a che serve, quando c'è tutto in inglese?
(13:51:43) A: sai com'è...in italiano è più comprensibile e più veloce l'apprendimento MMM
(13:52:47) A: l'hai mai usato tu?
(13:53:08) S: yes
(13:53:36) A: e saresti così gentile da spiegarmi in un Linguaggio comprensibile a noi umani cosa dovreif arE?
(13:55:14) S: eddai leggiti la documentazione
(13:55:26) A: ma non capisco un cazzo di questi programmi
(13:55:30) A: figurati in inglese!
(13:56:08) S: si ma finchè non ci provi! :)
(13:56:35) A: ascolta...ho già i miei genitori ke mi fanno le ramanzine sull'imparare e sullo studiare nn ti ci mettere anche tu per favore...
(13:57:16) S: sono al lavoro, non posso stare dietro alla tua mancanza di voglia di imparare
(13:57:20) S: eh :D
(13:57:43) A: ecco allora se vuoi farmi il favore potresti farmelo quando hai 2 minuti o scrivermi untxt
(13:57:52) A: perchè dovrei farlo al notebook dell'E
(13:58:01) A: e non è per me quindi me lo dimenticherei al volo
(13:59:12) S: scusa, ma perchè non ti sbatti un attimo?
(13:59:36) A: perchè ho altre cose più vitali su cui dovermi sbattere
(13:59:41) A: dato ke queste cose non sono vitali
(13:59:44) S: ed io no?
(13:59:47) A: certo
(13:59:53) A: infatti mica ne ho bisogno ora
(14:00:07) S: ecco, allora hai tutto il tempo che vuoi per studiarti la documentazione :)
(14:00:23) A: si vabbè...lasa perd

A me in linea di massima non pesa aiutare la gente. Tutt'altro. Ma mi aspetto un minimo di voglia di imparare. Ed un conto è aiutare una persona ad installare linux, a configurare l'adsl, a mettere un antivirus o altre puttanate, un conto è spiegare come si buca una rete wireless..

mercoledì 25 aprile 2007

Pianeta gemello? Andiamo e distruggiamolo!

I cileni hanno scoperto, da un osservatorio sulle ande, un simpaticissimo pianeta. E' il più piccolo mai scoperto, è a "soli" 20 anni luce da noi e ha delle caratteristiche simili al nostro pianeta (morente?). La notizia rimbalza su tutti i media.. linko per esempio repubblica.it

Mi aggiungo alla lista delle persone che citano questa notizia. Purtroppo mi vengono solo in mente i racconti di fantascienza in cui l'uomo è rappresentato come una razza incontrollabile di parassiti. Spolpano un pianeta, usandone a fondo le risorse. Una volta finite queste risorse o rovinato irreparabilmente l'equilibrio della flora e fauna, non si fa altro che cambiare pianeta. Cazzo, al momento non ricordo titoli precisi di libri o autori che affrontano questo aspetto, mi spiace.

L'ultima cosa che posso dire è che questo nuovo pianeta è addirittura più grande della nostra "amata" Terra. Sembrerebbe che il rapporto sia 1.5.
E che aspettiamo a scoprire i motori che spingeranno le nostri navi alla velocità della luce? Almeno ci metteremmo solo 20 anni a raggiungere il nuovo pianeta da distruggere..

lunedì 23 aprile 2007

Xen @ (my) home

La prima battaglia contro xen sul barebone casalingo è stata vinta brillantemente. Sul barebone, causa hw veramente bastardo (amd64 + motherboard nvidia + dischi S-ATA), ero riuscito ad installare solo Ubuntu Dapper. Sia debian (Testing e stable) che fedora (Fc5) che altre versioni di ubuntu si piantavano prima dell'installer.
Bestemmie a non finire.
Ovviamente una distribuzione qualsiasi a 32 bit non avrebbe creato così tanti problemi, ma sono una persona di pochi ma sani principi. Ed uno di questi è conseguenza della filosofica domanda "che cazzo ti compri a fare un processore a 64 bit se poi ci sbatti sopra un sistema operativo a 32?".

Detto questo, ho seguito i passi spiegati ottimamente su help.ubuntu.com con qualche momento di panico alla lettura dei possibili kernel panic per i SATA. Al primo riavvio effettivamente questo è avvenuto, ma la causa era l'initrd. Fatto questo, è andato tutto a posto.

A questo punto sono andato su jailtime.org a scaricare l'immagine xen di debian. Questa consiste in tre file fondamentali: l'immagine del sistema operativo, che scompattata raggiunge la dimensione di 1 GB, il file di configurazione da editare adeguatamente, ed un file di swap.. il resto ve lo scriverò a breve, poi metterò un po' di ordine e preparerò un post per mawk

lunedì 9 aprile 2007

Road to Virtualization

Al lavoro siamo partiti con un progetto "ambizioso".. eliminare la sala macchine dall'ufficio e portare un server in farm che ci tenga su tutti i servizi che utilizziamo. E fin qui non ci sarebbe nulla di strano o di particolarmente interessante. Invece c'è la volontà di tenere la struttura di rete attualmente in ufficio, composta da un gateway con ip statico su cui girano alcuni servizi (http, vpn, posta accessibile solo con vpn) tra cui un iptables mediamente cattivo. Dietro il gateway un bel firewall che blocca praticamente tutto, poi c'è la lan vera e propria, con i vari db/wiki/svn/cvs etc.. etc..
Lo scopo di questa struttura è rendere non eccessivamente dannoso la perdita (dovuta ad attacco diretto) del gateway, che è sempre acceso e connesso ad internet. Ora: come ripetere questa struttura in modo da definire servizi non indispensabili?
Una delle possibili risposte (ed è quella scelta) è xen, di XenSource, un sistema per creare macchine virtuali. Nella versione free è possibile creare fino a 4 macchine guest. L'impressione al primo approccio non è stata niente male: Un'installazione facile su macchina fedora ( si,si lo so..ma non è colpa mia) ed in una giornata di prove e smanettamenti vari avevo 3 macchine virtuali "up and running". La cosa mi è piaciuta parecchio al punto di voler al più presto provare a casa a virtualizzare pesantemente il mio simpaticissimo barebone al fine di mettere a disposizione dei ragazzi di mawk e di arabianfenix un paio di macchine virtuali.. e poi si che si smanetta ;)
Virtualizzando su file infatti, basta scegliere al momento dell'installazione quanto allocare per la macchina guest. L'installer crea un file delle dimensioni specificate in cui va a finire tutto il file system del pc virtuale.. quindi per radere al suolo una macchina virtuale basta cancellare quel file.. oppure tenerne una copia pulita a parte con cui sovrascrivere quella "compromessa".. in modo da ripristinare la condizione originaria..
niente male, no?

A breve resoconto dell'installazione e breve guida, su consiglio di Anathema` e einyx.. saluti!

venerdì 30 marzo 2007

Aumentare la sicurezza di SSH

Sono due settimane che lavoro incessantemente, week end compresi. E purtroppo a risentirne è la partecipazione ai progetti in cui sono coinvolto ArabianFenix e mawk .Cazzo.

Vabbè, da un lato non ci si può certo lamentare di avere molto lavoro, con i tempi che corrono, però questo non mi conforta più di tanto. Comunque, oggi girando in rete, mentre mi prendevo una pausa dopo un momento di sclero verso quelli che credono che il web design sia per tutti e che bastino i software giusti per fare siti bene, ho trovato questo articoletto decisamente interessante: Advanced SSH Security Tips .

Sicuramente non è nulla di nuovo.. ma se avete qualche minuto fateci un salto, è un articolo chiaro e diretto, che si legge davvero in poco tempo.
In verità alcune accortezze le ho prese da tempo: L'accesso a root, per esempio, l'ho eliminato da tutti i pc di casa e della rete al lavoro, soprattutto per la presenza della rete wireless (visto che dall'esterno è necessaria comunque una VPN). Invece l'autenticazione basata su chiave la uso, ma non su tutti. Però l'idea di abilitare l'accesso via ssh _solo_ con la chiave e non accettare nome+pw è decisamente radicale, ma estremamente potente.

Da tenere a mente per usi futuri.. come il simpaticissimo script iptables temporizzato :)


mercoledì 14 marzo 2007

Ekiga continua a deludere

Purtroppo la mia avventura con ekiga continua ad andare maluccio..Nonostante l'uscita su debian di due aggiornamenti nell'ultimo periodo, la qualità del prodotto (in termini di audio/usabilità/GUI) è comunque sotto la soglia necessaria per un utilizzo su ampia scala.
Davvero una delusione.. anche sul pc fisso i risultati non sono molto incoraggianti. Per cui resta il fatto che in ambito lavorativo userò gizmo, con la consapevolezza che è un software in rapida crescita, con le versioni linux/windows abbastanza allineate (chi ha usato skype sotto linux sa di cosa parlo) ma pur sempre chiuso.
Beh, a punto a suo favore è lo sviluppo di una versione per il nokia n800, che è ormai da tempo nella lista dei miei probabili acquisti.. Vedremo.

Passando da ekiga a gnome , progetto a cui è strettamente legato, segnalo l'eventi che si terrà in spagna tra due settimane, dove si ritroveranno sviluppatori di Gnome e KDE, con l'intenzione di diminuire le distanze tra i due principali Desktop Environment GNU/Linux. Staremo a vedere.. l'evento si chiama Guademy

Passo e chiudo

lunedì 5 marzo 2007

Via i costi di ricarica, conseguenze e riflessioni

Finalmente sono stati aboliti i costi di ricarica per i telefonini, come previsto dal decreto Bersani.

Era una tassa scorretta e praticamente illegale, eppure ora dovremo subirci l'aumento delle tariffe per coprire le mancate entrate dei gestori della telefonia. Eh vabbè, certo che se evitassero di pagare Paris Hilton o De Sica non sarebbero "costretti" ad aumentare i costi dello scatto alla risposta e la tariffazione al minuto! La pubblicità è l'anima del commercio, siamo d'accordo, però è anche molto costosa, potrebbero evitare di romperci i coglioni ogni 2 minuti e tagliare le tariffe.



Ci sono marchi che non hanno bisogno di pubblicità, come la Ferrari.. eppure hanno una fama ben superiore ad altre ditte che ci tempestano di spot. Tagliando i costi della pubblicità, di quanto potrebbero abbassare le tariffe? Credo sia una stima difficile, impossibile per un non-addetto ai lavori come me, per cui non mi sbilancerò, ma penso che se riuscissero solo ad abbassare le tariffe a 3/4 delle cifre attuali, il punto di forza sarebbe la convenienza, e la miglior pubblicità il passaparola.



Ma questa ipotesi rappresenta sicuramente un rischio troppo elevato, per cui non verrà mai presa in considerazione.



Un altro punto dove facilmente potrebbero risparmiare è la catena di ditte da cui comprano tecnici e manodopera in generale. Tranquillamente ditte come la Vodafone arrivano a pagare 150 euro all'ora per un informatico, a cui arrivano, quando gli va bene, 12 euro. Gli altri 138 si perdono tra ditte intermediarie, il cui solo compito è garantire rifornimento continuo alla grossa ditta di carne fresca. E questo lo posso pure capire, ma se le ditte intermediarie cominciano ad essere più di due c'è qualcosa che non funziona e che andrebbe rivisto per tagliare l'overhead di costi che porta poi a chiedere a noi utenti di pagare di più perchè, poverini, sono stati costretti a levare un sovrapprezzo ingiusto.

venerdì 2 marzo 2007

Gadget Imperdibile

Stamattina, mentre andavo alla deriva nel web, sono arrivato alla pagina di questo imperdibile gadget. Non so quanto tempo fa sia uscito e quasi sicuro l'avevo già visto. Però stamattina, nella mia mente assonnata si è fatto strada un pensiero solo: che figata!!.



Peccato per il supporto, in cui non è contemplato il pinguino. Tra l'altro da qualche mese passo periodicamente sul sito Hack a Day, dove mostrano degli smanettamenti veramente deliranti.. Ed ora mi viene in mente una cosa: immagina di smontare una stupidissima web cam e montare il sensore sopra il lanciarazzi.. poi oltre al radar avresti sul pannello di controllo la visione dell'obiettivo :)



Ma vabbè.. è meglio che mi metta a lavorare prima di sprecare la giornata in queste puttanate

lunedì 26 febbraio 2007

Primi problemi con Ekiga

Come detto nel post precedente, sto spingendo per usare ekiga. Per chi volesse saperne di più c'è la voce Ekiga su wikipedia inglese (quella italiana mi sembra un po' ridotta, la integro appena possibile).
Cazzo, mi piace molto il fatto che utilizzi sip e h323 (quello su cui si basa il mio voip casalingo.. per cui potrei chiamare casa mia da ekiga..). Mi piace molto che sia opensource.. Ha un'interfaccia grafica francamente pessima, ma io bado ai contenuti, per cui questo è l'ultimo dei problemi.

Il problema grosso è che si sente davvero malissimo!! Per ora ho provato solo sul portatile. Gizmo va che è un piacere, ma ekiga si sente fottutamente male. Se volete provare, basta chiamare il 500@ekiga.net . Vi risponde una segreteria automatica che, dopo aver spiegato la propria funzione, vi rimanda indietro quello che dite al vostro microfono, in modo da testare senza problemi la trasmissione e la ricezione audio. Credo che l'inghippo stia in qualche mia impostazione, che piace terribilmente a gizmo, ma che ekiga non sopporta/supporta.

A breve testo su un altro pc.

Ah, dimenticavo.. la mia esperienza con wengo non è stata un successo.. si pianta continuamente.
Boh, quando ho tempo di smenettarci cerco di capire cos'è che non va.

Passo e chiudo

mercoledì 21 febbraio 2007

Ritorno in mare e Ricerca di client VoIP

Eccomi di nuovo online. Dopo varie peripezie, problemi apparentemente senza soluzione e DUE FOTTUTISSIME SETTIMANE OFFLINE hanno scoperto che era colpa di un cavo staccato. No comment.



Comunque, a parte i problemi derivanti dal non avere una connessione (nè il telefono di casa, grazie al VOIP), ci sono grosse novità in vista. Una delle ditte per cui lavoro ha in mente un progetto interessante basato sul VOIP. Per cui ho occasione di approfondire la mia conoscenza abbastanza superficiale di questa tecnologia decisamente innovativa ed importante. L'idea per ora è un server asterisk in farm ed una architettura basata su SIP con l'eliminazione del telefono normale.



E' sicuramente un progetto abbastanza ambizioso, e sicuramente innovativo per una piccola azienda IT.

Per ora l'idea era di usare come client gizmo che, come è ovvio da buon utente debian, non mi convince per la natura freeware ma non open.

Come prima impressione si è mostrato il più semplice da installare e configurare.. ma purtroppo non era libero il mio nick come utente.. vabbè. Io sinceramente sto spingendo per ekiga che è l'evoluzione di GnomeMeeting. Mi sembra un prodotto ancora grezzo, però ha un paio di caratteristiche che mi ispirano: è open ed è integrato perfettamente con gnome. Invece wengo è scritto con le qt. (e poi è legata ad una ditta francese.. e non dico altro)







sabato 10 febbraio 2007

Offline!

Lunedì mattina, di colpo, il gateway voip di casa mia ha perso la portante ADSL. Da quel giorno sono offline. L'aggravante è che questo mese ho deciso di dare una svolta alla mia carriera universitaria (6 esami mancanti, tesi già iniziata e questo è il primo anno fuori corso). Per cui ho parlato con i miei clienti e sono riuscito ad ottenere di lavorare un solo giorno a settimana. questo comporta che, per gran parte del tempo, sono a casa a preparare i vari progetti/esami. Quindi, in una parola, soffro.

Mi rendo conto dell'importanza di Internet..soffro.. mi manca l'accesso all'infinita massa di informazioni che mette a disposizione il World Wide Web.. soffro .. mi sento tagliato fuori .. soffro.. studio su libri di carta, da me considerata deprecata.. soffro.. forse l'acquisto di un palmare potrà distrarmi da questa sofferenza.. cazzo sono proprio un nerd

venerdì 2 febbraio 2007

Performancing Test 2

Ho giocato un po' con le impostazioni e navigato nei vari menù.

Nulla da dire..è fatto bene..consiglio lo strumento (il link lo trovate nel post precedente)



Enjoy

Performancing Test

Sto testando una plugin di firefox chiamata performancing. E' una plugin interessante, in quanto permette di scrivere entry nel proprio blog direttamente da firefox (iceweasel). L'editor è un classico Rich Text. l'unica cosa che per ora ho visto girando in rete è che automaticamente mette in fondo al post un link al sito ufficiale.. ora ci gioco un po'.. e vediamo se si può disabilitare.



ah, tra l'altro è il mio compleanno.





powered by performancing firefox

venerdì 5 gennaio 2007

Giocando con strumenti di sicurezza Javascript

Un amico mi ha indirizzato su uno di quei siti che offrono un percorso a livelli in cui si devono trovare password o aggirare protezioni di crescente difficoltà. La maggior parte di queste sono in javascript.
Al momento non sono in vena di dissertare sulla delega a questo linguaggio di scripting delle funzioni di validazione di input o di autenticazione in generale. Non andrò oltre un "non fatelo!" : aggirare javascript è davvero banale, soprattutto con i tool vari per gli sviluppatori in ambito web (per esempio due plugin di firefox: web developer per editare i form (e molto altro), firebug per js debugger e console).. ma di questo parlerò un'altra volta, direi..

oggi sono finito su una paginetta in cui un form fatto a forma di tastierino numerico vi permette di inserire delle cifre, al soddisfacimento di alcune condizioni si verrà reindirizzati sulla pagina .html. Ovviamente i più l33t tra voi ne avranno viste a centinaia, ma visto che il mio amico non sapeva come affrontarlo, spiego il procedimento che ho seguito

La "sicurezza" in un sistema del genere è che ci vogliono molti tentativi per passarlo. ovviamente leggendo il codice javascript si riesce a risolvere qualcosa, del tipo:
il codice deve essere lungo 5 cifre ed il suo prodotto è 3780.

primo passo:
il tastierino numerico va da 1 a 9, per cui cerchiamo i fattori:
riporto 3780 ai numeri primi.. per cui ho 2 2 3 5 7 9. ho una cifra in più.. poco male, gli unici prodotti che stanno ancora in una cifra sono 2*2 e 2*3. per cui le due combinazioni su cui lavorare sono

25679
34579

per calcolare tutte le condizioni ho fatto uno script shell stupido formato da 5 cicli for innestati. Ma questo è ovviamente uno spreco perchè è inutile provare la combinazione 22222 ..
per ovviare a questo ogni ciclo for controlla ad ogni tche l'indice corrente sia diverso dagli indici dei cicli esterni e lancia, nel caso sia verificata la condizione, l'eventuale ciclo interno.

per ora nel ciclo interno (al verificarsi della condizione descritta sopra) c'è ancora un echo per verificare visivamente che le condizioni siano rispettate.
ora arriviamo al dunque: devo verificare la presenza della pagina web. per questo mi servo di curl (ma si potrebbe benissimo usare wget o lynx); indicando con $code la combinazione corrente ho:
curl /$code.html -I 2> /dev/null | egrep '^HTTP.*200' && echo $code

così ho direttamente in output il codice giusto.. ora posso aprire il mio browser preferito ed andare all'indirizzo indicato dal codice.. e passare al livello successivo

Progetti per il nuovo anno

Con il 2007, in ambito web, punto a due progetti:
  • ArabianFenix , un progetto nato da molto tempo, ma che abbiamo lanciato da "poco". Non ha raggiunto ancora la forma e la sostanza che vorrei, ma quest'anno potrebbe essere l'anno decisivo
  • mawk , un nuovo sito che, nelle intenzioni, dovrebbe occuparsi di hacking ed hacktivism, ma potenzialmente potrebbe essere qualsiasi cosa, per cui non dico altro.. dipende da cosa gira nella testa dei due personaggi principali .. maio ed einyx ..
Ovviamente spero che l'università ed il lavoro mi permettano di portare avanti al meglio questi progetti.. in entrambi i casi c'è molto da imparare.
Come primo obiettivo da approfondire (facendone un lavoro simile al documento sull'hacking delle reti wireless pubblicato su AF) c'è il protocollo VNC .. ho installato realVNC in locale e voglio esplorarne il funzionamento e la sicurezza (e magari scrivere un tool di brute force o a dizionario..)

giovedì 4 gennaio 2007

-- Apertura --

Non so perchè ho aperto questo blog.. però è fottutamente comodo aprire in 30 secondi netti un nuovo blog grazie ad un account gmail.
Forse è solo questo il motivo.
Ho forse ho solo voglia di esprimere opinioni ancora più personali di quello che faccio per ArabianFenix
Tra l'altro con un nick secondario dovrei avere ancora un blog su splinder .. aperto alla fine del 2003 .. niente male, eh?