aiuto su programmazione!

Pubblicità

giovi96

Utente Attivo
Messaggi
459
Reazioni
5
Punteggio
40
Salve a tutti .
Allora mi servirebbe una mano riguardo a una creazione di un programma (o una cosa del genere). Quello che sto cercando di creare e una sorta di calcolatore e generatore: vorrei creare una specie di passord list ma non a mano scrivendo le parole ma aiutandomi da un programma (quello che dovrò cercare di fare) che elabora le le parole con un massimo di 6 caratteri (per ora poi magari di più).
ES.
aaaaaa
aaaaab
aaaaba.....
lo so è una cosa madornale ma con Visual basic pensate ci sia un comando simile ? ( o con qualsiasi altro programma)
se non mi sono spiegato bene ditemelo=)
GRAZIE
 
24^6 risultati, essendo stringhe, circa 24^6 byte
fossi in te li creerei una tantum con 24 cicli annidati, salverei il risultato da qualche parte (parsing xml magari) e poi andrei a riprendermeli già fatti quando mi servono
 
Questo è un programma in C che genera un file con tutte le permutazioni di una password alfanumerica (non comprende gli spazi) esattamente di 6 caratteri.
Per estendere il dizionario bisogna modificare la funzione "tochar" aggiungendo if e anche il parametro n.

Codice:
#include <stdio.h>

//Funzione che definisce i caratteri utilizzabili nelle password

char tochar(int n){ 	
	char res;
	if (n<10) res = '0'+n;
	if (n>9) res = 'a'+ n - 10;
}


//Funzione che che converte un numero in una stringa secondo il dizionario definito in tochar

void tostring(long int val, char* str, int n, int l){ 
	int r=0, i=0;
	l=l-1;
	while (val != 0){
		r = val%n;
		val = val/n;
		str[l-i]=tochar(r);
		i++;
	}
	str[l+1]='\0';
}

int main () {
	FILE *out;
	char str[32];
	int n=36, l;	//n = numero di simboli, l= lunghezza password.
	int i;
	long int m=1;
	
	out=fopen("password.txt", "w");		//scrittura su file

	printf("Di quante lettere deve essere la password?\n"); 
	scanf("%d", &l);
	
	for (i=0; i<l; i++) m=m*n;
	if (m<0) printf("Troppe combinazioni!\n"); //controllo sull'overflow
	else{
		for(i=0; i<l; i++) str[i]='0';
	
		for (i=0; i<m; i++){
			tostring(i, str, n, l);
			fprintf(out, "%s \n", str);
		}
	}
	return 0;
}

Quoto The.Zeion: genera il file una volta sola e poi accedici in lettura perchè già con 6 lettere ci vuole parecchio, oltretutto è anche abbastanza inefficiente come algoritmo e sarebbe meglio scriverlo sfruttando qualche ottimizzazione hardware.
 
OK siete splendidi XD come al solito utilissimi
Alllora mi chiedevo non essendo esperto come fare circa il post di The.zeion potete spiegarmi ? Grazie infinite ( a me serve che poi le parole generate siano in .txt come un dizionario)
 
Te lo spiego in relazione al programma in C sopra:
- Crei una variabile associata al file: FILE *out;
- La apri in scrittura: out=fopen("password.txt", "w");
- Ci scrivi quello che vuoi, in questo caso ogni volta scrivo una password: fprintf(out, "%s \n", str);
- Poi chiudi il file, cosa che mi sono dimenticato di fare anche se funziona: fclose(out);

Alla fine dell'esecuzione, nella cartella dove si trova l'eseguibile, trovi un file password.txt che contiene sequenzialmente tutte le password generate.

Per fare le cose per bene dovresti mettere i vari controlli per essere sicuro che il file sia stato davvero aperto e chiuso e in caso gestire gli errori. Di solito sono situazioni che non si verificano.

Per la lettura la procedura è simile
-FILE *in;
-in=fopen("password.txt", "r"); //apre in lettura
-fscanf(in,"%s", psw); //legge una singola parola
-fclose(in);

fscanf in questo caso legge una parola alla volta fermandosi quando trova uno spazio o un a capo riga.
Ad esempio puoi fare un fscanf, prendere la parola che ha letto e svolgere le operazioni e poi fare un altro fscanf.

Da quello che ho visto in VB dovresti poterlo fare addirittura con un solo comando senza crea un putatore FILE, apri, leggi/scrivi,chiudi
 
si ma non so come fare quello che mi ha detto the.zeion!
a me servirebbe anche un generetore di wordlist ovvero che mi aiuta nella scrittura veloce delle parole come l'esempio...=)
quello che hai spiegato perfettamente tu come funziona cosa fa
 
sento puzza di brute force su qualche sistema :asd:
edit: ad ogni modo ci sono applicazioni che ti creano wordlist in base ai caratteri che scegli e anche la lunghezza.
Altrimenti mi verrebbe da suggeri 6 cicli for nidificati.
 
ho davvero scritto 24 cicli annidati? ero veramente cotto
comunque
il concetto non è difficile: con il codice gentilmente postato da Happiness ti trovi un file di testo con tutte le combinazioni che ti servono. Una volta generato, non ti serve ricrearle di nuovo, apri il file e le scorri.
Spero non si tratti di operazioni di bruteforce, ma semplicemente statistiche, tieni presente la stima che ho fato sulle dimensioni del file, e che tale dimensione tiene presente di combinazioni di 6 caratteri esatti, non meno, altrimenti diventano mooolto più numerosi i risultati, dividere il file con le liste in più file ordinati e aprirli uno per volta dovrebbe alleggerire il tuo software (almeno la richiesta di memoria)
 
sento puzza di brute force su qualche sistema :asd:
edit: ad ogni modo ci sono applicazioni che ti creano wordlist in base ai caratteri che scegli e anche la lunghezza.
Altrimenti mi verrebbe da suggeri 6 cicli for nidificati.

Che Programmi creano wordlist???
Comunque non intendo fare brute force!!

non sono pratico di programmazione ma me la cavo con VBA
ma non riesco a far funzionare il codice di Happiness, ho scaricato notepad++ ma mi da errore sulle parentesi graffe!!
 
Pubblicità
Pubblicità
Indietro
Top