giovedì 21 settembre - 03:23
Google
 
Menù
  Home
  Come nasce IRC-Zone
  Glossario Informatico
  News
  I nostri progetti
  I nostri servizi
  Partners
  Diventa un Partner

IRC
  Cos'è IRC
  Storia di IRC
  Netiquette su IRC
  Emoticons
  Gergo della chat
  Lista Servers
  RFC 1459
  Shell Hosting

mIRC
  Cos'è il mIRC
  FAQ mIRC
  Configurazione mIRC
  Download mIRC
  Novità
  Script Stranieri
  Script Italiani
  MTS
  MTS Engine

mIRC Addon
  mIRC addon Audio
  mIRC addon SMS
  mIRC addon Grafica
  mIRC addon Utility
  mIRC addon Uso Bot

Client IRC
  Client IRC Linux
  Client IRC Mac
  Client IRC Win

XChat
  Cos'è XChat
  XChat per Win
  XChat per Unix

KVirc
  Cos'è KVirc
  FAQ KVirc
  Installazione su Linux
  KVirc Scripting
  KVirc per Mac
  KVirc per Win
  KVirc per Unix
  KVirc addon

Irssi
  Cos'è Irssi
  Download Irssi
  Download Moduli

Eggdrop/Windrop
  Cos'è un Eggdrop
  Download Eggdrop
  Configurazione Eggdrop
  Download Windrop
  Installazione Windrop

Tcl
  Download TCL
  Tutorial TCL scripting
  Documenti/Guide

BNC
  Cos'è un psyBNC
  Download psyBNC
  Configurazione psyBNC
  Download sBNC
  Configurazione sBNC

Linkaci!
footer

Credits
Somerights

footer

Statistiche
Ip: 54.156.58.187
Download: 995306 file
Totale: 1513051 MB

footer

Links amici



Algoritmo Keygen mIRC 6.x

Autore: SpData: 2005-05-03
Modificato: 2005-05-04 Letture: 23325
Torna indietroStampa articoloInvia ad un amico

Eccovi un tutorial riguardo la spiegazione dell'algoritmo utilizzato dal famoso client mIRC 6.x

Lo scopo di questa guida non è quello di utilizzare il metodo per usi illegali bensì capire passo passo la tecnica e la logica attuata dal programmatore (Khaled Mardam-Bey) ed in contemporanea capire l'utilizzo di alcuni elementi del mirc-scripting.

Per l'occasione infatti, sono state "tirate giù" alcune righe di codice con il solo scopo didattico e divulgativo, sottolineato anche dalla voluta omissione di grosse parti di codice proprio perchè lo scopo non è la frode, bensì la conoscenza.

Dopo questa indispensabile quanto opportuna premessa inizio col dire che diversi sono i metodi utilizzati dai programmatori per "proteggere" i propri software; uno di questi è il classico keygen user\passwd che consiste nel calcolare,dietro preciso algoritmo,il seriale (password) in base all'username immesso dall'utente.
La tecnica si basa sull'utilizzo di una "matrice" ovvero una serie di valori,nella stragrande maggioranza dei casi alfanumerici,settati dal programmatore stesso che andranno ad agire col valore specificato dall'utente (username).
Nel nostro caso la matrice è composta da 40 elementi (valori) alfanumerici che ovviamente non andrò a specificare visto che il nostro obbiettivo non è quello di andare a crackare il programma.

Esempio di settaggio matrice:
set %val.matrice1 0
set %val.matrice2 23
set %val.matrice3 39
set %val.matricen N

..
Bene, direi dopo questa piccola introduzione, di andar in fondo sull'algoritmo vero e proprio:

La nostra password è composta da due elementi separati che utilizzano metodi di calcolo differenti (anche se le differenze alla fine son quasi irrisorie):

Password -> parte1-parte2

Calcolo [prima parte] della passwd:

Come già detto l'algoritmo si avvia fornendogli un input (username) di dimensioni maggiori\uguali a 5 caratteri.

.1 alias keygen.6 {
.2 if ($len($1) >= 5) {
.3    set %mircData1 11
.4    set %mircData2 6
.5    set %mircData3 17
.6    set %mircData4 12
.7    set %mircDataN N
..
.8 set %key.user $1
.9 set %primaparte 0
.10 set %secondaparte 0
.11 set %key.user.len $len($1)
.12 set %key.cicle 1
.13 while (%key.cicle <= %key.user.len) {
.14 set %key.ascii $instok(%key.ascii,$asc($mid(%key.user,%key.cicle,1)),%key.cicle,32)
.15 inc %key.cicle }
.16    primaparte
.17    secondaparte
.18 echo -a [Keygen 6.x] Fullname: $+ %key.user $+ S\N: $+ %primaparte $+ - $+ %secondaparte $+ } }

Spiegazione:

.1 Imposto il comando dell'alias che dovrà essere seguito dall'username scelto (Es. /keygen full)
.2 Controllo che la lunghezza dell'username inserito sia maggiore o uguale a 5 caratteri
.3\4\5\6\7 Setto i valori della matrice
.8 Salvo l'username specificato sulla variabile %key.user
.9 Inizializzo la prima parte che comporrà il seriale
.10 Stesso discorso per la seconda
.11 Calcolo la lunghezza della stringa inserita (username) e la salvo sulla variabile %key.user.len
.12 Setto la variabile %key.cicle per il ciclo iterativo che andremo a fare
.13 Creo un while loop utilizzando la variabile sopra settata che durerà in base alla lunghezza dell'username
.14 Calcolo di ciascun carattere il rispettivo valore in ascii e memorizzo sulla variabile %key.ascii
.15 Incremento la variabile %key.cicle per permettere la continuazione del ciclo
.16 Richiamo lo script a calcolare la prima parte del codice seriale
.17 idem per la secondo parte
.18 Stampo l'username ed il seriale calcolato (ovviamente prima eseguirà i due calcoli che andrò a spiegare adesso)

.19 alias primaparte {
.20  set %cnt 3
.21  set %key.array 0
.22  while (%cnt <= %key.user.len) {
.23    set %tmp $calc($gettok(%key.ascii,%cnt,32) * %mircData [ $+ [ %key.array ] ] )
.24    set %primaparte $calc(%primaparte + %tmp)
.25    inc %cnt
.26    inc %key.array
.27  } 
.28 }

Spiegazione alias "primaparte":

.20 Setto la variabile %cnt per il ciclo iterativo che andremo a fare (Viene settata a 3 perchè l'algoritmo prevede il calcolo del seriale partendo dal TERZO carattere della stringa inserita dall'utente,ignorando quindi le prime tre cifre)
.21 Inizializzo la variabile %key.array che utilizzerò per andare a leggere ciascun valore della matrice
.22 Imposto il ciclo iterativo sempre in base alla lunghezza dell'username dato
.23 Moltiplico ciascun valore numerico ascii dell'username precedentemente settato nella variabile %key.ascii per il primo valore di matrice
.24 Calcolo la primaparte del seriale sommando il suo valore corrente col rispettivo calcolo fatto nella riga precedente
.25 Incremento la variabile %cnt per permettere la continuazione del ciclo iterativo
.26 Incremento la variabile %key.array per permettergli di leggere il valore successivo della matrice

.29 alias secondaparte {
.30  set %cnt.two 3
.31  set %key.array 0
.32  while (%cnt.two <= %key.user.len) {
.33    set %tmp.two $gettok(%key.ascii,%cnt.two,32)
.34   set %tmp.two.second $gettok(%key.ascii,$calc(%cnt.two - 1),32)
.35    set %tmp.two $calc($calc(%tmp.two * %tmp.two.second) * %mircData [ $+ [ %key.array ] ] )
.36    set %secondaparte $calc(%secondaparte + %tmp.two)
.37    inc %cnt.two
.38    inc %key.array
.39  }
.40 }

Spiegazione alias "secondaparte":

.30\31\32\ Stessa motivazione anche per la seconda parte
.33 Prelevo il valore ascii dell'username sempre partendo dal terzo carattere
.34 Prelevo il valore ascii dell'username partendo dal SECONDO carattere
.35 Ricalcolo il valore %tmp.two moltiplicando il suo valore corrente per %tmp.two.second (Valore numerico in ascii calcolato partendo dal secondo carattere) tra di loro e successivamente per il primo valore di matrice
.36 Calcolo la seconda parte del seriale sommando il suo valore corrente per quello della variabile %tmp.two
.37 Permetto la continuazione del ciclo iterativo
.38 Permetto di leggere il valore successivo della matrice


Spero vivamente di essere stato il più chiaro possibile, alla prossima :)



 

Branzilla Contest Redeem

Links utili

Newsletter
Iscriviti
Cancellati

Ci sono 41 iscritti

In rilievo..
  JackSMS v3
  Venom Script Lite

Documenti/Guide
  I Social Network
  Sicurezza in rete
  Cos'è SSL
  FAQ Bot
  Documenti su IRC
  FAQ Ident
  RFC 2810
  RFC 2811
  IRCx RFC

Informatica libera
  Gli Hoaxes
  Hoaxes report
  Documenti vari
  CensorWare
  Windows
  Linux

mIRC Scripting
  Codice ASCII
  Snippet mIRC scripting
  Tutorial mIRC scripting
  Dll per mIRC
  Utilities

IRCd
  Cos'è un IRCd
  Download Unreal
  Download Hybrid 6
  Download Hybrid 7
  Download Ultimate
  Download Bahamut
  Configurazione IRCd

IRC Services
  Cosa sono i Services
  Download Anope
  Download Epona
  Ircservices 5.0
  Ircservices 5.1
  Configurazione Epona
  Configurazione Anope
  Comandi ChanServ
  Comandi NickServ
  Comandi MemoServ

NeoStats
  Cosa sono i NeoStats
  Download NeoStats
  Configurazione NeoStats
  Download Moduli

IPv6
  Cos'è IPv6
  IPv6 su Win2000
  IPv6 su WinXP
  IPv6 su Linux
  IPv6 su mIRC e Xchat

Programmazione
  Tutorial C++
  Tutorial C
  Compilatori C/C++

Altro
  Contatti
  Banners Gallery

RSS Feed




Progetti
Starlight
IRCHippo

Validato CSS
Sito interamente sviluppato in PHP
MySQL
©2004+ IRC-Zone | Webmaster | Sitemap
Created by Cesare 'Kaesar83' Lasorella
Designed by Manuel 'erkokki' Cabras
IRC-Zone non è responsabile del contenuto dei siti linkati
Pagina creata in: 0.030 sec con 27 queries
Spampoison
Sviluppato con Notepad++
website monitoring service