Security Date 8-9 Maggio Camerino

9 05 2009

Ciao a tutti rega!
Allora sono appena tornato da Camerino per il security date svolto in questi due giorni. E’ stata un’ esperienza bellissima. Ringrazio Fabio aka Ryuwper avermi invitato e per avermi permesso di soggiornare. E’ veramente una persona stupenda. Comunque ho conosciuto molti ragazzi con cui mi son trovato veramente bene. I talk di oggi mi hann interessato abbastanza, mi dispiace non averli potuti seguire ieri ma purtroppo si è fatto troppo tardi. Dai ci siam divertiti tanto, anche ieri sera con Sandro e zioproto Saverio :D . Che dire, spero di risentire tutti presto e di avere qulche altra occasione per passare del tempo assieme.

Un saluto!

Dir31





Triste :(

6 04 2009

Amore mio…Io sono lì vicino a te…

Vorrei tanto stare lì a stringerti…

TI AMO!

La mia testa è rivolta a tutti voi fratelli d’ Abruzzo!

EDIT 06/04/09 23:23: buona notte amore mio





Parliamo di comunicazione: flusso di dati e topologia di reti

5 04 2009

Eccoci qui alla seconda puntata di questa misera serie di articoli che il mio cervellino prova a produrre. Oggi ho voglia di scrivere qualcosina sulle reti, ma non le solite cose come uno schemetto di come funziona il tcp-ip o il modello osi, bensì delle topologie di rete e i diversi modi in cui un flusso di dati (di qualsiasi genere) può essere trasmesso. Partiamo from scratch :D . Noi tutti quando comunichiamo scambiamo informazioni, questo scambio può essere locale, quando per esempio instauriamo un dialogo faccia a faccia con una persona, o remoto quando invece i due interlocutori sono fisicamente distanti. Ed è qui che l’ espressione “comunicazione di dati” vien fuori. Questa fa riferimento allo scambio di dati fra 2 dispositivi attraverso l’ utilizzo di un mezzo trasmissivo (cavo,etere,ecc…).La comunicazione che viene quindi instaurata può essere di diverso tipi: unidirezionale, bidirezionale alternata e bidirezionale.

Comunicazione unidirezionale – Simplex: in questa modalità la comunicazione avviene in una sola direzione. Solo uno dei due dispositivi può inviare dati, mentre l’ altro può solo riceverli. Un esempio può essere lo scambio di dati fra un lettore dvd (line out) e un televisore (line in). Il lettore invia i dati al televisore che può solo riceverli. O ancora meglio ciò che avviene fra una tastiera e un monitor. In questa modalità l’ intera capacità del canale può essere fruttata per spedire i dati.

Comunicazione bidirezionale alternata – Half Duplex: in questa modalità ogni dispositivo può sia trasmettere che ricevere i dati, ma non contemporanemente. Se un dispositivo trasmette dei dati l’ altro può solo che ricevere e viceversa. Un esempio possono essere i walkie-talkie.

Comunicazione bidirezionale – Full Duplex: come è facile immaginare a questo punto, in questa modalita i 2 dispositivi possono contemporaneamente sia spedire che ricevere i dati. La capacità del canale viene divisa. Questo può avvenire o usando due canali fisici accoppiati (uno per spedire, uno per ricevere) oppure dividendo la capacità dell’ unico collegamento fisico.

Un insieme di dispositivi connessi da canali di comunicazione è chiamato rete. Per valutare la bontà di una rete spesso si utilizzano diversi criteri come le prestazioni, la sicurezza e l’ affidabilità che comunque non discuteremo. I nodi di una rete (quindi i diversi dispositivi: computer, stampante, ecc..) instaurano una connessione che può essere: punto-punto o multipunto.

Una connessione punto-punto si ottiene dedicando l’ intera capacità di un mezzo trasmissivo ai 2 dispositivi connessi. Esempio può essere un cavo ethernet che collega 2 computer.
Una connessione multipunto è un collegamento condiviso da più dispositivi e quindi la sua capacità è divisa fra tutti i nodi che lo utilizano. La condivisione può essere esclusiva, ovvero, l’ accesso al canale viene fatto a turno, oppure simultanea, e quindi si condivide lo spazio.
Il modo in cui i dispositivi sono disposti viene chiamato topologia di rete. Quattro sono le topologie di base: mesh, stella, bus ed anello.

Mesh: Ogni nodo ha un collegamento punto-punto con ogni altro dispositivo nella rete, in modo che il numero dei collegamenti sia quadratico al numero dei nodi.
Lo svantaggio principale è quello di avere la necessità di molti cavi per collegare più nodi nella rete. Per 5 dispositivi ci sarebbe infatti bisogno di n(n-1)/2 canali duplex.

Stella: Ogni nodo è connesso con un collegamento punto-punto ad un hub centrale. Il traffico dei dati quindi non è gestito direttamente fra i vari dispositivi, ma dall’ hub. Questa topologia risulta più economica rispetto ad una tipologia mesh, ma lo svantaggio è che tutta la rete dipende dal dispositivo centrale. Quindi un malfunzionamento in quest ultimo compromette tutto il flusso di dati.

Bus: Questa rete utilizza un collegamento multipunto che connette tutti i dispositivi. Ogni nodo è infatti connesso ad un connettore fisicamente presente sul canale che legge i segnali. Lo svantaggio principale è che il segnale diminuisce sempre più a seconda della quantità di dispositivi connessi alla rete, mentre il vantaggio è la facilità di installare un nuovo nodo: basta infatti montare un connettore al bus (il canale trasmissivo).

Anello: Ogni nodo ha una connessione punto-punto con solo altri 2 dispositivi della rete: quello che lo precede e quello successivo. I dati vengono fatti passare in una sola direzione. Ogni nodo ha difatti un ripetitore che rigenera il segnale fino a farlo arrivare a destinazione. Gli svantaggi sono direttamente collegati a questa unidirezionalità del traffico, perchè basta che un ripetitore si rompa per compromettere tutta la rete.

Una rete comunque può anche utilizzare più topologie insieme, per esempio si potrebbe immaginare una rete a stella con un hub centrale a cui è collegata una topologia ad anello o a bus, in questo caso si parla di topologia ibrida.





Giornata Dir versione ragazzo

16 02 2009

Salve ragazzi! come va?
A me diciamo tutto bene. Oggi è stata una giornata positiva in parte.
Ieri avrei douto studiare un macello per il compito di matematica, filosofia e letteratura inglese, invece sono rimasto con la mia pixie fino al tardo pomeriggio (bhe è stata anche un po colpa nostra xD) e la sera avevo in mente solo lei dopo 3 giorni stupendi e quindi la mia testa non riusciva a connettere (altro che cevello full-duplex, si poteva (e si può) parlare di canale unidirezionale).
Comunque sia il compito non mi è sembrato difficile, anzi. Analisi di funzioni. Mamma sembra un parolone xD, alla fine è una cazzata o almeno per le 2 stupidaggini che si fanno a scuola. Filosofia e inglese poi me la sono scampata da pazzi, chissà com’è successo? Forse lassù qualcuno non voleva farmi pentire di aver riempito il mio tempo con il pensiero di una persona supenda. Sicuramente non me ne sarei pentito lo stesso :D .
Oggi pomeriggio niente di che, per un oretta mi sono addormentato (bhè uomini & donne fa un certo effetto xD) e poi ho studiato un po storia.
Ora Mi manca tanto una vocina, anche se forse sarà arrabbiata non importa, perchè è il mio ossigeno. Si, molto probabilmente si è arrabbiata pixie e ha tutte le ragioni del mondo, perchè in fondo sono un idiota. E’ difficile cambiare, mamma quanto è difficile, non avevo mai avuto la necessità (e il bisogno) di farlo ed è stranissimo. Comunque sia ci si prova, e ci si riesce. Per Forza.
Eh si, sono veramente perso di lei. E’ normalissimo oramai avere la sua immagine continuamente fissa davanti agli occhi. Sisi…lì in alto a sinistra c’è sempre lei, come la stella in quella foto d’estate affacciati al balcone. Che bella che è stata quella sera.

Vabè meglio non dilungarsi troppo sennò non finisco più :D

Vado a leggere qualcosa e ad aspettare che il telefono squilli.

Ciao a Tutti. Dir31





Parliamo di: Segmentazione della Memoria

12 02 2009

Salve ragazzi, questa sera, stordito un po dal mal di testa, mi è venuto in mente di iniziare una serie di articoli (che sicuramente scriverò con mooolta calma) intitolati “Parliamo di”. Ogni volta con argomenti diversi, che a mio parere potrebbero sembrare interessanti, curiosi o utili.
Volevo parlarvi oggi della memoria e come essa è strutturata.
Quando scriviamo e compiliamo un programma, le cose non sono semplici come sembra. Gcc (il nostro fido compilatore della gnu) fa sembrare le cose facili xD: scriviamo sulla riga di comando gcc -o nome nomesource.c diamo un invio e se il codice non ha errori di sintassi, in qualche secondo il nostro programma è pronto per l’ uso. Ma come è costruito all’ interno il nostro programma? com’è suddiviso?
Bhè queste son cose che un programmatore dovrebbe sapere, ma nessuno nasce imparato, e poi scrivendo con linguaggi ad alto livello, non è sempre necessario saperle (o almeno se non si è professionisti).
Allora; il nostro programma viene diviso in 5 segmenti: testo, dati, bss, heap e stack. Ognuno dei quali con uno specifico compito. Il segmento testo (o codice) è proprio quella parte che contiene il codice del nostro programma, (bhe certo una volta compilato, quindi in assembly). La sua memoria è fissa, non cambia, perchè non deve contenere variabili.
Le sue istruzioni vengono eseguite una alla volta, ma non in modo lineare, perchè come sappiamo tutti, esistono strutture, classi, metodi, funzioni, ecc… che portano a far eseguire parti di codice magari scritte molto più avanti o molto prima. Il compito di tenere ordine viene affidato ad un puntatore: l’ EIP.
Una volta eseguito; il programma stringe un rapporto molto stretto con questo puntatore, difatti quello che fa è leggere l’ istruzione puntata dall’ EIP, aggiungere ad esso la lunghezza dell’ istruzione ed eseguire quest ultima. Tutto questo in modo ciclico.
Il segmento di testo poi non ha permesso di scrittura, poichè è bene evitare qualsiasi tentativo di modifica del codice.
Il segmento dati contiene le variabili statiche e globali inizializzate del programma, mentre il segmento bss contiene le stesse non inizializzate. Anche questi segmenti hanno una memoria fissa, perchè persistono in tutto il programma memorizzate in loro segmenti di memoria. Il permesso di scrittura però è abilitato.
Il segmento heap è una parte molto particolare della memoria che il programmatore può toccare con mano. E’ un segmento dinamico che si gonfia e si restringe a seconda delle necessità. Difatti viene gestita dal programmatore attraverso le funzioni di allocazioni di memoria (malloc, calloc, free, new, delete) e dal processore attraverso complessi algoritmi. Lo heap si espande poi, sempre verso indirizzi di memoria più alti, accostandosi allo stack.
Quest ultimo è un segmento altrettanto particolare e molto studiato, soprattutto in fase di bug hunting ed exploiting. Viene utilizzato come contenitore temporaneo di variabili e dati nelle chiamate a funzione, anch’ esso di dimensione variabile. Quando infatti l’ EIP arriva ad una jump, call, branch, ecc.. ci saranno sicuramente delle variabili che vengono passate come argomento, come fare allora? Lo stack ci arriva in aiuto prendendo in consegna queste variabili (compreso l’ indirizzo di ritorno che servirà per riportare l’ EIP all’ indirizzo corretto una volta terminata la procedura) e conservandocele per gli utilizzi all’ interno della fuzione stessa.
Lo stack ha una struttura FILO (first in – last out), quindi il primo elemento ad entrare sarà l’ ultimo ad uscire, come un filo con un nodo all’ estremità a cui vengono aggiunte delle perline. Per tenere traccia dei dati si utilizza un registro: l’ ESP. Questo è un puntatore alla fine dello stack quindi tiene conto degli elementi presenti in quest ultimo partendo da quello inserito per ultimo.
I dati in questo segmento si inseriscono attraverso l’ istruzione push e vengono estratti tramite l’ istruzione pop, facendolo espandere verso indirizzi più bassi verso lo heap.

Bhè dai, mi son divertito pure io a scrivere, così ho ripassato anche qualcosina. Mi scuso in anticipo per gli errori di cui non mi sono accorto o per l’ imprecisione su alcune informazioni.
Ho cercato comunque di riassumere i concetti generali, senza pretese.
Spero abbiate gradito…

Saluti Dir31 :D





Multithreading on Windows

31 01 2009

Anche se in tanti sono convinti che lo scheduling casa microsoft sia deprimente (bhe un time sharing ha i suoi pro e contro) tempo fa ho iniziato a leggere qualcosa sulla programmazione multitask con le api di windows.
I 2 esempi che vi propongo sono banali, ma spiegano i principi di funzionamento (lol 2 funzioni) di questo sistema. Sono una chat e una simulazione di movimento di un ascensore.

Simulazione Ascensore

Chat

Non spiego le caratteristiche generali del multithreading su windows poichè leggendo il codice penso ci si arrivi molto semplicemente.

Saluti Dir31!





Il grande rimbalzo dell’ universo

30 01 2009

Leggendo un articolo su “Le Scienze” del mese scorso e facendo riferimento ad un saggio di Paul Davies (“Gli ultimi 3 minuti”) , mi è risaltato agli occhi la teoria concepita tra gli anni ‘80 e ‘90 sulla genesi dell’ universo: la teoria a balzi o universo ciclico (the big bounce).
In breve vi spiego cosa succede: la creazione dell’ universo è la conseguenza di un collasso di un universo precedente, dove la gravità ha preso il sopravvento su tutte le altre forze fisiche presenti in natura e ha portato alla contrazione massima quest ultimo. Questo universo però invece di implodere, compie un rimbalzo (una nuova esplosione) che crea un nuovo universo con una densità di materia ed energia elevatissima (quello che nel modello cosmologico standard viene chiamato big-bang). Il neo-nato come il genitore d’ altronde, è sottoposto alla cosiddetta gravità a loop: rimane stabile finchè riesce a contenere energia, poi come una spugna che non riesce più a trattenere l’ acqua, incomincia a respingerla e questo comporta l’ espansione (appena nasce così, inizia ad espandersi). Quando la densità di energia e materia incomincia a diminuire comincia la contrazione. L’ universo ciclico però presenta diversi problemi sul piano fisico, difatti dopo il rimbalzo il nuovo cosmo dovrebbe contenere alcune proprietà del vecchio. I problemi? Bhè in primis c’è la radiazione termica: subito dopo il big-bang viene prodotta una grande quantità di questa radiazione e con il passare di miliardi e miliardi di anni questa continua a crecere gazie alla luce delle stelle. Questo significa che prima del big-crunch l’ universo contiene una quantità di energia radiante molto superiore a quella che aveva in precedenza subito dopo il big-bang. E se questa proprietà dovesse tramettersi al nuovo nato, quest ultimo nascerebbe più caldo. Questa energia termica in più viene ottenuta poi a danno della materia secondo la formula E = mc^2, e così si arriva a un trasferimento da materia ad energia termica. Ciò influisce sul modo in cui poi l’ universo si va a contrarre, perchè la forza gravitazionale è esercitata diversamente tra la materia e la radiazione. La radiazione addizionale, come ha spiegato Richard Tolman (1881 – 1948), fa si che l’ universo collassi più velocemente e quindi successivamente anche il nuovo si espande più velocemente. Gli universi sarebbero così sempre più grossi e lunghi (vi è un aumento di entropia, che si esprime in forma di cicli sempre più grandi). Si arriverebbe quindi a cicli infinitamente lunghi e indistinguibili a causa della morte termica raggiunta dal cosmo. Un altro problema sono i buchi neri, che aumentano sempre di più nella vita di un universo (causati dalla morte di stelle massiccie e favoriti dalla contrazione stessa dell’ universo) e quindi si arriverebbe ad una realtà dominata da questi ultimi. Si è arrivati così a pensare che l’ universo morente nella fase di rimbalzo venga affetto da una perdita di memoria. (Un universo quindi) “Sarebbe potuto esistere prima del big bang, ma gli effetti quantistici del rimbalzo hanno cancellato ogni traccia della sua storia precedente”. La densità di materia ed energia subisce secondo gli studi di Martin Bojowald variazioni forti e casuali che rimescolavano il tutto e quindi diventa impossibile guardare al passato.
Forzatura o Idee plausibili?

Chi può dirlo….

Saluti Dir31!





Gira la ruota! (ma anche la testa :D)

29 01 2009

Mamma come sono stato male oggi (lo sono ancora forse? Probabilmente si, ma mi sembra un sollievo in confronto a prima). Ho 2 occhi gonfissimi e la testa che gira per fatti suoi a velocità galattiche. Stamattina (dopo una notte passata in bianco) mi sveglio con una nausea incredibile: scuola? Per forza, avevo un compito di letteratura inglese immenso e saltarlo sarebbe stato un suicidio. Allora decido per entrare alla seconda ora. Con Niko esco a fare una passeggiata sperando che un pò d’ aria potesse rilassarmi e neutralizzare un po quello stordimento. Niente da fare. Allora come un uomo morto che cammina mi metto in macchina, mi avvio (inutile dire che tortura è stata guidare la macchina in quelle condizioni) e così arrivo a scuola (tra l’altro anche in ritardo :D ). Con gli occhi gonfissimi vengo scambiato per un lebroso, e in più, nonostante il mio stato fisico, son dovuto andar a capire perchè un proiettore non funzionasse bene… Pensavo di morire :D . Finally mi convincono a tornare a casa, e così il resoconto è: entro alle 9:15 – esco alle 9:45. A casa poi il letto mi ha coccolato.
Il pomeriggio l’ ho passato con fabio (aka UpperCase :D ) a vedere i video più allucinanti su youtube e poi ho sentito pixie, la mia principessa: e adesso sono felice.

E babbè, vado a mangiare
Ciauz Dir31!

Ps: il compito di letteratura poi neanche s’è fatto. xD





Ciao Kernel :D! Kernel side programming example

27 01 2009

Eccumeeee ancora io!!! :D
Questa estate girando un po per la rete per cercare una soluzione allo sviluppo di un idea, ho incominciato a studiacchiare i moduli kernel. :D
Un mondo affascinante dove con il kernel ci puoi pure prendere un caffè…(Chi l’ avrebbe mai pensato? xD)
Visto che avevo del materiale sul piccolo, ho pensato di metter qui questo banale esempio di codice kernel-side, che sfrutta l’ immensa task_struct per elencare i processi in esecuzione.

Ecco il codice e Makefile:

Source

Saluti Dir31





DirShell

27 01 2009

Ciao Ragazzi!

Vi presento la DirShell!! :D :D Niente di che xD. E’ un server scritto in c++ che apre una shell linux sulla porta 7000.

Certo è banalissima, difficilmente potrebbe compromettere la sicurezza di un sistema. Per me comunque è stato tempo fa un ottimo esercizio e uno spunto per capire qualcosa in più sulla programmazione di rete.

Codice

Saluti

Dir31!