Blog di Exodus1984

Libri e Internet: i ricordi della rete.


Bene, terminati i corsi sulle reti anonime, ed avendo soddisfattola curiosità di molte persone interessate all'argomento, ho presoun po di tempo per risistemare la seconda parte della mia bibliotecavisto che da parecchie settimane sono stato "assediato" da diversitipi di smanettoni abbastanza strani...;-)))(non che io sia moltodiverso da loro...;-)))Dopo avere digerito una buona quantità di polvere e acari (in informatica si chiamerebbero Hacheri...), ho ritrovato alcuni manuali di programmazione su cui ci passavo intere nottate, eccoalcuni titoli in mio possesso:La programmazione dello Z80, contenenti le tabelle di equivalenzatra l'assembler dello Z80 e quello dell'8080, con le tabelle complete dei codici delle istruzioni per lo Z80, devo dire chequesto testo mi ha aperto molte strade, in quanto già all'epoca siusavano reti particolari e programmi costruiti appositamente perconnettersi attraverso onde radio e dispositivi auto costruiti performare una piccola rete locale di computer, erano i tempi delloSpectrum, e programmare gabole era il divertimento principale peri pochi fortunati che potevano spendere quei soldi per comprarselo.Il Bugbook 3, per l'interfacciamento e la programmazione deimicrocomputer 8080, che spiegava nei dettagli le istruzionimnemoniche dell'assembler usato per l'8080.La programmazione in Turbo Pascal, del 1989, che mi ha aperto leporte dei linguaggi ad alto livello, mi ricordo che spesso i mieilistati sorgenti scritti in Pascal, erano quasi sempre farcitidi istruzioni assembler, quindi il codice finito era un po cripticoper chi avesse voluto dare un'occhiata, infatti, la domanda chemi si faceva spesso era questa:"ma tu scrivi i programmi in Pascalo in assembler?", in realtà, si usava l'assembler per velocizzareun po di più l'esecuzione del codice, ma alla fine, andava benetutto, l'importante era programmare e poi mostrare il propriocodice agli amici informatici per farli schiattare d'invidia... ;-)))      Mi sono capitati in mano i manuali Olivetti per la programmazioneassembler dell' 8086, due volumi rilegati e straordinariamente completi, con esempi di codice assembler pronto solo da programmaree provare, due volumi che hanno segnato la storia dell'informaticaitaliana per il controllo dell' hardware, i computer Olivetti sonostati le mie primissime macchine dopo lo Spectrum Sinclair, seguitipoi negli anni da tutta la serie(infinita) dei processori cheuscivano, sempre più veloci e potenti... :-)Poi è stato il turno del Linguaggio assembly avanzato, per utentiTasm e Masm, adatto per imparare la creazione dei driver susistemi 8086, questo volume insegnava molti trucchi in assemblerproprio per velocizzare l'esecuzione di programmi ad alto livellocome il Pascal, e io ci sguazzavo dentro, scrivendo codice Pas/C/Asm a quattro mani...;-)))Questo volume, trattava la struttura TSR dei programmi in modo molto approfondito, dalla cattura degli interrupt di tastieraall'esecuzione specifica di una parte di codice speciale...;-))Se vi siete mai chiesti come funziona un virus informatico, suquesto volume potete trovare le vostre risposte...(ma lasciateogni speranza, voi che entrate in questo mondo....)  ;-))La programmer's guide, per utenti Masm, si rivolgeva agli utentidel sistema MS-DOS(r) e Windows(tm), la mia parte preferita:"Terminate-and-Stay-Resident", la funzione 31h del DOS era uno dei servizi invocati dall'interrupt 21h, in quanto per le futureversioni, la Microsoft non poteva garantire il supporto perl'interrupt 27h, e quindi non se ne raccomandava l'uso.Infine ho ritrovato uno splendido libro, l'ho cercato per cosìtanto tempo, che non sapevo più dove lo avevo messo, le mie ricerche su internet hanno avuto un esito positivo nella ricercainformativa che riguarda questo testo, ho così scoperto la sua vera provenienza, visto che fu un regalo di un amico, anche senon ho mai potuto avere a mia disposizione quella specificamacchina. Il volume in questione porta il titolo:"Minicomputer Systems: Organization and Programming (PDP-11)"Fanno fede poi il numero di serie del volume e la data, anche sea me fu regalato nella seconda metà degli anni 80, ormai obsoletoma comunque molto interessante, questo testo tratta la programmazionedel PDP-11 proprio con il suo assemblatore, il PAL-11(Program Assembly Language for the PDP-11's Absolute Assembly).Stampato negli Stati Uniti nel 1975, arrivato in Italia nel 1977e finito nelle mie mani nel 1989, questo testo si è conservato molto bene, anche perché cerco sempre di mantenere i miei libri in modo adeguato, ma a volte, sembra impossibile, ma i libri piùnuovi si rovinano prima di quelli antichi... :-) Usare lo stesso ambiente di programmazione su diverse architetturepuò facilitare la stesura di un programma, ogni versione ha moltoin comune con le altre presenti su elaboratori diversi, come ifile .OBJ, le direttive assembler e la sintassi, ma spesso, tantiassemblatori non parlano la stessa lingua...:-(Per esempio, sorgenti assembler che compilano bene su una determinataarchitettura, non possono essere assemblati da un programma diversopresente sulla stessa macchina...:-(Portiamo un semplice esempio, vista la mia mania di stressare lemacchine con cui vengo a contatto e per effettuare test diresistenza dei sistemi agli assalti informatici, vi propongoun banale codice assembler spippolato: .text       .global  _start_start:       movb     $0x2,%al       int      $0x80       loop      _startQuesto banale codice, sfrutta una delle operazioni fondamentalidei sistemi Unix, ovvero la Fork, quando un processo Unix fa unafork, crea una copia di se stesso, ottenendo così due copieidentiche, la seconda copia, finisce per eseguire un altro processoin loop sul sistema attaccato, creando quello che può esseredefinito un D0S(Denial of Service) in grado di paralizzare lemacchine interessate, e di conseguenza fermare di fatto illavoro degli utenti.Questo codice Assembler può essere compilato e linkato susistemi Gnu/Linux con i seguenti comandi da terminale:enrico@exodus84:~$ as fb.asm -o fbenrico@exodus84:~$ ld fb -o fbenrico@exodus84:~$ ls -la fb*-rwxr-xr-x 1 enrico enrico 4864 mag 16 09:29 fb-rw-r--r-- 1 enrico enrico   89 mag 13 19:52 fb.asm Ma andiamo per ordine, modifichiamo il seguente programma pertestare la resistenza del nostro sistema Linux, questa volta unpochino migliorato in linguaggio C : #include <unistd.h>  int main(void) {   while(300000000) {      fork();       }    return 0;  }Il programma si compila in questo modo per ottenere un binarioportatile che ci permetterà di testare la resistenza di diverseinstallazioni Linux:enrico@exodus84:~$ gcc --static fb.c -o fbcIl programma che otteniamo, cercherà di ottenere il controllodei processi sul vostro sistema Linux, che se non opportunamentepreparato, rallenterà fino a diventare inutilizzabile, rendendonecessario il reboot della macchina.Per eseguirlo e testare la resistenza del sistema bisogna far partire il programma in questo modo:enrico@exodus84:~$ ./fbc &Per terminare l'esecuzione, se siete fortunati, basta chiuderela finestra di terminale per cancellare tutte le istanze aperte.Vi consiglio di tenere aperti almeno 3 o 4 terminali, questo perimpedire che il programma prenda possesso  dei relativi processie quindi non vi permetta di eseguire piu nessuna operazione. :-)enrico@exodus84:~$ ./fbc &[1] 25412enrico@exodus84:~$ ls-bash: fork: retry: Risorsa temporaneamente non disponibile-bash: fork: retry: Risorsa temporaneamente non disponibile-bash: fork: retry: Risorsa temporaneamente non disponibilePotete notare la differenza tra sorgenti ASM e C, nonchè dei fileeseguibili creati dal linker:enrico@exodus84:~$ ls -la fb*-rwxr-xr-x 1 enrico enrico   4864 mag 16 09:29 fb-rw-r--r-- 1 enrico enrico     89 mag 13 19:52 fb.asm-rwxr-xr-x 1 enrico enrico 789208 mag 16 09:48 fbc-rw------- 1 enrico enrico    379 mag 10 14:22 fb.cCome potete vedere, il secondo programma è molto più performantedel primo, quindi se i vostri sistemi Linux riescono a sopravviverea questo, siete fortunati, ma nella mia esperienza, usando semplicitest, si capisce subito se una installazione può reggere o menoad uno stress informatico di questo tipo.Ne ho parlato in questo post, proprio perché tante persone pensanoche usare sistemi Linux sia una svolta nella sicurezza informaticama come potete vedere, non è come si crede, alcuni sistemi sipiantano in pochi secondi, altri reggono ma rallentano, bisognavalutare ogni macchina, tutte diverse le une dalle altre. :-)Riprendendo in mano i miei vecchi testi informatici, ho pensatodi riproporre anche del codice che ho preso in rete per motivi di tempo e proporvelo con semplici modifiche in ricordo dei vecchitempi. :-)Il codice usato per questo post potete trovarlo a questo indirizzo web, le modifiche sono opera mia, ma voi seguite il codice riportatosu wikipedia: http://it.wikipedia.org/wiki/Fork_bomb .Infine, potete ottenere ulteriori info usando i manuali AMD chetrovate al seguente indirizzo web:http://search.amd.com/it-it/Pages/results-support.aspx#k=assembler#s=11Per i sistemi Android, consiglio di scaricare le seguenti appdallo store: Learn Assembly e Assembly Reference & Programs . Tutti questi libri mi hanno fatto ricordare i tempi in cui sipostava sui newsgroup, tra i miei preferiti, c'erano quasi semprealt.hackers.cough.cough.cough, e alt.hackers, in cui si confrontavanoidee diverse ed innovative per l'epoca, era il tempo in cui i vari gruppi Hacker di quel periodo assaltavano sistemi, per poidescrivere le tecniche usate, ho molti ricordi di quel periodo chefu davvero unico(1997-2000), per citarne un esempio, chi non siricorda degli Spippolatori? Ci fu un periodo in cui molti ragazzi che allora postavano sualt.hackers.cough.cough.cough(ahccc) e alt.hackers erano moltointeressati a "portare" le mitiche alette degli -=[SpP]=- in giroper la rete, ma molti formarono dei propri gruppi separati, sempreispirati alla filosofia dello "Spippolamento" ;-))Nei miei post la parola "Spippolare" ricorre molto spesso, è unaeredità lasciata da quel particolare periodo storico che mi videprotagonista agli albori della rete internet in italia.Ancora oggi ripenso spesso a tutte le gabole costruite e mandatein rete per la felicità degli smanettoni italiani, ci si ripensacon un po di nostalgia, ma in fondo, chi potrebbe negare che cisiamo anche divertiti? ;-)))Ora tutto questo non esiste piu, ma ricordare questi eventi ciaiuta a vivere un futuro migliore, evitando di inciampare neglierrori commessi in un passato ormai lontano che forse pochiricordano ancora.Bene, concludendo questo post, come sempre vi auguro una buonanavigazione su internet e altrettanti buoni Spippolamentiinformatici ;-)