Mamma ho perso la password

Jul 25, 2007 - 0 comments - Archiviato in: #Codice #Security #Software

persosottotitolo: che belle che sono le Rainbow Table

Nella mia esperienza mi son fatto convinto che la cartina al tornasole per stabilire se qualcuno passa troppo tempo davanti ad un computer è chiedere se ha mai dimenticato una password. Se la risposta è affermativa, si ha a che fare con un geek (nel mio caso ho dimenticato più volte una password!).

Mentre cazzeggiavo mi informavo sul web, mi sono imbattuto in ophcrack, un programma per crackare le password di Windows; tale programma fa uso delle cosidette Rainbow Table (d'ora in poi semplicemente RT). Il programma così com'è funziona anche per Vista, ma ha in generale alcune limitazioni: le RT incluse permettono di crackare solo password contenenti caratteri alfanumerici. Una password considerata "forte" non può essere perció crackata con la dotazione di RT del programma.

Una cosa carina è una versione LiveCD basata su Linux che una volta lanciata fa tutto da sola: carica le tabelle in memoria, individua il SAM, e in pochi minuti esegue la ricerca (10 minuti in tutto sulla mia macchina virtuale). Anche tale versione ovviamente è limitata alle password alfanumeriche. RT più complete sono in vendita un po' in giro (quella completa per coprire le password di Windows richiede 60GB di spazio su disco) ed i link sono disponibili nella pagina di ophcrack. Faccio notare che per poter crackare le password di Windows bisogna essere amministratori oppure avere accesso fisico al PC per fare il boot da CD (nel caso qualcuno voglia farsi tentare da aprire un baco).

Ma come funzionano le RT? Il meccanismo è un po' complicato e parafrasando Einstein ora che l'ho capito potrei anche spiegarlo agli altri. Nella spiegazione faccio riferimento ad un algoritmo "semplificato".

Le password vengono di solito memorizzate usando una funzione hash che data una password restituisce una stringa "complicata" (d'ora in poi semplicemente hashcode). La funzione hash non è invertibile nel senso che è impossibile trovare una semplice funzione matematica che dato un hashcode restituisca la password. Per generare le RT, viene definita una funzione reduce che dato un hashcode restuisca una nuova password (diversa da quella che ha generato l'hashcode: in parole povere la funzione reduce non è l'inversa della funzione hash in quanto l'inversa come già detto non esiste). Di tale nuova password viene generato un nuovo hashcode il quale verrà poi dato in pasto alla funzione reduce che genererà una nuova password, ecc. ecc. Il tutto per un discreto numero di volte (nell'esempio qui sotto riportato da WikiPedia l'operazione viene effettuata tre volte). In realtà in ci sono diverse funzioni reduce, una per ogni passaggio (nella figura indicate come R1, R2, R3)

 

RAINBOW TABLE1

Nell'esempio sopra si parte da password a caso (wikipedia, abcdefgh, passwd) si calcola l'hashcode corrispondente (ao4kd, 1vn6s, dicm4); poi si applica la prima funzione reduce (R1) e si ottiene una nuova password (secret, bernie, culture) e si ripete con le successive funzioni fino ad ottenere l'ultima password (rootroot, myname, linux23). Alla fine di questi semplici passaggi si memorizza nella RT solamente la password di partenza e quella di arrivo.

Nel caso di cui sopra si avrà una RT fatta in questa maniera:

wikipedia rootroot
abcdefgh myname
passwd linux23

E ora arriviamo al dunque: come si calcola la password dato un hashcode e una RT? In questo modo:

  1. prendere l'hashcode in ingresso e applicare l'ultima funzione reduce ottenendo una nuova password
  2. confronta tale password con una delle password contenute nella colonna di destra della RT
  3. se la password non esiste nella colonna di destra, applicare all'hashcode di partenza la penultima funzione reduce ottenendo una nuova password, calcolarne l'hashcode e usarlo come nuovo hashcode tornando al punto 1.
  4. se la password invece esiste, restituire al chiamante il valore corrispondente sulla colonna sinistra.

Ora se la RT è completa e l'hashcode iniziale è valido, alla fine del loop si avrà una password di partenza da dare in pasto ad un'altra funzione che prende in ingresso l'hashcode di partenza e la password trovata dalla procedura precedente, seguendo iterativamente i seguenti passi:

  1. calcolare l'hashcode della password
  2. se coincide con l'hashcode di partenza la password cercata è quella
  3. se non coincide con l'hashcode di partenza genera una password usando la funzione reduce e ricomincia da 1.

Un esempio: sia secret la password da cercare. Secondo la figura, il suo hashcode è 9kpmw; quindi l'obiettivo sarà trovare la password associata a 9kpmw.

Applicando la prima procedura con la funzione R3 otteniamo come prima nuova password pippo. pippo non è nella tabella (colonna a destra)  e quindi si itera ancora. Si applica la R2 all'hashcode di partenza ottenendo jimbo, quindi si calcola l'hashcode di jimbo che stando alla figura è v0d$x e da questo generiamo una nuova password usando stavolta R3(rootroot). In questo caso la procedura si ferma perché rootroot è presente nella RT ed è associata a wikipedia come password di partenza.

Ora tocca avviare la seconda procedura usando wikipedia e 9kpmw.

Si calcola l'hashcode di wikipedia ottenendo ao4kd. Siccome non è l'hashcode che si sta cercando, si fa un'altra iterazione. ao4kd usando la funzione reduce genera secret. Si calcola l'hashcode di secret che è 9kpmw: ovvero l'hashcode di partenza. La password cercata quindi è secret.

Con l'algoritmo vero ogni entry della tabella è generato attraverso svariate iterazioni (nell'ordine di diverse migliaia). E a complicare le cose nella realtà può accadere che la prima procedura procuri un falso positivo nel qual caso bisogna continuare ad iterare: dato un buon insieme di funzioni reduce, per generare le RT che coprono tutte le possibili password di Windows sono richiesti diversi anni calcolo. Le RT oggi disponibili sono state infatti ottenute attraverso sistemi di network computing.

La bellezza di questa tecnica è la totale indipendenza dalla funzione di hash. Quindi si può applicare per generare RT anche per altri algoritmi (MD5 ad esempio). Resta infine da dire che per invalidare l'uso delle RT basta un semplice algoritmo di salting. Tanto di cappello all'inventore di tale tecnica, Philippe Oechslin.

-enjoy

Accendisigari

Jul 24, 2007 - 0 comments - Archiviato in: #Cazzate

(post da prendere poco seriamente)

accendisigariConosco una persona che non ha mai fumato in vita sua e a cui - in tutta sincerità - il fumo passivo dà veramente molto fastidio. Ha però deciso in maniera bizzarra di lanciare da poco una campagna contro le automobili provviste di prese accendisigari: la sua teoria è che il fumo è il male assoluto e rende schiavi della nicotina; coloro che vendono macchine con accendisigari non fanno altro che alimentare l'industria del tabacco e quindi vanno considerate "complici".

Tale persona si è spinta oltre: ha fondato anzi tempo un comitato chiamato C.A.L. (comitato automobili libere) e da presidente di tale comitato ora predica la "libertà" di avere una macchina senza accendisigari. Non solo: promuove attivamente tutte le aziende che vendono automobili senza accendisigari.

Ritengo che la sua sia una teoria un po' bislacca e per diversi motivi. Per cominciare con un esempio neanche io fumo, ma molto spesso ho fatto uso della presa accendisigari per alimentare il cellulare;  una macchina senza accendisigari, benché mi renda libero dal fumo passivo, mi crea non pochi grattacapi per ricaricare i miei gadget. Un altro motivo per cui trovo la sua teoria un po' bislacca è il fatto di definire "libera" un'automobile che in realtà impone dei vincoli: a me sembra palesemente un controsenso. Senza parlare del fatto che fino a ieri produrre automobili con accendisigari non era assolutamente in contrasto con gli ideali del C.A.L.

Ora in fin dei conti rinunciare all'accendisigari può sembrare anche un piccolo sacrificio soprattutto considerando la premessa che neanche io fumo; ma cosa succederebbe se la persona in questione domani lanciasse una campagna tolleranza zero contro l'uso di alcol e in nome della "libertà" dichiarasse illiberali macchine non dotate di etilometro? Non nascondo che sebbene non fumi io una birra ogni tanto me la faccio e la questione posta così mi pare preoccupante.

Salut!

When dreams come true

Jul 24, 2007 - 0 comments - Archiviato in: #Video

(piccolo resoconto fotografico del concerto di Dolores O'Riordan in Seattle)

CIMG1371 CIMG1372

Primo duo spalla, Mike (inglese) e Steve (autoctono). Molto simpatici e disponibili come da chiacchierata post concerto.

Alle mie spalle tra un'attesa e l'altra una coppia in luna di miele si annoia e tira fuori un mazzo di carte ed intavola una partita a Ramino (ora non so se in America si giochi con un mazzo solo o è semplicemente spirito di adattamento):

CIMG1375

Segue il secondo "gruppo" spalla, la band di Jessie Baylin, che si esibisce scalza:

CIMG1377

Si prepara il palco e la scaletta per l'esibizione non è niente male:

CIMG1383

L'esibizione comincia con l'entrata a sorpresa e Zombie, il pubblico è in estasi:

CIMG1386 CIMG1387

Alcuni elementi della band:

CIMG1391 CIMG1394

Altre immagini:

CIMG1407 CIMG1415

Fine del concerto? No... segue il "bis"

CIMG1426

Canzone finale, la mia preferita. Dreams:

Notare la vicinanza al palco ed il fatto che quasi mi cada addosso (minuto 2:45) per firmare un autografo!

Bottino della serata, biglietto autografato dalla mitica:

Image

-Enjoy

Technorati tags: ,

La colpa è di Turing

Jul 23, 2007 - 0 comments - Archiviato in: #Cazzate #Software

Questi giorni ho imparato una lezione che non dimenticherò mai per tutta la vita. Ha a che fare con l'interoperabilità in sistemi complessi e su come la responsabilità possa essere inequamente distribuita. Lo faccio con due esempi.

a. Il baco dello URI handler di Firefox (e Trillian): In questo caso l'interoperabilità è tra due browser, rispettivamente IE7 e Firefox. Quest'ultimo soffre di diversi problemi tra cui il fatto che permette il passaggio di linee di comando alquanto pericolose (basta dare un'occhiata qui: http://kb.mozillazine.org/Command_line_arguments). IE7 non lo fa. Secondo qualcuno, se IE7 invoca Firefox passando una linea di comando pericolosa dovuta ad una concatenazione di stringhe non voluta, la colpa è di IE7. Lo stesso qualcuno ha proposto di disabilitare completamente gli URI handler, visto che sono pericolosi (per intenderci che brivido può essere un link ftp!). Perché non spegnere completamente Internet e andare tutti a casa? Perché in Firefox sono troppo pigri per pensare alla sicurezza (Protected Mode? Fra un anno. Forse. Revisione della command line? Che c'è da rivedere?). Almeno quegli altri hanno ammesso le loro colpe, anche se hanno dato addosso a chi ha fatto disclosure della vulnerability senza prima avvisarli (mai cominciare col mettere in pratica le elementari nozioni di sicurezza). Morale della favola: la colpa è di qualcun'altro (di IE7 che incidentalmente invoca gli URI handler in maniera identica a Firefox, di Windows, delle RFC, ecc.).

b. Il mio Network Attached Storage (d'ora in poi semplicemente NAS): il mio NAS[1] è un modello che a Settembre troverà un altro felice proprietario per diversi motivi che hanno a che fare con come il protocollo di comunicazione è stato implementato (male) su un sistema operativo non direttamente supportato. Raymond Chen fa una analisi dettagliata di una manifestazione di questo baco che non ha nessuna soluzione possibile. In pratica Windows chiede al NAS se implementa una certa interfaccia, il NAS risponde affermativamente e Windows (solo da Vista in poi) si limita ad usarla. Peccato che poi in realtà il NAS non la implementi correttamente causando non pochi grattacapi agli ignari utenti. Le soluzioni che Raymond analizza per risolvere la situazione sono le seguenti:

  1. Fare assolutamente niente. Il baco è nel NAS, spetta al produttore risolverlo. L'utente medio penserà che siccome non succedeva con XP il baco è di Vista.
  2. Windows deve cercare di capire che il NAS è bacato e avvertire l'utente. L'utente si troverà di fronte alla finestra di dialogo che dice "QUESTO NAS È BACATO: TI SCONSIGLIO DI USARLO". L'utente ovviamente penserà che è un baco di Vista (certo con XP tutto funzionava alla perfezione) mentre il produttore del NAS farà causa a Microsoft
  3. Vista deve dimenticarsi le nuove API e deve limitarsi ad usare le API vecchie; insomma il progresso di Windows deve essere tenuto in ostaggio da qualcuno che ha implementato (male) un protocollo Windows su una piattaforma non Windows. Come chiedere ai WebMaster di non usare HTML 3.x perché il mio browser che ho scritto in 5 minuti supporta solo HTML 1.x. I produttori di NAS veloci "ottimizzati" per Vista daranno la colpa a Vista. L'utente che ha comprato Vista per avere una rete più veloce penserà ovviamente che è un baco di Vista.
  4. Creare una configurazione da qualche parte che indica se usare le vecchie API. Quale valore usare di default? Se si usa "vecchie API" di default, tutti i NAS che implementano le nuove API correttamente saranno costretti ad usare le "vecchie API" più lente (si veda il  punto 3.): la colpa è di Vista. Se si usa "nuova API" l'utente è costretto a capire cosa c'è che non va e come configurare il tutto correttamente quando usa il NAS. Siccome con XP tutto funzionava alla perfezione, l'utente ovviamente penserà che è un baco di Vista.

(nota: ho incorporato due opzioni proposte da Raymond in una; invito a leggere il post originale sull'argomento molto più completo del mio)

La costante di tutte queste quattro soluzioni imperfette è una sola: la "colpa" è dell'ultimo arrivato. Ovviamente una situazione del genere mette il produttore del NAS o chi arriva prima in una posizione di favore; che senso ha faticare per implementare correttamente un protocollo visto poi che l'utente medio darà la colpa a qualcos'altro? L'aveva scoperto a suo modo anche Luca. Ed infatti come volevasi dimostrare non c'è nessun aggiornamento del firmware per il mio NAS nonostante il problema sia stato correttamente risolto a monte (il NAS usa librerie software che sono state in seguito patchate per risolvere il problema, ma il produttore del NAS ovviamente se ne è disinteressato).

Un'ultima nota: questa pratica di usare librerie già pronte senza testarle a fondo (chi le scrive pensa che le testa chi le usa e viceversa) è una pratica perversa molto deleteria e porta scientificamente a diffondere i bachi molto più velocemente di quanto si diffondano le eventuali correzioni.

Anche se può sembrare così, non sto scherzando: la mia fiducia nel NAS è così bassa che ne faccio il backup periodico per evitare brutti scherzi. Per ogni file importante ho ormai tre copie: locale, NAS e backup del NAS. Ammetto che la colpa è pure un po' mia perché guardando la confezione del NAS si scopre che Vista non è neanche supportato. Alla fin fine sono rammaricato perché ho comprato un NAS per avere peace of mind, ma ironia della sorte mi sento tranquillo solo quando è idle. Big Smile

La questione del NAS - a differenza della diatriba su FireFox - mi inferocisce in maniera particolare perché lavorando nel campo della backward compatibility, ho scoperto quanto ogni nuova versione di Windows tenda ad essere accomodante rispetto ad applicazioni semplicemente maleducate: figuriamoci cosa possa provare quando vedo che alcune applicazioni creano problemi totalmente irrisolvibili come quello del NAS[2] e quello che leggo in giro è totalmente approssimativo. Poi mi calmo perché penso che questo è un ciclo naturale che si ripete al rilascio di ogni nuova versione del sistema operativo più backward compatibile che c'è: neanche XP in tali occasioni così acclamato riuscì a fare di meglio, senza parlare di quello che si leggeva in giro con il rilascio del SP2.

Infine voglio fare un paio di precisazioni:

  1. Nessun sistema software è perfetto, meno che mai Vista. Se qualcuno leggendo quanto ho scritto è tentato di pensare ciò, consiglio immediatamente un bel giro su "I miei guai con Vista". C'è pure un post che parla di un baco nel protocollo di rete in questione che sfortunatamente non ha niente a che fare con i problemi cronici del mio NAS. Io stesso ne ho indicato un paio di bachi davvero antipatici.
  2. Sperare che un ipotetico SP possa risolvere un problema per sua natura irrisolvibile dimostra scarsa comprensione del problema stesso. Il baco del NAS infatti era noto ben prima del rilascio di Vista; la data del post di Raymond è 30 Marzo 2006 e il baco non ammette nessuna soluzione sul lato client che sia diversa da "la colpa è di Vista" (sempre ovviamente per l'utente medio: immagino che quello avanzato si sia già informato e stia comprando un nuovo NAS; perché il software scritto male e con intenzione presto manifesterà i suoi strali sfoderando altri bachi).
  3. Non è mia intenzione parlare dello specifico prodotto (che in questo post non ho neanche nominato) ma di un certo tipo di atteggiamento disdicevole che segue l'amara scoperta che il prodotto XYZ non è compatibile con il prodotto ABC

Il filo conduttore tra i due esempi è uno solo: se c'è un caprio espriatorio qualcuno ne farà uso; se non c'è qualcuno ne farà uso lo stesso da cui l'assunto che sempre secondo qualcuno è l'informatica ad essere bacata, ad aver drammaticamente fallito creando false promesse: ai buoni e volenterosi non resta che andare a casa tanto la colpa è di Turing. Ma da un post con un titolo del genere che ci si voleva aspettare? Big Smile

-quack

Technorati tags:

[1] che per dirne qualcuna non supporta password più grandi di 8 caratteri, non supporta caratteri speciali nelle password e non supporta neanche file più grandi di 2GB impedendomi di fatto di fare un backup totale e tombale

[2] in la realtà la soluzione c'è: pubblicare un aggiornamento del firmware, ma per l'utente comune che ha diritto a non sapere dell'esistenza di firmware la colpa è sempre di Vista.

Dreams

Jul 23, 2007 - 0 comments - Archiviato in: #Cazzate

...come true. Impossible not to do.

Questa tipa l'ho già vista da qualche parte. Ma chi è???

Ciclismo della domenica

Jul 22, 2007 - 0 comments - Archiviato in: #Cazzate

Ho una mountain bike che in vita sua avrà visto non più di 200 kilometri di strada. Ma siccome il colesterolo da queste parti dilaga, la buona stagione (ahahahah! buona questa) sta per arrivare ed i vecchi costumi da bagno per uno strano effetto relativistico si sono ristretti, mi è venuta un'improvvisa voglia di pedalare anche in virtù del fatto che Redmond è «the bicycle capital of the Northwest». Per rendere lo sforzo ciclistico piacevole mi son procurato due strumenti indispensabili:

  1. colonna sonora; possibilmente canzoni con BPM alto e magari crescente (ottima Waterloo degli ABBA nonostante parli di sconfitta e sia poco adatta agli scopi motivazionali di una playlist)
  2. piccolo tachimetro elettronico da bicicletta (qui conosciuto volgarmente come bike computer).

Per il primo strumento è bastato il mio Cingular 3125, di cui vado estremamente fiero: nonostante abbia usato solo la memoria interna, che con i suoi 60MB è davvero scarsa. URGE acquistare una micro-SD adeguata agli sforzi.bici

Lo strumento numero due mi ha dato più grattacapi del solito: passeggiavo in centro (dauntaun) a Seattle e mi son ritrovato a passare davanti ad un negozio di biciclette sportive a cui ho chiesto informazioni. Mi hanno ovviamente mostrato diversi modelli dai 30$ (modello scarso con cavo pericoloso) ai 70$ (modello con sensore wireless). A nulla è servito il fatto che lamentassi che in gioventù grazie ad una raccolta punti white millhouse (mulino bianco: ma mi son preso la licenza poetica per la traduzione) mio fratello avesse ricevuto un mini-computer a costo zero: il commesso mi ha detto laconicamente che il massimo che poteva fare come favore personale millantando una lunga amicizia (?) era 10$ di sconto sul modello «pericolo mortale» (in realtà il modello non aveva niente di così pericoloso: pura strategia di marketing). Sono uscito sconsolato pensando che nel 2007 tale tipo di elettronica costasse ormai cifre davvero irrisorie. Mi son rivolto quindi al più grande store online per questo tipo di affari: IBEI!! Ho trovato quindi un modello davvero niente male per la modica cifra di 9.50$ inclusiva di spedizione con tariffa prioritaria. Un affare!!

L'aggeggio è arrivato dopo appena 3 giorni e il fogliettino di istruzioni era chiaro ma abbastanza striminzito: nessuna indicazione su quale distanza dal centro della ruota andasse installato il sensore. Santo google mi è venuto in aiuto ricordandomi una nozione di geometria elementare che nella foga del setup avevo abbondantemente dimenticato: siccome il sensore fa le sue misurazioni basandosi sul periodo ed il periodo è proporzionale alla velocità ma indipendente dalla posizione sul raggio, la soluzione è «fa come vuoi». Da allora ho cominciato a raccogliere le statistiche di pedalata: ho resistito alla geekagine di registrarle in un foglio excel... finora. Siccome sono un dilettante, si accettano volentieri suggerimenti su come migliorare la pedalata e ridurre a zero il rapporto sforzo/fitness.

-quack

Technorati tags:

Tipi da messenger: i Danteschi

Jul 21, 2007 - 0 comments - Archiviato in: #Cazzate #MSN Messenger #Video

MSNAlighieriSi racconta che Dante Alighieri avesse una memoria davvero prodigiosa. Un aneddoto a tale riguardo vede il sommo poeta camminare per le strade di paese ed incontrare uno sconosciuto che gli chiede:

«Oh Dante, qual è il tuo cibo preferito?»
«Le uova» la risposta del sommo.

Dopo un anno lo sconosciuto reinconta Dante per le stesse strade e chiede:

«Oh Dante, ma con cosa?»
«Con il sale», risponde Dante senza minimamente titubare.

Mi capita spesso di chattare con qualcuno che dopo avermi salutato mi pone domande che mi sembrano strane tipo «ma per quella cosa?» o «hai risolto il problema?» o «allora che mi dici di quel fatto?» facendo riferimento a passate conversazioni «scadute» da svariate settimane. Approfitto allora di questo fantastico mezzo che è il blogghe per dire che a differenza dei miei mirandoliani interlocutori io purtroppo non ho le qualità di Dante Alighieri. Stick out tongue Vuoi per colpa della galoppante età, vuoi per colpa della mia dislessia. La cosa è più imbarazzante per me che per chi mi interpella. Una volta poi, qualcosa del genere è accaduta live e quello che segue è una ricostruzione più o meno fedele.

Ero in una pizzeria in compagnia della formichina: passa alle sue spalle una persona dal volto familiare che si dirige verso il bagno. Al suo ritorno mi riconosce e si avvicina al tavolo:

sconosciuto: «Come va?»
paperino: «Ah bene bene. E tu?»
sconosciuto: «Ah si pure, un po' di stress sul lavoro...»
paperino: «eh quello non manca mai, sai com'è...»
[qualche minuto di conversazione]
sconosciuto: «beh vi lascio, buona serata»
formichina: «ma chi è?»
paperino: «ti giuro che non mi ricordo e siccome neanche lui mi ha chiamato mai per nome ho l'impressione che ci siamo incontrati ma nessuno dei due si ricorda dove»

Ero troppo in imbarazzo per chiedere «tu chi sei» e alla fine è stato un po' come per Lino Banfi in questa scena del mitico Vieni avanti cretino:

Happy chatting. Ma di che stavo parlando? Smile

-quack

Technorati Tags: ,

Firefox URI handler demistificato

Jul 20, 2007 - 0 comments - Archiviato in: #Security

UPDATED 

Avevo letto giorni fa della diatriba sul baco che affligge Firefox ma sfruttabile via Internet Explorer. Cercherò di spiegare come funziona la cosa facendo spero un po' di chiarezza: siccome il baco chiama in causa i due browser, si sono create due fazioni partigiane diverse che danno la colpa rispettivamente a Firefox e ad IE.

Prima di tutto la fonte: il baco è stato scoperto da Thor Larholm e la descrizione in inglese può essere letta a questa pagina. Tutte le altre fonti, inclusa Secunia, citano la pagina di Thor.

Qual'è il problema? Questa chiave del registry che definisce come comportarsi con lo specifico URI handler:

[HKEY_CLASSES_ROOT\FirefoxURL\shell\open\command\@]
FIREFOX.EXE -url "%1" -requestPending

che indica come invocare firefox passando una URL (l'url prende il posto di %1). Se la URL ha la forma:

FirefoxURL://foo" –argument "qualcosa di losco

la chiave in questione porterà all'esecuzione di questa riga di comando:

FIREFOX.EXE -url "FirefoxURL://foo" –argument "qualcosa di losco" -requestPending

e cioé Firefox verrà eseguito con il parametro aggiuntivo "qualcosa di losco".
Dove sta il problema? Nella chiave del registry: IE si limita a leggerla, a sostituire %1 con il parametro passato e a invocare il processo risultante. La cosa tragica è che IE, come qualsiasi altro software inclusi i client di posta, non può davvero fare altro. Il problema si presenterebbe quasi identico se al posto dei doppi apici (") fosse usato un qualsiasi altro carattere di delimitazione (#). L'unica alternativa per chi vuole lanciare Firefox è di leggere la chiave del registry, cercare di interpretarla (il programma penserebbe «uhm vediamo, %1 è racchiuso tra doppi apici, quindi mi tocca fare qualcosa, ecc.») e manipolare i parametri per l'applicazione target di conseguenza: ce n'est pas possible! Il chiamante non può essere responsabile per la validazione dei parametri del chiamato, altrimenti occorrerebbero tonnellate infinite di codice che si limita solamente a controllare i parametri: evviva! Qual'è il modo più corretto per sistemare la falla? La soluzione più banale, sicura e funzionale è fare in modo che la URL sia sempre l'ultimo parametro dopo lo switch -url: tutto ciò che segue verrebbe interpretato come URL che a sua volta è posta immagino sotto ampio scrutinio, ma dubito che a questo punto possa essere implementabile per motivi di backward compatibility.

Con un meccanismo simile lo stesso Thor afferma è possibile lanciare con parametri altre applicazioni tra cui Acrobat, Outlook, ecc. A differenza di firefox però nessuna di queste applicazioni formatta l'HD[1] se vi si passa come parametro "/format C:". Qualcuno ha pure pensato che IE potrebbe semplicemente evitare di invocare tali applicazioni, ma se una applicazione registra un URI handler <sarcasmo>forse lo fa perché vuole essere invocata</sarcasmo>

Riassumendo:

  • è possibile, via IE, invocare altre applicazioni passando parametri arbitrari (tutte le applicazioni che registrano un handler URI)
  • nessuna applicazione ad eccezione di Firefox esegue ciecamente i parametri passati
  • non c'è nessun motivo pratico per registrare uno URI handler specifico (FirefoxURL://)
  • è possibile che altre applicazioni - oltre ad IE - possano invocare Firefox usando la tecnica descritta e incorrendo nella vulnerabilità illustrata
  • Firefox infine, come mostra il buon Enrico, fa esattamente la stessa cosa di IE ( http://msinfluentials.com/blogs/jesper/archive/2007/07/20/hey-mozilla-quotes-are-not-legal-in-a-url.aspx )

Insomma la questione sembrerebbe abbastanza controversa, ma i punti giocano tutti a sfavore di Firefox, tant'è che Secunia ha assegnato il baco come vulnerabilità di Firefox (Thor invece parla di vulnerabilità di IE e a questo punto di tutte le applicazioni che invocano URI handler). Ora un baco, anche grave, è sempre un baco, un errore umano, una svista. Ma della questione, leggendo anche le interviste riportate nel post di pseudotecnico, mi hanno sorpreso due cose:

  1. l'atteggiamento di alcuni partigiani (non mi riferisco al post di cui sopra, ma altra roba che ho letto in giro nei forum per troll), che senza neanche capire di cosa si stesse parlando, hanno preso le parti dell'una o dell'altra fazione
  2. l'atteggiamento del team di Firefox, che dopo aver fatto capro-espiatorismo, ha fatto anche del gran-paraculismo tirando fuori la frase ad effetto «pensiamo che sia compito di Firefox garantire una navigazione sicura agli utenti che navigano usando Firefox.»

Ora secondo me - parere personale del tutto gratuito - Firefox ha diversi pregi, ma la paventata superiorità in sicurezza, soprattutto dopo il rilascio di IE7 per Vista, semplicemente non rientra tra questi. Infatti non mi spiegherei altrimenti questo brano dell'intervista fatta due settimane fa da ZDNet a Mike Schroepfer , VP dell'engineering in Mozilla:

[ZDNet] Is Protected Mode a priority for Firefox? After the animated cursor attack, Protected Mode became important in user’s minds. Microsoft claimed that IE was more secure than Firefox because of Protected Mode.

The animated cursor attack would still allow for reading of any files on the local system - so protected mode is no panacea. We believe pro-active and rapid patching of security vulnerabilities is still the best defense. Having said that we also believe in defense in depth and are investigating protected mode along with many other techniques to improve security for future releases.

Traduco sommariamente:

Domanda: ma il Protected Mode di Vista è una questione prioritaria per Firefox?
Risposta:  il protected mode di Vista non è la panacea e la migliore difesa è tappare i buchi velocemente, per cui per ora ci stiamo pensando

Ritraduco con una metafora:

Domanda: avete pensato di rilasciare una porta con la nuova serratura disponibile?
Risposta: la serratura non risolve tutti i problemi in quanto c'è gente che potrebbe entrare dalla finestra (del terzo piano) per cui crediamo che mandare subito una volante dopo un furto rimanga la soluzione migliore. Per le serrature ci stiamo pensando...

Wow! Da una azienda che parla di sicurezza in questi termini io non «comprerei» neanche notepad. Figuriamoci se comprerei un browser[2] con cui poi andare a controllare il mio modesto conto in banca. Affidare le chiavi di casa a Firefox? Da oggi non se ne parla neanche. Smile

Update
La questione comincia ad essere semplicemente ridicola se non fosse oltraggiosamente patetica: http://it.slashdot.org/article.pl?sid=07/07/20/1252215&from=rss
Non ci voglio e non ci posso credere: uno javascript può rubare le password in Firefox. Congratulations!

-quack

[1] sto volutamente esagerando per mostrare la gravità del baco
[2] il browser ironia della sorte è stato promosso dall'azienda come Safer, Faster and Better; considerando che anche Safari per Windows, con al suo attivo 8 bachi di sicurezza in meno di poche ore, è stato promosso come «designed with security in mind since day one», comincio a pensare che la sicurezza stia diventando davvero uno slogan vuoto. Bah!

Refuctoring

Jul 19, 2007 - 0 comments - Archiviato in: #Cazzate #Codice

Il refuctoring è una pratica che tende ad aumentare la job-security e come tale non va confusa con il refactoring.

È infatti risaputo che:

  

in quanto se il codice diventa più manutenibile, la job-security diminuisce.

Anche il refuctoring ha la sua teoria alle spalle su cui si possono trovare maggiori informazioni in questo PDF.

-enjoy

Technorati Tags: ,

Half price books

Jul 18, 2007 - 0 comments - Archiviato in: #Recensioni

La scorsa domenica son passato da un negozio chiamato half price books che vende mobili. Scherzo. Nel mio singolare carrello della spesa sono finiti i seguenti libri:

Operating System Concepts

Oltre a presentare i concetti teorici per la progettazione di un sistema operativo, il libro dedica svariati capitoli ad architetture "alternative", incluso un capitolo su Windows XP.
Tali capitoli sembrano abbastanza dettagliati anche se non esaurienti come può essere un intero libro sull'argomento
Pro ASP.NET 2.0 in C# 2005

Di primo acchito sembra un'ottima guida di riferimento per la creazione di siti dinamici in ASP.NET/C# con un intero capitolo dedicato alla creazione di WebServices. Ancora non avevo nella mia libreria casalinga un volume di riferimento su tale argomento... lacuna colmata!
PHP and MySQL for dynamic web sites

Certe volte il codice PHP mi sembra davvero oscuro. A volte il codice PHP è davvero oscuro. Per curiosità ho comprato questo testo. Non sono esperto in materia e quindi non saprei giudicare la qualità del contenuto, ma visto che era in forte sconto ho pensato di tenerlo a portata di mano.

Totale speso 27.94$ + tasse (rispettivamente 7.98$, 9.98$ e 9.98$), sicuramente molto meno che half-price. Mi sembra di aver fatto un ottimo affare! Ora bisogna trovare il tempo per leggerli o almeno scorrerli. Le vacanze sono in arrivo, ma questi non sono testi da leggere in vacanzaStick out tongue.

-quack

Technorati tags: , ,

Test cases

Jul 17, 2007 - 0 comments - Archiviato in: #Aneddoti #Cazzate

universo Qualche giorno fa sono stato invitato ad un meeting di revisione dei test cases per il prodotto XYZ condotto da un tester. Tale tipo di meeting anche se noioso è altamente educativo e può avere inaspettati risvolti umoristici. Uno dei test case recitava:

  • Controllare che dopo la disinstallazione di XYZ il .Net Framework (che XYZ usa) sia ancora installato

Su questo punto è nata una discussione quasi accesa sull'inutilità di tale verifica, ma la pignoleria di un nuovo tester ha preso il sopravvento ed il test case è rimasto al suo posto; sono stati presi però in considerazione ad altri due corollari del test case di cui sopra suggeriti dal mio collega e da me, entrambi dotati di buon sense of humor:

  • Controllare che dopo la disinstallazione di XYZ tutte le altre applicazioni siano ancora installate
  • Controllare che dopo la disinstallazione di XYZ l'universo esista ancora

Il secondo suggerimento non è stato accolto solo perché l'universo non implementa la famosa interfaccia ITestable Smile

-quack

Technorati tags:

Perfezionismo

Jul 16, 2007 - 0 comments - Archiviato in: #Apple #Cazzate

Nessuno è perfetto, nessuna azienda (a parte la NASA!) è capace di rilasciare software complesso privo di bachi, ma c'è qualcuno che comunque non smette di inseguire il sogno del perfezionismo. Il che di per sé sarebbe una cosa positiva se avvenisse nell'unico modo possibile, il metodo in due passi:

  1. critica e molto più importante auto-critica
  2. miglioramento delle debolezze che vengono fuori dal passo 1.

Il modo sbagliato per inseguire il perfezionismo, quello che porta a prodotti apparentemente perfetti ma inevitabilmente bacati, usa altre tecniche:

  • Negazionismo; negare spudoratamente anche l'evidenza
  • Capro-espiatorismo: laddove, il negazionismo fallisce, cercare urgentemente qualcuno da incolpare.

Quando penso al perfezionismo, mi viene immediatamente in mente Apple. Del negazionismo di Apple ho già parlato. Quelli che seguono sono esempi di capro-espiatorismo:

Apple certo non è l'unica, ma è sicuramente la migliore. Apple: chi vuoi  incolpare oggi? Smile

(post da non prendere troppo seriamente)

-quack!

Technorati Tags:

T-shirt tuu

Jul 15, 2007 - 0 comments - Archiviato in: #Cazzate

Venerdì son andato in ufficio con una maglietta con il logo qui a Microsarddestra. Immaginavo qualche domanda in più ma nessuno ha capito (of course) la battuta. Peccato. 

Invece l'altro giorno, mentre visitavo il mercato di Seattle in Pike Place, mi son imbattuto in una bancarella che vendeva t-shirt umoristiche tra cui campeggiava quella qui sotto:

paniccaos

(Chaos, Panic, Disorder: My job here is done)

Ci ho fatto un pensierino: non vorrei sembrare troppo drastico. Smile

-quack

Technorati Tags: ,

Scusi vuol chattare con me

Jul 14, 2007 - 0 comments - Archiviato in: #Blog-Tech #Cazzate

...grazie, preferisco di no!

Ho scoperto da un paio di giorni My Plugoo via blog di Maxime («pensierineCcesso»). Screenshot:

myplugoo

che si può notare nella sidebar a sinistra.

Diciamo che un plugin così lo cercavo da sempre. My Plugoo fa da ponte tra il mio contatto messenger, che rimane anonimo onde evitare le solite quintalate di pubblicità Vi4gra, ed il blogghe.

Il funzionamento è semplice. Ci si registra presso www.plugoo.com dando l'indirizzo email associato al proprio contatto messenger (ma anche Yahoo, AIM o whatever), si configura l'aspetto del plugin e si ottiene in cambio un pezzo di HTML da aggiungere sul proprio sito. Nel frattempo alla lista di contatti messenger viene aggiunto un altro utente chiamato Plugoo, che fa da tramite tra la pagina web e messenger:

PlugooMSN

Semplicemente geniale! Ocio che My Plugoo è ancora in beta!!

-quack

Technorati Tags:

SuperTools: InfraRecorder e Audacity

Jul 13, 2007 - 0 comments - Archiviato in: #Link

Ho notato che da tempo Nero è diventato un pacchetto da più di 100MB. A Roma direbbero «te stai a' 'llargà» o «me pari l'omino Michelin». Gli americani, i soliti sintetici, hanno tirato fuori una parola sola: bloatware. Qualche mio amico ha detto che le features di editing audio avanzate possono risultare pure comode, ma per tutto quello che io ho mai dovuto fare mi son accontetato di Audacity e dei suoi plugin, che consiglio vivamente. Eccone uno screenshot della versione per XP, ma è un vero editor multipiattaforma con UI molto consistente, almeno per quanto riguarda la versione Windows:

audacity-windows

Per masterizzare ho quindi deciso di guardare ad altre alternative e son finito per scoprire InfraRecorder. Ne avevo letto bene già altrove, poi un post del matto (Dario Solera) mi ha definitivamente convinto a provarlo e devo dire che è ottimo: fa esattamente e solamente masterizzazione. Sono supportati DVD/CD dati, DVD video, CD audio, oltre al supporto totale per la piattaforma x64. L'unica pecca è che nella modalità "dati" il software non permette di stabilire l'ordine dei file: magari l'opzione c'è ma non ho ancora capito come trovarla.

Eccone uno screenshot, su cui si può cliccare per ingrandire:

InfraRecorder

Entrambi i software sono hostati su SourceForge e quindi open source (per gli appassionati) oltre ad essere gratuiti come può esserlo una birra (metafora che non ho mai capito Smile); per cui l'invito è: accattatavilli!

-quack

Technorati tags:

Perle di AppCompat

Jul 12, 2007 - 0 comments - Archiviato in: #Cazzate

(Tanto) tempo fa, quando Windows 3.1 imperava e spopolava, il modo più comune (molto comune!!) con cui le applicazioni controllavano che la versione di Windows fosse quella corretta era la seguente:

if (Windows.MajorVersion < 3 ) or
  
(Windows.MinorVersion < 1) Then
      MessageBox("Questo programma richiede almeno Windows 3.1")
      Quit()
End If

Windows 95 originariamente doveva avere il numero di versione 4.0, ma il numero di applicazioni afflitte da questo baco (molto più comune di quanto si possa immaginare) era così grande che si è deciso di rinumerare Windows 95 come Windows 3.95

Avendo a disposizione una virtual machine con Windows 95 si può «provare per credere».

-quack!!!

Technorati tags: ,

Corollario al post che precede

Jul 11, 2007 - 0 comments - Archiviato in: #Windows

Parlando di virtualizzazione dei file ho omesso di spiegare quello che succede in uno specifico caso. E cioé cosa succede se un processo 'virtualizzato' cerca di leggere un file esistente da un folder 'proibito' (esempio: %SystemRoot%\win.ini)? Se tale file esiste già nel virtual store, il processo leggerà da quest'ultimo altrimenti il processo proverà a leggere dal file 'originale' (sempre che ne abbia i permessi). La copia nel virtual store ha quindi precedenza sul file reale.

Cosa succede allora se un processo virtualizzato tenta di modificare ad esempio %SystemRoot%\win.ini e tale file non esiste nel virtual store? Semplicemente durante la fase di lettura leggerà da %SystemRoot%\win.ini, mentre nel momento in cui il processo comincerà la fase di scrittura, il sistema creerà una copia del file nel Virtual Store e redirizionerà (?) tutte le operazioni di scrittura verso tale nuovo file. Da quel momento in poi ogni successiva operazione di lettura darà la precedenza alla copia virtualizzata.

Buona virtualizzazione!

Technorati tags: ,

(oggi temo che si schiatti dal caldo:

Notare il national weather alert che recita: EXCESSIVE HEAT WARNING REMAINS IN EFFECT UNTIL 11 PM PDT THIS EVENING)

La virtualizzazione dei file e del registry di Vista

Jul 10, 2007 - 0 comments - Archiviato in: #Windows

(post ad alto contenuto tecnico)

Uno dei grattacapi di appcompat da risolvere per il rilascio di Vista è legato all'implementazione di UAC e al fatto che le applicazioni scritte per Windows XP, essendo eseguite di solito con permessi di amministratore, si potevano permettere di scrivere un po' ovunque nel file system. Il classico esempio è quello delle applicazioni che memorizzano i dati dell'utente direttamente nella directory C:\program files\applicazione

Per risolvere questo annoso problema in Vista è stato introdotto il concetto di "virtualizzazione dei file" (da non confondersi con la virtualizzazione via Virtual PC e similari). La virtualizzazione dei file può essere attivata o meno per ogni singolo processo. È possibile controllare se la virtualizzazione è attiva via Task Manager, avendo l'accortezza di aggiungere la colonna virtualizzazione a quanto attivo: per fare ciò selezionare il menù View/Select Columns e spuntare la voce virtualizzazione:

Virtualization1

Di lì comparirà in task manager la colonna virtualizzazione per ogni processo (clicca per ingrandire):

Virtualization2

È possibile quindi attivare/disattivare la virtualizzazione cliccando sul processo via tasto destro del mouse:

Virtualization3

Due parole su cosa vuol dire virtualizzazione dei file: quando la virtualizzazione dei file per un processo è abilitata, tutte le operazioni di scrittura presso folder "proibiti" (%ProgramFiles%, %ProgramData%, and %SystemRoot%) vengono redirezionate presso il folder %LocalAppData%\VirtualStore. Cioè una applicazione virtualizzata cerca di creare e scrivere il file C:\windows\readme.txt, il file verrà creato come %LocalAppData%\VirtualStore\readme.txt

Come per ogni ogni regola, ci sono le eccezioni: vengono escluse da questo tipo di redirezione alcune sottodirectory ed i file target di tipo .EXE, .BAT, .SCR ed altri. Il motivo è semplice: se un processo cerca di sovrascrivere un eseguibile o similare, ci sono alte probabilità che si tratti di un updater e cioé un processo che cerca di aggiornare una applicazione.

È possibile aggiungere altre estensioni delle esclusioni alla lista editando questa chiave di registry e riavviando poi il sistema:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Luafv\Parameters\ExcludedExtensionsAdd

Un esperimento interessante da fare per provare la virtualizzazione è il seguente:

  1. aprire il command prompt
  2. digitare cd %SystemRoot%
  3. digitare echo hello > test.txt
  4. ci si beccherà l'errore "Access Denied"
  5. attivare la virtualizzazione per il processo CMD.EXE in questione via task manager
  6. digitare echo hello > test.txt
  7. questa volta nessun errore. Il file sembra essere davvero nella directory Windows, come si può notare lanciando il comando dir test.txt
  8. disattivare la virtualizzazione
  9. notare che il file - secondo il command prompt - è 'scomparso'. In realtà il file sarà comunque rintracciabile come %localappdata%\virtualstore\windows\test.txt

Virtualization4

L'esatto opposto avviene durante le operazioni di lettura.

Un'ultima nota sul criterio usato dal sistema per decidere se un processo va virtualizzato o meno: una applicazione viene considerata legacy (e quindi virtualizzata) se è 32-bit, non è stata lanciata con permessi di amministratore e non contiene il manifest che indica si tratti di una applicazione Vista. Per quanto riguarda il registry  un meccanismo simile è in funzione. Le voci di registry virtualizzate vengono redirezionate verso:

HKEY_ CURRENT_USER\Software\Classes\VirtualStore

A differenza del file system però, per il quale i folder da virtualizzare sono un insieme noto a priori, per il registry il bit che segnala se la chiave del registry va virtualizzata o meno è memorizzato nella chiave per ogni singola chiave.

Per maggiori informazioni su UAC e la virtualizzazione, rimando all'articolo in inglese apparso su Technet Magazine a firma di Russinovich.

-Enjoy

Technorati Tags: ,

Il pulsante Start

Jul 9, 2007 - 0 comments - Archiviato in: #Cazzate #Microsoft

start95 Non ho mai visto nessuna "feature" di Windows essere trattata male dalla "critica" come il noto pulsante Start introdotto con il mitico Windows 95 (qualcuno magari ancora ricorda ancora la colonna sonora firmata Rolling Stones "start me up"). Visto che Raymond Chen molto recentemente ha dedicato un'intera saga di articoli sulle funzionalità di last recently used dei programmi in Windows XP nel menù di avvio, ho pensato di mettere insieme un botta e risposta virtuale dedicato a lui ('Start').

  • Sulla buona progettazione. Dicono di 'lui': 
    In Microsoft le ragioni commerciali prevalgono sulla buona progettazione.
    Risposta:
    Even advanced users liked the Windows XP Start menu (in poche parole, il pulsante 'Start' è progettato così bene che piace anche agli utenti 'avanzati'; aggiungo perché la buona progettazione è molto commerciale)
  • Sull'opzione di shutdown:
    Windows complotta contro l'utente: ad esempio per spegnere Windows bisogna cliccare il pulsante START.
    Risposta:
    Why do you have to click the Start button to shut down? (in parole povere: per lo stesso motivo per cui per spegnere una macchina si usa la 'chiave di accensione')
  • Teoria complottistica sulla lista dei programmi iniziale:
    Il menù Start di Windows XP contiene soltanto i programmi che Microsoft vuole indurre gli utenti ad usare. Tutti gli altri programmi non-Microsoft sono relegati dietro la scritta "Tutti i programmi".
    Risposta:
    What determines which programs show up on the front page of the Windows XP Start menu?
    Why does a new user get stuff on their Start menu right off the bat?
    In parole povere: sul come popolare la lista su un PC "nuovo" fresco di XP, c'erano due possibilità. Lasciare la lista vuota o prepopolarla con un po' di link a tool di sistema che possono tornare utili su un Windows appena installato. Nessun complotto, solo una scelta molto ponderata di progettazione.

Mi viene in mente la famosa legge di Murphy: chi sa fare fa, chi non sa fare insegna, chi non sa insegnare... critica (o peggio: tira fuori teorie complottistiche)!! Smile

Domanda finale per i volenterosi: con Windows XP il pulsante start occupa tutta l'area a sinistra della taskbar (come da immagine sotto) a differenza di Windows 95 in cui il pulsante era spostato pochi pixel a destra e verticalmente centrato. Perché?

startxp

-quack!

     

Maggiordomi in pensione

Jul 8, 2007 - 0 comments - Archiviato in: #Cazzate

Pensavo fra me e me che il post sui maggiordomi non sarebbe stato completo senza parlare di 3 maggiordomi ormai in pensione e di cui sono stato "donatore di lavoro" in prima persona.

nerd

I'm OS/2

OS/2 il maggiordomo precisino
La storia di OS/2 è abbastanza articolata: nato in uno sforzo congiunto MS-IBM per rimpiazzare il maggiordomo DOS, aveva alcune abilità niente male ma non era compatibile col maggiordomo DOS al 100% a cui molti ospiti si erano già abituati.
La versione Warp (3.0) fu presentata come un maggioromo "ad oggetti". In un periodo in cui tutto ciò che era "ad oggetti" o "con oggetti" vendeva di più, la domanda diventava: ma a che servono poi questi oggetti ai datori di lavoro? OS/2 era in grado di condividere la casa con Windows: era possibile addirittura assumere OS/2 con un sub-contratto con Windows. Si dice che il maggiordomo Windows lavorasse meglio alle sub-dipendenze di OS/2, ma nuove versioni di Windows e di OS/2 sono entrate in competizione aggressiva per gli stessi posti di lavoro. OS/2 è andato definitivamente in pensione il 31 dicembre 2006.

amiga
I am AmigaDOS

AmigaDOS il maggiordomo sexy
'Snob' come MacOS, il maggiordomo AmigaDOS lavorava solo in case costruite da una certa ditta di cui era proprietario un famosissimo navigatore.
È stato un maggiordomo attraente non tanto per la bellezza fisica in sé, quanto per alcune abilità a gestire compiti speciali utili soprattutto a proprietari 'artisti' (musicisti, disegnatori, grafici, ecc.).
AmigaDOS ha avuto una vita lavorativa abbastanza travagliata seguendo le sorti dell'impresa di costruzioni con cui collaborava: spesso in cassa-integrazione, è stata più volte richiamata in servizio con i successivi di proprietà dell'impresa stessa.
AmigaDOS è ora in pensione, ma qualche fan ci tiene a far sapere che si tratta solo di cassa integrazione e che presto si potrà rivedere AmigaDOS in azione.

fantasma

I am DOS

DOS il maggiordomo fantasma
Maggiordomo storico, classe '80, è nato per lavorare in case costruite dall'IBM ma da subito ha fatto fortuna anche altrove. Dai costi modici, era facile trovarlo impiegato anche presso alcuni alloggi 'popolari'; molto spesso si trattava di impiego a nero, senza copertura previdenziale.
DOS si limitava ad eseguire solo compiti molto basici lasciando gli oneri più gravosi della gestione della casa nelle mani degli ospiti. Non avendo avuto nessuna educazione in gestione famigliare, non era in grado di soddisfare le esigenze di più di un singolo ospite alla volta. Qualche ospite si è adattato a questa limitazione rifugiandosi nei famosi sgabuzzini TSR, dando la possibilità ad altri ospiti di alloggiare comodamente senza 'disturbare' tanto DOS.
Ha avuto uno strano imparentamento con il maggiordomo più moderno Windows, da cui è stato mandato definitivamente in pensione nel Settembre 1995. Qualcuno tuttora rimpiange la semplicità di tale maggiordomo che spesso si vede ancora in giro in piccole capanne virtuali.

-Enjoy

Technorati tags: