| |
Algoritmo Wipe-Way
(proteggiamo i nostri dati) |
|
Data |
by
"Quequero" |
|
|
UIC's Home Page |
Published by Quequero |
|
In questo tute vi insegnerò a creare un algoritmo
wipe-way, cosa? Non lo conoscete!!!! |
|
| UIC's form |
- Home page se presente: http://quequero.cjb.net
- E-mail: UIC@mail.usa.com UIC@bigfoot.com
- #uic #crack-it
|
UIC's form |
Difficoltà
|
(X)NewBies ( )Intermedio ( )Avanzato ( )Master |
|
Abbiamo tutti la necessità di dover proteggere i nostri dati ed in particolar modo i
gestori di sistemi informatici, bene adesso imparerete come proteggere i vostri
dati....cancellati.
- Algoritmo Wipe-Way
(proteggiamo i nostri dati)
- Written by Quequero
Lo so che non conoscete gli algoritmi wipe-way ma è ora di presentarli :)
- TASM 5.0
- Salve a tutti, quest'oggi impareremo a creare un algoritmo di crittazione wipe-way, in
realtà il termine mi è venuto in mente stanotte ma facciamo un brevissima digressione e
vediamo che tipi di algoritmi esistono.
- Il primo e più usato tipo di algoritmo è il Two-way cioè prendo un documento A, lo
critto ed ottengo B se poi passo B sotto un filtro riottengo A e questo mi sembra
abbastanza banale, critazione-decrittazione, poi c'è un altro tipo di algoritmo il
One-way cioè, prendo A, lo critto ottenendo B e poi ci serve dio per riottenere A...In
sostanza una volta crittato A non riotterrete mai l'originile, a cosa serve quest'ultimo?
Semplice in genere viene usato per tenere le password, in un sistema durante il login
l'utente inserisce una password, questa viene crittata con l'algo One-way e confrontata
con quella (lo stesso crittata) contenuta nel file /etc/passwd, ma questi algoritmi
vengono usati anche in altri modi, si adottano per cancellare i file, il perchè è presto
detto, come sapete quando gettate un file nel cestino e poi lo eliminate bastano le norton
utilities per recuperarlo, per questo prima di gettare un file lo si può crittare con un
algo One-way in modo da renderlo indecifrabile anche una volta recuperato. In realtà non
è tutto rosa e fiori perchè si può risalire, anche se con uno sforzo immane in tempi di
calcolo e tempo, al file originale, semplicemente prendendo una massa enorme di dati,
crittandola con quell'algo e poi confrontandola con il file recuperato, prima o poi
otterrete qualcosa di uguale ed avrete il file in perfette condizioni. Ed è qui che
Queuqero vi viene in aiuto, perchè con centomila semplici mosse :)))) creeremo un algo
che critta i file in modo abbastanza casuale e poi cercheremo di capirne l'efficacia,
seguitemi.
- Io vi presento qui sotto l'algoritmo e non tutto un intero programma, il resto lo potete
adattare voi secondo le vostre esigenze, io suppongo solo che nel
buffer....."buffer" siano contenuti i byte di una eventuale password o di un
eventuale file, vi spiegherò approfonditamente il funzionamento dell'algoritmo alla fine:
-
- Random1 dd 5809172h
- Random2 dd 5371h
-
- .code
- START:
- xor ecx, ecx
-
- algo:
- mov eax, Random1
mul Random2
- inc eax
mov ebx, dword ptr[buffer+ecx]
- ror ebx, 4
- shl ebx, 2
- xor ebx, eax
- ror ebx, 4
- shr ebx, 8
- xor ebx, eax
- call
GetTickCount
- xor ebx, eax
- mov eax, ebx
- mul Random1
- xor ebx, eax
- call GetTickCount
- xor ebx, eax
- mul Random2
- xor ebx, eax
- call GetTickCount
- ror eax, 3
- shr eax, 4
- mov edx, eax
- push edx
- call
GetTickCount
- pop edx
- add eax, edx
- xor eax, edx
- xor ebx, eax
- mov dword
ptr[buffer+ecx], ebx
- add ecx, 4
- ;Qua ci dovete aggiungere un check per vedere le la pass
o i byte nel buffer sono finiti
- jmp algo
-
- Eccomi, non vi preoccupate, vi commento tutto adess:
all'inizio del codice ECX viene azzerato perchè usato come contatore, poi ci sono queste
istruzioni:
-
- mov eax, Random1
mul Random2
- inc eax
- che servono a piazzare un numero casuale in EAX, poi:
-
- mov ebx, dword ptr[buffer+ecx]
- ror ebx, 4
- shl ebx, 2
- xor ebx, eax
- ror ebx, 4
- shr ebx, 8
- xor ebx, eax
-
- vengono mossi in ebx i primi 4 byte della password o del
file, vengono rotati a destra di 4, shiftati a sinistra di 2 e poi vengono xorati con il
valore casuale che si trovava in EAX, il risultato viene di nuovo rotato a destra di 4
shiftato a sinistra di 8 e poi di nuovo xorato con EAX:
-
-
- call
GetTickCount
- xor ebx, eax
- mov eax, ebx
- mul Random1
- xor ebx, eax
- call GetTickCount
- xor ebx, eax
- mul Random2
- xor ebx, eax
- call GetTickCount
- ror eax, 3
- shr eax, 4
- mov edx, eax
- push edx
-
- ed adesso viene chiamata l'API GetTickCount che riporta
in EAX i millisecondi da quando WinPorco è stato avviato (ed anche questa routine
conferisce una casualità notevole), i byte vengono quindi xorati con questo valore, EAX
viene poi ancora randomizzata con il primo algoritmo ed i byte vengono ancora xorati con
questo valore random, viene chiamata di nuovo GetTickCount e quindi i byte vengono ancora
xorati con EAX che viene di nuovo randomizzata e usata per xorare ancora i byte, poi si
GetTickCount viene ancora chiamato ma il risultato stavolta viene randomizzato tramite dei
ror e degli shift, quello che ne esce fuori viene messo in EDX che viene poi salvato:
-
-
- call
GetTickCount
- pop edx
- add eax, edx
- xor eax, edx
- xor ebx, eax
- mov dword
ptr[buffer+ecx], ebx
- add ecx, 4
- ;Qui va il
test
- jmp algo
-
- viene chiamata per l'ultima volta GetTickCount, viene
ripreso il valore che stava in EDX e viene sommato a quello riportato da GetTickCount, la
somma di questi valori viene quindi xorata con EDX ed il risultato xora poi i nostri cari
byte che vengono rimessi a posto, il contatore viene incrisato di una DWORD e si
ricomincia il loop finchè il file non è finito.
- Hehe che bello, ho appena testato questo algo ed è
davvero una meraviglia, dunque come facciamo a sapere se questo algoritmo è sicuro?
Semplicissimo, bastano due calcoli, dunque.....ci sono in gioco ben sette numeri molto
casuali, dunque, considerando che possono assumere valori da 00000000 a FFFFFFFF significa
che bisognerebbe indovinare un numero che varia da 0 a 4.294.967.295, ottimo ci sono circa
4 miliardi di combinazioni possibili, tenendo conto del fatto che i numeri devono essere
azzeccati tutti e sette perchè l'errore anche di un solo byte avrebbe risultati
disastrosi sulla decrittazione, possiamo dire che è molto difficile indovinarli,
considerando anche che ogni byte viene crittato con sette valori casuali diversi, heheheh,
insomma, fatevi due calcoli e vedrete che anche crittando un file con solo tre lettere, i
risultati di decrittazione sono davvero ma davvero lunghissimi, pensate solo per
tranquillizzarvi che per ogni byte sono possibili 4.294.967.295 di combinazioni per sette
volte, quindi elevate quel valore alla settima e vi renderete conto della sicurezza di
quest'algo :)))
-
- Ciauz e buona crittazione da Quequero
-
- Mi raccomando non vi crittate l'hard disk :)
Saluto tutti i miei amici di #UIC e #crack-it ciauzzzzzzzzzzzz :)))))
- Qui inserirete con questo carattere il vostro piccolo disclaimer, non è obbligatorio
però è meglio per voi se c'è. Dovete scrivere qualcosa di simile a: vorrei ricordare
che il software va comprato e non rubato, dovete registrare il vostro prodotto dopo
il periodo di valutazione. Non mi ritengo responsabile per eventuali danni causati al
vostro computer determinati dall'uso improprio di questo tutorial. Questo documento è
stato scritto per invogliare il consumatore a registrare legalmente i propri programmi, e
non a fargli fare uso dei tantissimi file crack presenti in rete, infatti tale documento
aiuta a comprendere lo sforzo immane che ogni singolo programmatore ha dovuto portare
avanti per fornire ai rispettivi consumatori i migliori prodotti possibili.
- Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly.
- Capitoooooooo????? Bhè credo di si ;))))
-
- UIC's page of reverse engineering, scegli dove andare:
Home Anonimato Assembly ContactMe CrackMe Links
NewBies News Forum Lezioni
Tools Tutorial