Sezione hacking gestito da cyberdigita
La forza bruta dell'hacking, Una delle più " antiche " ma ancora utilizzatissime forme di hacking
Qualcuno si starà chiendendo di cosa stiamo parlando, facciamo subito chiarezza: un Brute force è un'applicazione che, basandosi sulla tecnica del brute frocing, attacca ripetutamente, ad esempio, un forum di login secondo combinazioni di lettere o parole, in base alle richieste dell'utente. quello che vi propongo in questo articolo è un brute forcer molto elementare, realizzato in C senza l'ausilio di funzioni particolari.
Questo è il nostro algoritmo, non è roba da esperti, ma è introduzione alla tecnica. come vedete si compone di 8 cicli for annidati, il primo, contollato dalla variabile " i " , è il ciclo che controlla tutti gli altri, viene interato un numero di volte pari alla lunghezza della stringa da forzare. Ogni ciclo interno, a parte il primo , esegue un controllo sulla lunghezza della stringa. Il programma non esegue nessun controllo sul numero inserito, ma potete sempre inserirlo voi, comunque è chiaro che accetta una stringa luna massimo 7 caratteri. quindi adesso diventa tutto automatico, se x = 2 prova tutte le combinazioni da " aa " a " zz " , potete sempre aggiungere lettere maiuscolo, simboli vari e numeri, basta avere una tabella ASCII daventi. Infatti nella tabella dei simboli ASCII la lettera " a " corrisponde al numero 97 e la lettera " z " corrisponde al numero 122. poi dipende dal processore a procesore. Chiudi quì la spiegazione.
...................... Codice in C .....................................
#include <stdio.h>
#include <stdlib.h>
int main ( ) {
register int i;
printf (" inserire lunghezza stringa: " );
scanf ("%d" , &x ) {
for ( i=0;<=x; i++){
for ( int a=97;a=122; a++ ) {
for ( int b=97;b<=122; b++) {
if ( i==2 ) pirntf ( "%c%cn", a,b ) ;
for ( int c=97;c<=122; c++ ){
if ( i==3 ) printf ("%c%c%cn", a,b,c );
for ( int d=97;d<=122; d++ ) {
if ( i==4 ) printf ("%c%c%c%cn", a,b,c,d );
for ( int e=97;d<122;d++ ) {
if ( i==5) printf ("%c%c%c%c%cn", a,b,c,d,e );
for ( int f=97;d<=122;d++ ) {
if ( i==6) printf ("%c%c%c%c%c%cn", a,b,c,d,e,f) ;
for ( int g=97;d<=122;d++ ) {
if (i==7) printf ("%c%c%c%c%c%c%cn", a,b,c,d,e,f,g);
}
}
}
}
}
}
}
}
system ("pause");
}
Esaminiamo il codice
Register int i;
Register è uno specificatore di classe di memoria del C, dice al compilatore che l'accesso alla variabile ( in questo caso " i " ) deve essere affettuato più velocemente possibile, quindi generalmente la variabile viene memorizzata in un registro della CPU o nella memoria cache. L'accesso ai registri della CPU o alla memoria cache è nettamente più veloce dell'accesso alla RAM, di conseguenza l'accesso alle variabili specificate come register sarà più veloce.
NB register tecinicamente è solo uan richiesta che si fa al compilatore, quest'ultimo è libero di ignorarla. Per chi ancora non l'avesse capito o per chi non ha letto il codice, ho specificato la variabile " i " come register perchè è la variabile che controlla il ciclo principale. andiamo oltre :
Questo è abbastanza elementare, dichiara la variabile interna " X " e chiede in ingresso un intero, la printf scrive la frase tra doppi apice. La variabile " x "sarà la lunghezza della stringa da forzare, come scritto nella printf
for ( i=0;i<=x; i++) {
for ( int a=97; a<=122;a++) {
for ( int b=97; b<=122;b++) {
if ( i==2) printf ( "%c%cn", a,b );
for ( int c=97; c<=122;c++) {
if ( i==3 ) printf ( "%c%c%cn", a,b,c ) {
for ( int d=97; d<=122;d++) {
if ( i==4 ) printf ( "%c%c%c%cn", a,b,c,d ) {
for ( int e=97;d<=122;d++) {
if ( i==5 ) printf ( "%c%c%c%c%cn", a,b,c,d,e ) {
for ( int f=97;d<=122;d++) {
if ( i==6 ) printf ( "%c%c%c%c%c%cn", a,b,c,d,e,f ) {
for ( int g=97;d<=122;d++) {
if ( i==7 ) printf ( "%c%c%c%c%c%c%cn", a,b,c,d,e,f,g ) {
Modificato da cyberdigita - 24/3/2010, 12:31